From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from d23relay03.au.ibm.com (d23relay03.au.ibm.com [202.81.18.234]) by e23smtp01.au.ibm.com (8.13.1/8.13.1) with ESMTP id l87Cxg4S005946 for ; Fri, 7 Sep 2007 22:59:42 +1000 Received: from d23av02.au.ibm.com (d23av02.au.ibm.com [9.190.250.243]) by d23relay03.au.ibm.com (8.13.8/8.13.8/NCO v8.5) with ESMTP id l87CxeZO4874372 for ; Fri, 7 Sep 2007 22:59:40 +1000 Received: from d23av02.au.ibm.com (loopback [127.0.0.1]) by d23av02.au.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id l87Cxd90000905 for ; Fri, 7 Sep 2007 22:59:40 +1000 Message-ID: <46E14B37.4030007@linux.vnet.ibm.com> Date: Fri, 07 Sep 2007 18:29:35 +0530 From: Kamalesh Babulal MIME-Version: 1.0 Subject: Re: [PATCH 3/3] ppc64: Convert cpu_sibling_map to a per_cpu data array References: <20070907040943.467530005@sgi.com> <20070907040944.380253345@sgi.com> <46E1337D.3090005@linux.vnet.ibm.com> In-Reply-To: <46E1337D.3090005@linux.vnet.ibm.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 8bit Sender: owner-linux-mm@kvack.org Return-Path: To: travis@sgi.com Cc: Andrew Morton , Andi Kleen , Christoph Lameter , linux-mm@kvack.org, linux-kernel@vger.kernel.org List-ID: Kamalesh Babulal wrote: > travis@sgi.com wrote: >> Convert cpu_sibling_map to a per_cpu cpumask_t array for the ppc64 >> architecture. >> >> Note: these changes have not been built nor tested. >> >> Note: I also don't know if these changes are particularly >> relevant for the ppc64 architecture. >> >> Signed-off-by: Mike Travis >> --- >> arch/powerpc/kernel/setup-common.c | 4 ++-- >> arch/powerpc/kernel/smp.c | 4 ++-- >> arch/powerpc/platforms/cell/cbe_cpufreq.c | 2 +- >> include/asm-powerpc/smp.h | 3 ++- >> include/asm-powerpc/topology.h | 2 +- >> 5 files changed, 8 insertions(+), 7 deletions(-) >> >> --- a/arch/powerpc/kernel/setup-common.c >> +++ b/arch/powerpc/kernel/setup-common.c >> @@ -415,9 +415,9 @@ >> * Do the sibling map; assume only two threads per processor. >> */ >> for_each_possible_cpu(cpu) { >> - cpu_set(cpu, cpu_sibling_map[cpu]); >> + cpu_set(cpu, cpu_sibling_map(cpu)); >> if (cpu_has_feature(CPU_FTR_SMT)) >> - cpu_set(cpu ^ 0x1, cpu_sibling_map[cpu]); >> + cpu_set(cpu ^ 0x1, cpu_sibling_map(cpu)); >> } >> >> vdso_data->processorCount = num_present_cpus(); >> --- a/arch/powerpc/kernel/smp.c >> +++ b/arch/powerpc/kernel/smp.c >> @@ -61,11 +61,11 @@ >> >> cpumask_t cpu_possible_map = CPU_MASK_NONE; >> cpumask_t cpu_online_map = CPU_MASK_NONE; >> -cpumask_t cpu_sibling_map[NR_CPUS] = { [0 ... NR_CPUS-1] = >> CPU_MASK_NONE }; >> +DEFINE_PER_CPU(cpumask_t, cpu_sibling_map) = CPU_MASK_NONE; >> >> EXPORT_SYMBOL(cpu_online_map); >> EXPORT_SYMBOL(cpu_possible_map); >> -EXPORT_SYMBOL(cpu_sibling_map); >> +EXPORT_PER_CPU_SYMBOL(cpu_sibling_map); >> >> /* SMP operations for this machine */ >> struct smp_ops_t *smp_ops; >> --- a/arch/powerpc/platforms/cell/cbe_cpufreq.c >> +++ b/arch/powerpc/platforms/cell/cbe_cpufreq.c >> @@ -117,7 +117,7 @@ >> policy->cur = cbe_freqs[cur_pmode].frequency; >> >> #ifdef CONFIG_SMP >> - policy->cpus = cpu_sibling_map[policy->cpu]; >> + policy->cpus = cpu_sibling_map(policy->cpu); >> #endif >> >> cpufreq_frequency_table_get_attr(cbe_freqs, policy->cpu); >> --- a/include/asm-powerpc/smp.h >> +++ b/include/asm-powerpc/smp.h >> @@ -58,7 +58,8 @@ >> (smp_hw_index[(cpu)] = (phys)) >> #endif >> >> -extern cpumask_t cpu_sibling_map[NR_CPUS]; >> +DECLARE_PER_CPU(cpumask_t, cpu_sibling_map); >> +#define cpu_sibling_map(cpu) per_cpu(cpu_sibling_map, cpu) >> >> /* Since OpenPIC has only 4 IPIs, we use slightly different message >> numbers. >> * >> --- a/include/asm-powerpc/topology.h >> +++ b/include/asm-powerpc/topology.h >> @@ -108,7 +108,7 @@ >> #ifdef CONFIG_PPC64 >> #include >> >> -#define topology_thread_siblings(cpu) (cpu_sibling_map[cpu]) >> +#define topology_thread_siblings(cpu) (cpu_sibling_map(cpu)) >> #endif >> #endif >> >> >> > Hi Mike, > > After applying the patch, the build fails with following error > > CHK include/linux/version.h > CHK include/linux/utsrelease.h > CC arch/powerpc/kernel/asm-offsets.s > In file included from include/linux/smp.h:19, > from include/linux/topology.h:33, > from include/linux/mmzone.h:660, > from include/linux/gfp.h:4, > from include/linux/slab.h:14, > from include/linux/percpu.h:5, > from include/asm/time.h:18, > from include/asm/cputime.h:26, > from include/linux/sched.h:65, > from arch/powerpc/kernel/asm-offsets.c:17: > include/asm/smp.h:61: error: expected declaration specifiers or ?...? > before ?cpu_sibling_map? > include/asm/smp.h:61: warning: data definition has no type or storage > class > include/asm/smp.h:61: warning: type defaults to ?int? in declaration > of ?DECLARE_PER_CPU? > make[1]: *** [arch/powerpc/kernel/asm-offsets.s] Error 1 > make: *** [prepare0] Error 2 > > Thanks & Regards, > Kamalesh Babulal. Hi Make, I tried to debug and probably the patch below could help the build error Signed-off-by: Kamalesh Babulal ---- --- a/include/asm-powerpc/smp.h 2007-09-07 18:15:43.000000000 +0530 +++ b/include/asm-powerpc/smp.h 2007-09-07 18:16:02.000000000 +0530 @@ -25,6 +25,7 @@ #ifdef CONFIG_PPC64 #include +#include #endif extern int boot_cpuid; --- Thanks & Regards, Kamalesh Babulal. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org