Re: mm: memory/cpu hotplug section mismatch.

Paul Mundt
2007-06-12T03:19:12Z

On Tue, Jun 12, 2007 at 10:50:33AM +0900, Yasunori Goto wrote:
> > >
> > > If CONFIG_MEMORY_HOTPLUG=n __meminit == __init, and if
> > > CONFIG_HOTPLUG_CPU=n __cpuinit == __init. However, with one set and the
> > > other disabled, you end up with a reference between __init and a regular
> > > non-init function.
> >
> > My plan is to define dedicated sections for both __devinit and __meminit.
> > Then we can apply the checks no matter the definition of CONFIG_HOTPLUG*
>
> I prefer defining "__nodeinit" for __cpuinit and __meminit case to
> __devinit. __devinit is used many devices like I/O, and it is
> useful for many desktop users. But, cpu/memory hotpluggable box
> is very rare. And it should be in init section for many people.
>
> This kind of issue is caused by initialization of pgdat/zone.
> I think __nodeinit is enough and desirable.
>
A #define __nodeinit __devinit is probably reasonable for clarity
purposes. But whatever we want to call it, the current __cpuinit for
zone_batchsize() has to be changed, as it will be freed with the rest of
the init code if CPU hotplug is disabled. If we want to do something
cleaner in the long run, that's fine, but changing to __devinit now at
least gets the semantics right for both the memory and cpu hotplug cases.