Re: [PATCH] fix cpu hotplug

From: Andrew Morton
Date: Wed Feb 01 2006 - 21:46:02 EST


Anton Blanchard <anton@xxxxxxxxx> wrote:
>
>
> Hi,
>
> CPU hotplug was broken by the __meminit changes. Avoid the madness of
> creating a mem+cpu hotplug init attribute and just make them __devinit.
>
> Anton
>
> Signed-off-by: Anton Blanchard <anton@xxxxxxxxx>
> ---
>
> Index: build/mm/page_alloc.c
> ===================================================================
> --- build.orig/mm/page_alloc.c 2006-02-02 12:20:50.000000000 +1100
> +++ build/mm/page_alloc.c 2006-02-02 13:14:56.000000000 +1100
> @@ -1799,7 +1799,7 @@ void zonetable_add(struct zone *zone, in
> memmap_init_zone((size), (nid), (zone), (start_pfn))
> #endif
>
> -static int __meminit zone_batchsize(struct zone *zone)
> +static int __devinit zone_batchsize(struct zone *zone)
> {
> int batch;
>
> @@ -1893,7 +1893,7 @@ static struct per_cpu_pageset
> * Dynamically allocate memory for the
> * per cpu pageset array in struct zone.
> */
> -static int __meminit process_zones(int cpu)
> +static int __devinit process_zones(int cpu)
> {
> struct zone *zone, *dzone;
>
> @@ -1934,7 +1934,7 @@ static inline void free_zone_pagesets(in
> }
> }
>
> -static int __meminit pageset_cpuup_callback(struct notifier_block *nfb,
> +static int __devinit pageset_cpuup_callback(struct notifier_block *nfb,
> unsigned long action,
> void *hcpu)
> {

These are __cpuinit in Linus's current tree. Which probably means that
we're busted with hotplug-memory && !hotplug-cpu.

I don't think we want to make these __devinit, because that would penalise
systems which are hotplug && !hotplug-memory && !hotplug-cpu, which are the
systems which can least afford the memory waste.

So really, yes, we need the madness of mem+cpu.

Or we can do

static int __cpuinit __meminit foo(void)
{
}

Which actually seems to work.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/