Re: [bug] __meminit breaks cpu hotplug

From: Andrew Morton
Date: Fri Jan 20 2006 - 19:53:02 EST


Ravikiran G Thirumalai <kiran@xxxxxxxxxxxx> wrote:
>
> Recent __meminit additions broke cpu hotplug when the kernel is configured
> with HOTPLUG_CPU but not HOTPLUG_MEMORY.
> Although __meminit replaced __devinit functions many places, all those functions
> looked like they should have been marked with __cpuinit to begin with. That
> is the reason I have changed the below to __cpuinit. I leave it to Matt if he
> wants to use __devinit here instead. (Depending on where he sees __meminit
> would be used.)
>
> Signed-off-by: Ravikiran Thirumalai <kiran@xxxxxxxxxxxx>
> Signed-off-by: Shai Fultheim <shai@xxxxxxxxxxxx>
>
> Index: linux-2.6.16-rc1/include/linux/init.h
> ===================================================================
> --- linux-2.6.16-rc1.orig/include/linux/init.h 2006-01-17 14:12:16.000000000 -0800
> +++ linux-2.6.16-rc1/include/linux/init.h 2006-01-20 12:24:44.000000000 -0800
> @@ -247,10 +247,10 @@ void __init parse_early_param(void);
> #define __memexit
> #define __memexitdata
> #else
> -#define __meminit __init
> -#define __meminitdata __initdata
> -#define __memexit __exit
> -#define __memexitdata __exitdata
> +#define __meminit __cpuinit
> +#define __meminitdata __cpuinitdata
> +#define __memexit __cpuexit
> +#define __memexitdata __cpuexitdata

This looks wrong. The __meminit and __cpuinit definitions we have now are
OK, aren't they? Surely the problem is that some functions/variables are
incorrectly tagged?

If some function is needed by both HOTPLUG_CPU and HOTPLUG_MEMORY then
we're rather messed up - I guess it'll need to be put inside #if
defined(..) || defined(..) and put into plain old .text.

-
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/