Messages in this thread | | | Date | Thu, 8 Oct 2009 12:15:18 -0400 (EDT) | From | Christoph Lameter <> | Subject | Re: [this_cpu_xx V6 1/7] this_cpu_ops: page allocator conversion |
| |
On Thu, 8 Oct 2009, Tejun Heo wrote:
> > +static void setup_pageset(struct per_cpu_pageset *p, unsigned long batch); > > +static DEFINE_PER_CPU(struct per_cpu_pageset, boot_pageset); > > This looks much better but I'm not sure whether it's safe. percpu > offsets have not been set up before setup_per_cpu_areas() is complete > on most archs but if all that's necessary is getting the page > allocator up and running as soon as static per cpu areas and offsets > are set up (which basically means as soon as cpu init is complete on > ia64 and setup_per_cpu_areas() is complete on all other archs). This > should be correct. Is this what you're expecting?
paging_init() is called after the per cpu areas have been initialized. So I thought this would be safe. Tested it on x86.
zone_pcp_init() only sets up the per cpu pointers to the pagesets. That works regardless of the boot stage. Then then build_all_zonelists() initializes the actual contents of the per cpu variables.
Finally the per cpu pagesets are allocated from the percpu allocator when all allocators are up and the pagesets are sized.
| |