[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4B282F9E.7070902@kernel.org>
Date: Wed, 16 Dec 2009 09:53:50 +0900
From: Tejun Heo <tj@...nel.org>
To: Christoph Lameter <cl@...ux-foundation.org>
CC: linux-kernel@...r.kernel.org, Mel Gorman <mel@....ul.ie>,
Pekka Enberg <penberg@...helsinki.fi>,
Mathieu Desnoyers <mathieu.desnoyers@...ymtl.ca>
Subject: Re: [this_cpu_xx V7 1/8] this_cpu_ops: page allocator conversion
Hello, Christoph.
On 12/16/2009 12:04 AM, Christoph Lameter wrote:
> A static array would have to be dimensioned to NR_CPUS. That is one thing
> we are trying to avoid.
>
> The assignment of the pageset "percpu" pointer does not mean that the pcp
> is usable. It must first be properly initialized through setup_pageset().
>
> setup_pageset() is run for each cpu. zone->pageset is the same for all
> cpus that is why it is in zone_pcp_init() and not in setup_pageset().
>
> The boot pageset initialization was moved into __build_all_zonelists(). We
> could move the zone->pageset initialization there too?
Maybe that is a bit less scary. (at least for me :-) The reason why
I'm a bit worried is that different architectures handle percpu
pointers differently before setup_per_cpu_areas(). x86 sets up the
offsets and stuff such that cpu0 can access the original percpu
section in the kernel image. ia64 sets up everything properly way
before setup_per_cpu_areas() and in some archs percpu pointers are
completely invalid before setup_per_cpu_areas(). So, percpu pointer
being handled in generic code which is being called before percpu
setup is a bit worrying.
Another thing is that there were attempts to simplify memory
initialization stages such that bootmem is removed and page / k*
allocators can be used earlier which kind of puts percpu allocator in
the dependency loop but I don't think it's something we need to worry
about at this point.
Thanks.
--
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists