Subject: Re: [PATCH 3/3] ppc64-specific memory notifier support

From: Nathan Lynch <[email-masked]>
Date: Thu, 28 Feb 2008 18:39:06 -0600

Michael Ellerman wrote:
> On Thu, 2008-02-28 at 08:46 -0800, Badari Pulavarty wrote:
> > Hotplug memory notifier for ppc64. This gets invoked by writing
> > the device-node that needs to be removed to /proc/ppc64/ofdt.
> > We need to adjust the sections and remove sysfs entries by
> > calling __remove_pages(). Then call arch specific code to
> > get rid of htab mappings for the section of memory.
> > 
> > Signed-off-by: Badari Pulavarty <[email-masked]>
> > ---
> >  arch/powerpc/platforms/pseries/Makefile         |    1 
> >  arch/powerpc/platforms/pseries/hotplug-memory.c |   98 ++++++++++++++++++++++++
> >  2 files changed, 99 insertions(+)
> > 
> > Index: linux-2.6.25-rc2/arch/powerpc/platforms/pseries/hotplug-memory.c
> > ===================================================================
> > --- /dev/null	1970-01-01 00:00:00.000000000 +0000
> > +++ linux-2.6.25-rc2/arch/powerpc/platforms/pseries/hotplug-memory.c	2008-02-28 08:20:14.000000000 -0800
> 
> > +
> > +static struct notifier_block pseries_smp_nb = {
> > +	.notifier_call = pseries_memory_notifier,
> > +};
> > +
> > +static int __init pseries_memory_hotplug_init(void)
> > +{
> > +	if (firmware_has_feature(FW_FEATURE_LPAR))
> > +		pSeries_reconfig_notifier_register(&pseries_smp_nb);
> > +
> > +	return 0;
> > +}
> > +arch_initcall(pseries_memory_hotplug_init);
> 
> This is going to fire on non-pseries LPAR platforms, like iSeries and
> PS3. Which is not what you want I think.

Well, the notifier will be registered, yes, but it will never be
called because that path is reachable only from a write to
/proc/ppc64/ofdt, which is not created on non-pseries.

Maybe it should be

machine_device_initcall(pseries, pseries_memory_hotplug_init);

(and pseries_cpu_hotplug_init in hotplug-cpu.c should be changed to
machine_arch_initcall)