Messages in this thread | | | Date | Thu, 29 Oct 2009 16:11:12 +0100 | From | Tejun Heo <> | Subject | Re: [Bug #14467] Linker errors on ia64 with NR_CPUS=4096 |
| |
Christoph Lameter wrote: > On Thu, 29 Oct 2009, Tejun Heo wrote: > >> It's just for sched_init() which has irq off but is not really in >> atomic context and does GFP_KERNEL allocations. The following comment >> has been added to the first patch to explain it. > > Uhmm.. Is the page allocator available at that point? If you are > constricted to the reserved per cpu area then IA64 can still run out of > space if its booted with 4096 actual cpus.
sched_init() is after mm_init() so it should work.
>> + * allocations are done using GFP_KERNEL with pcpu_lock released. In >> + * general, percpu memory can't be allocated with irq off but >> + * irqsave/restore are still used in alloc path so that it can be used >> + * from early init path - sched_init() specifically. > > Maybe make the patch a bit more general so that it can operate in an > atomic context and handles gfp flags nicely?
That would be nice but currently, we have no user which needs anything other than GFP_KERNEL although lack of users could have been caused by the lack of the functionality and the non-atomic irq disabled state is an exception case which is handled differently by might_sleep() too. So, I'm not sure whether adding GFP_* parameter would worth the effort. Also, adding that is a bit too late for 2.6.32 at this point.
Thanks.
-- tejun
| |