Re: [PATCH v5 0/5] x86: Cleanup and simplify cpu-specific data

From: H. Peter Anvin
Date: Thu Apr 26 2012 - 15:49:17 EST


On 03/28/2012 03:43 PM, Kevin Winchester wrote:
> Various per-cpu fields are define in arch/x86/kernel/smpboot.c that are
> basically equivalent to the cpu-specific data in struct cpuinfo_x86.
> By moving these fields into the structure, a number of codepaths can be
> simplified since they no longer need to care about those fields not
> existing on !SMP builds.
>
> The size effects on allno (UP) and allyes (MAX_SMP) kernels are as
> follows:
>
> text data bss dec hex filename
> 1369227 181536 1399180 2949943 2d0337 vmlinux.i386.allno
> 1370216 181600 1399012 2950828 2d06ac vmlinux.i386.allno.after
> 1608231 310968 505088 2424287 24fddf vmlinux.x86_64.allno
> 1609232 311032 504896 2425160 250148 vmlinux.x86_64.allno.after
> 97643748 6891747 34668544 139204039 84c15c7 vmlinux.i386.allyes
> 97643582 6892011 34668544 139204137 84c1629 vmlinux.i386.allyes.after
> 85869519 13567071 44511232 143947822 894782e vmlinux.x86_64.allyes
> 85869134 13568607 44511232 143948973 8947cad vmlinux.x86_64.allyes.after
>
> As can be seen, the kernels get slighly larger, but the code reduction/
> simplification should be enough to compensate for it.
>
> Changes in v5:
> - Reduced the number of files affected in the patchset by keeping helper
> functions in arch/x86/include/asm/smp.h
> - Rebased to latest tip/master
>
> Kevin Winchester (5):
> x86: Move per cpu cpu_llc_shared_map to a field in struct cpuinfo_x86
> x86: Move per cpu cpu_llc_id to a field in struct cpuinfo_x86
> x86: Move per cpu cpu_sibling_map to a field in struct cpuinfo_x86
> x86: Move per cpu cpu_core_map to a field in struct cpuinfo_x86
> x86: Remove #ifdef CONFIG_SMP sections by moving smp_num_siblings
> into common.c
>

I applied this patchset on top of v3.4-rc4 (to get a clean topic branch)
and ran into the following build problems:

i386 "allnoconfig":

/home/hpa/kernel/tip.x86-cpu/arch/x86/kernel/process.c: In function
‘select_idle_routine’:
/home/hpa/kernel/tip.x86-cpu/arch/x86/kernel/process.c:679:30: error:
‘smp_num_siblings’ undeclared (first use in this function)
/home/hpa/kernel/tip.x86-cpu/arch/x86/kernel/process.c:679:30: note:
each undeclared identifier is reported only once for each function it
appears in

i386 "allyesconfig" and "allmodconfig":

/home/hpa/kernel/tip.x86-cpu/drivers/cpufreq/speedstep-ich.c: In
function ‘speedstep_cpu_init’:
/home/hpa/kernel/tip.x86-cpu/drivers/cpufreq/speedstep-ich.c:337:2:
error: incompatible type for argument 2 of ‘cpumask_copy’
/home/hpa/kernel/tip.x86-cpu/include/linux/cpumask.h:483:20: note:
expected ‘const struct cpumask *’ but argument is of type ‘cpumask_t’

I will try it again against tip:master, but it looks to have the same
problems.

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