linux/arch/arm
Fenghua Yu 5fb7dc37dc define new percpu interface for shared data
per cpu data section contains two types of data.  One set which is
exclusively accessed by the local cpu and the other set which is per cpu,
but also shared by remote cpus.  In the current kernel, these two sets are
not clearely separated out.  This can potentially cause the same data
cacheline shared between the two sets of data, which will result in
unnecessary bouncing of the cacheline between cpus.

One way to fix the problem is to cacheline align the remotely accessed per
cpu data, both at the beginning and at the end.  Because of the padding at
both ends, this will likely cause some memory wastage and also the
interface to achieve this is not clean.

This patch:

Moves the remotely accessed per cpu data (which is currently marked
as ____cacheline_aligned_in_smp) into a different section, where all the data
elements are cacheline aligned. And as such, this differentiates the local
only data and remotely accessed data cleanly.

Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
Acked-by: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Christoph Lameter <clameter@sgi.com>
Cc: <linux-arch@vger.kernel.org>
Cc: "Luck, Tony" <tony.luck@intel.com>
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-07-19 10:04:44 -07:00
..
boot Merge branches 'at91', 'davinci', 'imx', 'iop', 'ixp', 'ks8695', 'misc', 'pxa' and 's3c' into devel 2007-07-12 21:30:18 +01:00
common Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2007-07-12 14:17:12 -07:00
configs [ARM] 4333/2: KS8695: Micrel Development board 2007-05-11 22:02:55 +01:00
kernel define new percpu interface for shared data 2007-07-19 10:04:44 -07:00
lib [ARM] spelling fixes 2007-05-20 20:10:32 +01:00
mach-aaec2000 Add IRQF_IRQPOLL flag on arm 2007-05-08 11:15:22 -07:00
mach-at91 csb337 supports "new style" rtc-ds1307 2007-07-17 10:23:09 -07:00
mach-clps711x Add IRQF_IRQPOLL flag on arm 2007-05-08 11:15:22 -07:00
mach-clps7500 Add IRQF_IRQPOLL flag on arm 2007-05-08 11:15:22 -07:00
mach-davinci [ARM] 4432/5: davinci: pin mux support 2007-07-12 09:57:09 +01:00
mach-ebsa110 [ARM] EBSA110: fix build errors caused by missing "const" 2007-05-11 17:20:02 +01:00
mach-ep93xx Add IRQF_IRQPOLL flag on arm 2007-05-08 11:15:22 -07:00
mach-footbridge [ARM] Fix some section mismatch warnings 2007-05-30 17:48:45 +01:00
mach-h720x [ARM] spelling fixes 2007-05-20 20:10:32 +01:00
mach-imx [ARM] 4374/3: i.MX/MX1 clock event source 2007-07-12 11:11:39 +01:00
mach-integrator [ARM] integrator: fix pci_v3 compile error with DEBUG_LL 2007-05-17 10:16:55 +01:00
mach-iop13xx Merge branch 'ioat-md-accel-for-linus' of git://lost.foo-projects.org/~dwillia2/git/iop 2007-07-13 10:52:27 -07:00
mach-iop32x Thecus N2100: register rtc-rs5c372 i2c device 2007-07-17 10:23:08 -07:00
mach-iop33x iop3xx: surface the iop3xx DMA and AAU units to the iop-adma driver 2007-07-13 08:06:19 -07:00
mach-ixp4xx [ARM] If linux/irq.h is included, asm/irq.h is not required 2007-07-12 11:12:18 +01:00
mach-ixp23xx [ARM] Fix some section mismatch warnings 2007-05-30 17:48:45 +01:00
mach-ixp2000 [ARM] Fix some section mismatch warnings 2007-05-30 17:48:45 +01:00
mach-ks8695 [ARM] 4377/1: KS8695: GPIO driver 2007-07-12 11:12:34 +01:00
mach-l7200 [ARM] Remove compatibility layer for ARM irqs 2006-11-30 12:24:47 +00:00
mach-lh7a40x [ARM] spelling fixes 2007-05-20 20:10:32 +01:00
mach-netx Add IRQF_IRQPOLL flag on arm 2007-05-08 11:15:22 -07:00
mach-ns9xxx [ARM] spelling fixes 2007-05-20 20:10:32 +01:00
mach-omap1 [ARM] spelling fixes 2007-05-20 20:10:32 +01:00
mach-omap2 [ARM] spelling fixes 2007-05-20 20:10:32 +01:00
mach-pnx4008 [ARM] Spinlock initializer cleanup 2007-05-11 17:38:04 +01:00
mach-pxa [ARM] pxa: move platform devices to separate header file 2007-07-12 14:28:21 +01:00
mach-realview [ARM] spelling fixes 2007-05-20 20:10:32 +01:00
mach-rpc [ARM] Add platform support for PATA on RiscPC 2007-05-03 14:16:55 +01:00
mach-s3c2400 [ARM] 4157/2: S3C24XX: move arch/arch/mach-s3c2410 into cpu components 2007-02-11 17:36:09 +00:00
mach-s3c2410 [ARM] 4467/3: BAST: AX88796 device resources 2007-07-12 10:56:27 +01:00
mach-s3c2412 [ARM] 4412/1: S3C2412: reset errata fix 2007-05-30 13:15:23 +01:00
mach-s3c2440 [ARM] 4470/2: OSIRIS: large page NAND support 2007-07-12 11:01:13 +01:00
mach-s3c2442 [ARM] 4157/2: S3C24XX: move arch/arch/mach-s3c2410 into cpu components 2007-02-11 17:36:09 +00:00
mach-s3c2443 [ARM] 4414/1: S3C2443: sparse fix for clock.c 2007-05-30 13:15:26 +01:00
mach-sa1100 Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm 2007-07-12 14:17:12 -07:00
mach-shark Add IRQF_IRQPOLL flag on arm 2007-05-08 11:15:22 -07:00
mach-versatile [ARM] 4454/1: Use word accesses in Versatile PCI config reads 2007-07-02 13:39:35 +01:00
mm mm: fault feedback #2 2007-07-19 10:04:41 -07:00
nwfpe [ARM] 4416/1: NWFPE: fix undeclared symbols 2007-05-30 13:15:34 +01:00
oprofile [ARM] Solve buggy smp_processor_id() usage 2007-06-02 21:31:49 +01:00
plat-iop iop3xx: surface the iop3xx DMA and AAU units to the iop-adma driver 2007-07-13 08:06:19 -07:00
plat-omap [ARM] spelling fixes 2007-05-20 20:10:32 +01:00
plat-s3c24xx [ARM] spelling fixes 2007-05-20 20:10:32 +01:00
tools [ARM] Update mach-types 2007-05-11 19:54:39 +01:00
vfp [ARM] VFP: fix section mismatch error 2007-06-10 12:22:20 +01:00
Kconfig Merge branch 'ioat-md-accel-for-linus' of git://lost.foo-projects.org/~dwillia2/git/iop 2007-07-13 10:52:27 -07:00
Kconfig-nommu [ARM] nommu: manage the CP15 things 2006-09-27 17:34:30 +01:00
Kconfig.debug [ARM] Remove DEBUG_WAITQ 2006-11-30 12:24:47 +00:00
Makefile [ARM] 4331/3: Support for Micrel/Kendin KS8695 processor 2007-05-11 22:02:48 +01:00