From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757937AbYAUUdA (ORCPT ); Mon, 21 Jan 2008 15:33:00 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754709AbYAUU2c (ORCPT ); Mon, 21 Jan 2008 15:28:32 -0500 Received: from netops-testserver-3-out.sgi.com ([192.48.171.28]:55980 "EHLO relay.sgi.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754545AbYAUU2X (ORCPT ); Mon, 21 Jan 2008 15:28:23 -0500 Message-Id: <20080121202822.526335000@sgi.com> References: <20080121202821.815918000@sgi.com> User-Agent: quilt/0.46-1 Date: Mon, 21 Jan 2008 12:28:26 -0800 From: travis@sgi.com To: Andrew Morton , Andi Kleen , mingo@elte.hu Cc: Christoph Lameter , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Paul Mackerras Subject: [PATCH 5/7] Powerpc: Use generic per cpu rc8-mm1-fixup with git-x86 Content-Disposition: inline; filename=power_generic_percpu Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Powerpc has a way to determine the address of the per cpu area of the currently executing processor via the paca and the array of per cpu offsets is avoided by looking up the per cpu area from the remote paca's (copying x86_64). Based on 2.6.24-rc8-mm1 + latest (08/1/21) git-x86 Cc: Paul Mackerras Signed-off-by: Christoph Lameter Signed-off-by: Mike Travis --- rc8-mm1-fixup: - rebased from 2.6.24-rc6-mm1 to 2.6.24-rc8-mm1 (removed changes that are in the git-x86.patch) V1->V2: - add missing #endif V2->V3: - use generic percpy_modcopy() --- arch/powerpc/Kconfig | 2 +- include/asm-powerpc/percpu.h | 20 ++------------------ 2 files changed, 3 insertions(+), 19 deletions(-) --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -42,7 +42,7 @@ config GENERIC_HARDIRQS bool default y -config ARCH_SETS_UP_PER_CPU_AREA +config HAVE_SETUP_PER_CPU_AREA def_bool PPC64 config IRQ_PER_CPU --- a/include/asm-powerpc/percpu.h +++ b/include/asm-powerpc/percpu.h @@ -16,25 +16,9 @@ #define __my_cpu_offset() get_paca()->data_offset #define per_cpu_offset(x) (__per_cpu_offset(x)) -/* var is in discarded region: offset to particular copy we want */ -#define per_cpu(var, cpu) (*RELOC_HIDE(&per_cpu__##var, __per_cpu_offset(cpu))) -#define __get_cpu_var(var) (*RELOC_HIDE(&per_cpu__##var, __my_cpu_offset())) -#define __raw_get_cpu_var(var) (*RELOC_HIDE(&per_cpu__##var, local_paca->data_offset)) +#endif /* CONFIG_SMP */ +#endif /* __powerpc64__ */ -extern void setup_per_cpu_areas(void); - -#else /* ! SMP */ - -#define per_cpu(var, cpu) (*((void)(cpu), &per_cpu__##var)) -#define __get_cpu_var(var) per_cpu__##var -#define __raw_get_cpu_var(var) per_cpu__##var - -#endif /* SMP */ - -#define DECLARE_PER_CPU(type, name) extern __typeof__(type) per_cpu__##name - -#else #include -#endif #endif /* _ASM_POWERPC_PERCPU_H_ */ --