Re: __virt_addr_valid vs virtual percpu areas

From: Jeremy Fitzhardinge
Date: Wed Mar 04 2009 - 18:48:53 EST


Jiri Slaby wrote:
It's not (in the meaning of virt_* functions), but while booting we don't have variables used in VMALLOC_START and VMALLOC_END ready for use on i386.

Maybe we can introduce more clever method/state which would say: hey, vmalloc framework is up and running. And use instead (system_state != SYSTEM_BOOTING) hack.

Yeah, I pieced that together. I'm just testing a patch with a specific __vmalloc_start_set flag to test.

This is biting me because I need to translate percpu addresses
to pfns, but I only bother doing the full pagetable walk if
virt_addr_valid() is false (otherwise I just use __pa()).

Do you need to bother also with vmalloc space?

percpu data gets mapped into the vmalloc region now (when using 4k page mappings, at least).

Removing this test doesn't seem to harm anything at first glance. Is
this OK to do in general (and can we quietly set fire to system_state
while we're about it)?

I wouldn't do that, since vmalloc addr is not virt addr, again in the meaning of virt_* functions. And the function wouldn't do the right thing, at least in the RUNNING state anymore.

OK.

J
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/