Adds a place to declare rw data that will not be far from the .data content, therefore limiting the impact on cache of data declared in sections part of the EXTRA_RWDATA. Signed-off-by: Mathieu Desnoyers Cc: --- arch/alpha/kernel/vmlinux.lds.S | 1 + arch/arm/kernel/vmlinux.lds.S | 1 + arch/arm26/kernel/vmlinux-arm26-xip.lds.in | 1 + arch/arm26/kernel/vmlinux-arm26.lds.in | 1 + arch/avr32/kernel/vmlinux.lds.c | 1 + arch/cris/arch-v10/vmlinux.lds.S | 1 + arch/cris/arch-v32/vmlinux.lds.S | 1 + arch/frv/kernel/vmlinux.lds.S | 1 + arch/h8300/kernel/vmlinux.lds.S | 4 +++- arch/i386/kernel/vmlinux.lds.S | 1 + arch/ia64/kernel/vmlinux.lds.S | 2 +- arch/m32r/kernel/vmlinux.lds.S | 1 + arch/m68k/kernel/vmlinux-std.lds | 1 + arch/m68k/kernel/vmlinux-sun3.lds | 1 + arch/m68knommu/kernel/vmlinux.lds.S | 1 + arch/mips/kernel/vmlinux.lds.S | 2 ++ arch/parisc/kernel/vmlinux.lds.S | 1 + arch/powerpc/kernel/vmlinux.lds.S | 2 ++ arch/ppc/kernel/vmlinux.lds.S | 1 + arch/s390/kernel/vmlinux.lds.S | 1 + arch/sh/kernel/vmlinux.lds.S | 1 + arch/sh64/kernel/vmlinux.lds.S | 1 + arch/sparc/kernel/vmlinux.lds.S | 1 + arch/sparc64/kernel/vmlinux.lds.S | 1 + arch/um/kernel/dyn.lds.S | 1 + arch/um/kernel/uml.lds.S | 1 + arch/v850/kernel/vmlinux.lds.S | 1 + arch/x86_64/kernel/vmlinux.lds.S | 1 + arch/xtensa/kernel/vmlinux.lds.S | 2 +- include/asm-generic/vmlinux.lds.h | 2 ++ 30 files changed, 35 insertions(+), 3 deletions(-) Index: linux-2.6-lttng/arch/alpha/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/alpha/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/alpha/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -90,6 +90,7 @@ _data = .; .data : { /* Data */ *(.data) + EXTRA_RWDATA CONSTRUCTORS } Index: linux-2.6-lttng/arch/arm/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/arm/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/arm/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -159,6 +159,7 @@ * and the usual data section */ *(.data) + EXTRA_RWDATA CONSTRUCTORS _edata = .; Index: linux-2.6-lttng/arch/arm26/kernel/vmlinux-arm26-xip.lds.in =================================================================== --- linux-2.6-lttng.orig/arch/arm26/kernel/vmlinux-arm26-xip.lds.in 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/arm26/kernel/vmlinux-arm26-xip.lds.in 2007-05-15 18:44:20.000000000 -0400 @@ -112,6 +112,7 @@ * and the usual data section */ *(.data) + EXTRA_RWDATA CONSTRUCTORS *(.init.data) Index: linux-2.6-lttng/arch/arm26/kernel/vmlinux-arm26.lds.in =================================================================== --- linux-2.6-lttng.orig/arch/arm26/kernel/vmlinux-arm26.lds.in 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/arm26/kernel/vmlinux-arm26.lds.in 2007-05-15 18:44:20.000000000 -0400 @@ -107,6 +107,7 @@ * and the usual data section */ *(.data) + EXTRA_RWDATA CONSTRUCTORS _edata = .; Index: linux-2.6-lttng/arch/avr32/kernel/vmlinux.lds.c =================================================================== --- linux-2.6-lttng.orig/arch/avr32/kernel/vmlinux.lds.c 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/avr32/kernel/vmlinux.lds.c 2007-05-15 18:44:20.000000000 -0400 @@ -113,6 +113,7 @@ /* And the rest... */ *(.data.rel*) *(.data) + EXTRA_RWDATA CONSTRUCTORS _edata = .; Index: linux-2.6-lttng/arch/cris/arch-v10/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/cris/arch-v10/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/cris/arch-v10/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -45,6 +45,7 @@ __Sdata = . ; .data : { /* Data */ *(.data) + EXTRA_RWDATA } __edata = . ; /* End of data section */ _edata = . ; Index: linux-2.6-lttng/arch/cris/arch-v32/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/cris/arch-v32/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/cris/arch-v32/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -50,6 +50,7 @@ __Sdata = . ; .data : { /* Data */ *(.data) + EXTRA_RWDATA } __edata = . ; /* End of data section. */ _edata = . ; Index: linux-2.6-lttng/arch/frv/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/frv/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/frv/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -137,6 +137,7 @@ .data : { /* Data */ *(.data .data.*) *(.exit.data) + EXTRA_RWDATA CONSTRUCTORS } Index: linux-2.6-lttng/arch/h8300/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/h8300/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/h8300/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -105,7 +105,9 @@ . = ALIGN(0x4) ; *(.data) . = ALIGN(0x4) ; - *(.data.*) + *(.data.*) + . = ALIGN(0x4) ; + EXTRA_RWDATA . = ALIGN(0x4) ; ___init_begin = .; Index: linux-2.6-lttng/arch/i386/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/i386/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/i386/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -77,6 +77,7 @@ . = ALIGN(4096); .data : AT(ADDR(.data) - LOAD_OFFSET) { /* Data */ *(.data) + EXTRA_RWDATA CONSTRUCTORS } :data Index: linux-2.6-lttng/arch/ia64/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/ia64/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/ia64/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -214,7 +214,7 @@ data : { } :data .data : AT(ADDR(.data) - LOAD_OFFSET) - { *(.data) *(.data1) *(.gnu.linkonce.d*) CONSTRUCTORS } + { *(.data) *(.data1) *(.gnu.linkonce.d*) EXTRA_RWDATA CONSTRUCTORS } . = ALIGN(16); /* gp must be 16-byte aligned for exc. table */ .got : AT(ADDR(.got) - LOAD_OFFSET) Index: linux-2.6-lttng/arch/m32r/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/m32r/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/m32r/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -51,6 +51,7 @@ *(.spu) *(.spi) *(.data) + EXTRA_RWDATA CONSTRUCTORS } Index: linux-2.6-lttng/arch/m68k/kernel/vmlinux-std.lds =================================================================== --- linux-2.6-lttng.orig/arch/m68k/kernel/vmlinux-std.lds 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/m68k/kernel/vmlinux-std.lds 2007-05-15 18:44:20.000000000 -0400 @@ -29,6 +29,7 @@ .data : { /* Data */ *(.data) + EXTRA_RWDATA CONSTRUCTORS } Index: linux-2.6-lttng/arch/m68k/kernel/vmlinux-sun3.lds =================================================================== --- linux-2.6-lttng.orig/arch/m68k/kernel/vmlinux-sun3.lds 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/m68k/kernel/vmlinux-sun3.lds 2007-05-15 18:44:20.000000000 -0400 @@ -24,6 +24,7 @@ .data : { /* Data */ *(.data) + EXTRA_RWDATA CONSTRUCTORS . = ALIGN(16); /* Exception table */ __start___ex_table = .; Index: linux-2.6-lttng/arch/m68knommu/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/m68knommu/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/m68knommu/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -134,6 +134,7 @@ . = ALIGN(4); _sdata = . ; *(.data) + EXTRA_RWDATA . = ALIGN(8192) ; *(.data.init_task) _edata = . ; Index: linux-2.6-lttng/arch/mips/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/mips/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/mips/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -64,6 +64,8 @@ *(.data) + EXTRA_RWDATA + CONSTRUCTORS } _gp = . + 0x8000; Index: linux-2.6-lttng/arch/parisc/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/parisc/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/parisc/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -92,6 +92,7 @@ . = ALIGN(L1_CACHE_BYTES); .data : { /* Data */ *(.data) + EXTRA_RWDATA CONSTRUCTORS } Index: linux-2.6-lttng/arch/powerpc/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/powerpc/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/powerpc/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -170,11 +170,13 @@ *(.data) *(.sdata) *(.got.plt) *(.got) + EXTRA_RWDATA } #else .data : { *(.data .data.rel* .toc1) *(.branch_lt) + EXTRA_RWDATA } .opd : { Index: linux-2.6-lttng/arch/ppc/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/ppc/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/ppc/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -73,6 +73,7 @@ *(.sdata2) *(.got.plt) *(.got) *(.dynamic) + EXTRA_RWDATA CONSTRUCTORS } Index: linux-2.6-lttng/arch/s390/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/s390/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/s390/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -49,6 +49,7 @@ .data : { /* Data */ *(.data) + EXTRA_RWDATA CONSTRUCTORS } Index: linux-2.6-lttng/arch/sh/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/sh/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/sh/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -42,6 +42,7 @@ .data : { /* Data */ *(.data) + EXTRA_RWDATA /* Align the initial ramdisk image (INITRD) on page boundaries. */ . = ALIGN(PAGE_SIZE); Index: linux-2.6-lttng/arch/sh64/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/sh64/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/sh64/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -79,6 +79,7 @@ .data : C_PHYS(.data) { /* Data */ *(.data) + EXTRA_RWDATA CONSTRUCTORS } Index: linux-2.6-lttng/arch/sparc/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/sparc/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/sparc/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -23,6 +23,7 @@ .data : { *(.data) + EXTRA_RWDATA CONSTRUCTORS } .data1 : { *(.data1) } Index: linux-2.6-lttng/arch/sparc64/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/sparc64/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/sparc64/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -28,6 +28,7 @@ .data : { *(.data) + EXTRA_RWDATA CONSTRUCTORS } .data1 : { *(.data1) } Index: linux-2.6-lttng/arch/um/kernel/dyn.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/um/kernel/dyn.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/um/kernel/dyn.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -98,6 +98,7 @@ . = ALIGN(KERNEL_STACK_SIZE); /* init_task */ *(.data.init_task) *(.data .data.* .gnu.linkonce.d.*) + EXTRA_RWDATA SORT(CONSTRUCTORS) } .data1 : { *(.data1) } Index: linux-2.6-lttng/arch/um/kernel/uml.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/um/kernel/uml.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/um/kernel/uml.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -61,6 +61,7 @@ *(.data.init_task) *(.data) *(.gnu.linkonce.d*) + EXTRA_RWDATA CONSTRUCTORS } .data1 : { *(.data1) } Index: linux-2.6-lttng/arch/v850/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/v850/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/v850/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -116,6 +116,7 @@ *(.data) \ *(.exit.data) /* 2.5 convention */ \ *(.data.exit) /* 2.4 convention */ \ + EXTRA_RWDATA \ . = ALIGN (16) ; \ *(.data.cacheline_aligned) \ . = ALIGN (0x2000) ; \ Index: linux-2.6-lttng/arch/x86_64/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/x86_64/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/x86_64/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -56,6 +56,7 @@ /* Data */ .data : AT(ADDR(.data) - LOAD_OFFSET) { *(.data) + EXTRA_RWDATA CONSTRUCTORS } :data Index: linux-2.6-lttng/arch/xtensa/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/xtensa/kernel/vmlinux.lds.S 2007-05-15 18:41:05.000000000 -0400 +++ linux-2.6-lttng/arch/xtensa/kernel/vmlinux.lds.S 2007-05-15 18:44:20.000000000 -0400 @@ -144,7 +144,7 @@ _fdata = .; .data : { - *(.data) CONSTRUCTORS + *(.data) EXTRA_RWDATA CONSTRUCTORS . = ALIGN(XCHAL_ICACHE_LINESIZE); *(.data.cacheline_aligned) } Index: linux-2.6-lttng/include/asm-generic/vmlinux.lds.h =================================================================== --- linux-2.6-lttng.orig/include/asm-generic/vmlinux.lds.h 2007-05-15 18:44:11.000000000 -0400 +++ linux-2.6-lttng/include/asm-generic/vmlinux.lds.h 2007-05-15 18:44:20.000000000 -0400 @@ -143,6 +143,8 @@ \ . = ALIGN(4096); +#define EXTRA_RWDATA + #define SECURITY_INIT \ .security_initcall.init : AT(ADDR(.security_initcall.init) - LOAD_OFFSET) { \ VMLINUX_SYMBOL(__security_initcall_start) = .; \ -- Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/