Re: [PATCH 1/1] cpumask: Change cpumask_of_cpu to use cpumask_of_cpu_map- build breakage

From: Mike Travis
Date: Wed Jul 30 2008 - 17:24:45 EST


Tim Bird wrote:
> Mike Travis wrote:
>> * The previous "lvalue replacement for cpumask_of_cpu()" was not usable
>> in certain situations and generally added unneeded complexity. So
>> this patch replaces the cpumask_of_cpu_ptr* macros with a generic
>> cpumask_of_cpu_map[]. The only config option is whether this is a
>> static map, or allocated at boot up time:
> I'm having trouble compiling 2.6.27-rc1 for ARM OMAP.
>
> I'm using gcc 3.4.4 (specifically, one used for
> cross-compiling for ARM)
>
> The file that fails to compile is kernel/time/tick-common.c
>
> Here is the compiler message:
> arm-sony-linux-gcc -Wp,-MD,kernel/time/.tick-common.o.d -nostdinc -isystem /a/home/usr/local/arm-sony-linux/devel/bin/../lib/gcc/arm-sony-linux/3.4.4/include -D__KERNEL__ -Iinclude -Iinclude2
> -I/a/home/tbird/work/console-translations/linux/include -I/a/home/tbird/work/console-translations/linux/arch/arm/include -include include/linux/autoconf.h -mlittle-endian
> -I/a/home/tbird/work/console-translations/linux/kernel/time -Ikernel/time -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Os
> -marm -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mapcs-32 -mno-thumb-interwork -D__LINUX_ARM_ARCH__=5 -march=armv5te -mtune=arm9tdmi -malignment-traps -msoft-float -Uarm -fno-omit-frame-pointer
> -fno-optimize-sibling-calls -Wdeclaration-after-statement -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(tick_common)" -D"KBUILD_MODNAME=KBUILD_STR(tick_common)" -c -o kernel/time/tick-common.o
> /a/home/tbird/work/console-translations/linux/kernel/time/tick-common.c
> /a/home/tbird/work/console-translations/linux/kernel/time/tick-common.c: In function `tick_check_new_device':
> /a/home/tbird/work/console-translations/linux/kernel/time/tick-common.c:210: error: invalid lvalue in unary `&'
> /a/home/tbird/work/console-translations/linux/kernel/time/tick-common.c:223: error: invalid lvalue in unary `&'
> /a/home/tbird/work/console-translations/linux/kernel/time/tick-common.c:255: error: invalid lvalue in unary `&'
> make[3]: *** [kernel/time/tick-common.o] Error 1
> make[2]: *** [kernel/time] Error 2
> make[1]: *** [kernel] Error 2
> make: *** [sub-make] Error 2
>
> This seems to be related to commit 0bc3cc03fa6e in Linus' 2.6 tree.
>
> Any assistance you can provide would be appreciated.
>
> Thanks,
> -- Tim
>
> =============================
> Tim Bird
> Architecture Group Chair, CE Linux Forum
> Senior Staff Engineer, Sony Corporation of America
> =============================

There was a later update that fixed this. You should have the following
in include/linux/cpumask.h particularly line 291.


e56b3bc7 (Linus Torvalds 2008-07-28 11:32:33 -0700 285) /*
e56b3bc7 (Linus Torvalds 2008-07-28 11:32:33 -0700 286) * In cases where we take the address of the cpumask immediately,
e56b3bc7 (Linus Torvalds 2008-07-28 11:32:33 -0700 287) * gcc optimizes it out (it's a constant) and there's no huge stack
e56b3bc7 (Linus Torvalds 2008-07-28 11:32:33 -0700 288) * variable created:
e56b3bc7 (Linus Torvalds 2008-07-28 11:32:33 -0700 289) */
1eddd657 (Stephen Rothwell 2008-07-29 16:07:37 +1000 290) #define cpumask_of_cpu(cpu) (*get_cpu_mask(cpu))
^1da177e (Linus Torvalds 2005-04-16 15:20:36 -0700 291)

If 1eddd657 is there, would you send the config?

Dave - I just re-verified that allyesconfig builds with lot's of warnings but no errors.

Thanks,
Mike
--
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/