EXTRARW_DATA adds a place to declare rw data that will not be mixed with the .data content; therefore limiting data cache pollution when data is put in the EXTRARW_DATA sections. 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 | 3 ++- arch/i386/kernel/vmlinux.lds.S | 1 + arch/ia64/kernel/vmlinux.lds.S | 1 + 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 | 3 +-- 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 | 2 +- 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 | 4 +++- include/asm-generic/vmlinux.lds.h | 5 +++++ 30 files changed, 38 insertions(+), 5 deletions(-) Index: linux-2.6-lttng/arch/alpha/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/alpha/kernel/vmlinux.lds.S 2007-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/alpha/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -90,6 +90,7 @@ _data = .; .data : { /* Data */ DATA_DATA + EXTRARW_DATA CONSTRUCTORS } Index: linux-2.6-lttng/arch/arm/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/arm/kernel/vmlinux.lds.S 2007-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/arm/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -159,6 +159,7 @@ * and the usual data section */ DATA_DATA + EXTRARW_DATA 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-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/arm26/kernel/vmlinux-arm26-xip.lds.in 2007-06-15 16:14:08.000000000 -0400 @@ -112,6 +112,7 @@ * and the usual data section */ DATA_DATA + EXTRARW_DATA 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-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/arm26/kernel/vmlinux-arm26.lds.in 2007-06-15 16:14:08.000000000 -0400 @@ -107,6 +107,7 @@ * and the usual data section */ DATA_DATA + EXTRARW_DATA 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-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/avr32/kernel/vmlinux.lds.c 2007-06-15 16:14:08.000000000 -0400 @@ -113,6 +113,7 @@ /* And the rest... */ *(.data.rel*) DATA_DATA + EXTRARW_DATA 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-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/cris/arch-v10/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -45,6 +45,7 @@ __Sdata = . ; .data : { /* Data */ *(.data) + EXTRARW_DATA } __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-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/cris/arch-v32/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -50,6 +50,7 @@ __Sdata = . ; .data : { /* Data */ *(.data) + EXTRARW_DATA } __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-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/frv/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -139,6 +139,7 @@ DATA_DATA *(.data.*) *(.exit.data) + EXTRARW_DATA CONSTRUCTORS } Index: linux-2.6-lttng/arch/h8300/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/h8300/kernel/vmlinux.lds.S 2007-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/h8300/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -105,7 +105,8 @@ . = ALIGN(0x4) ; DATA_DATA . = ALIGN(0x4) ; - *(.data.*) + *(.data.*) + EXTRARW_DATA . = 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-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/i386/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -77,6 +77,7 @@ . = ALIGN(4096); .data : AT(ADDR(.data) - LOAD_OFFSET) { /* Data */ DATA_DATA + EXTRARW_DATA 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-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/ia64/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -216,6 +216,7 @@ .data : AT(ADDR(.data) - LOAD_OFFSET) { DATA_DATA + EXTRARW_DATA *(.data1) *(.gnu.linkonce.d*) CONSTRUCTORS Index: linux-2.6-lttng/arch/m32r/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/m32r/kernel/vmlinux.lds.S 2007-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/m32r/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -51,6 +51,7 @@ *(.spu) *(.spi) DATA_DATA + EXTRARW_DATA CONSTRUCTORS } Index: linux-2.6-lttng/arch/m68k/kernel/vmlinux-std.lds =================================================================== --- linux-2.6-lttng.orig/arch/m68k/kernel/vmlinux-std.lds 2007-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/m68k/kernel/vmlinux-std.lds 2007-06-15 16:14:08.000000000 -0400 @@ -29,6 +29,7 @@ .data : { /* Data */ DATA_DATA + EXTRARW_DATA CONSTRUCTORS } Index: linux-2.6-lttng/arch/m68k/kernel/vmlinux-sun3.lds =================================================================== --- linux-2.6-lttng.orig/arch/m68k/kernel/vmlinux-sun3.lds 2007-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/m68k/kernel/vmlinux-sun3.lds 2007-06-15 16:14:08.000000000 -0400 @@ -24,6 +24,7 @@ .data : { /* Data */ DATA_DATA + EXTRARW_DATA 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-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/m68knommu/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -134,6 +134,7 @@ . = ALIGN(4); _sdata = . ; DATA_DATA + EXTRARW_DATA . = 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-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/mips/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -61,9 +61,8 @@ */ . = ALIGN(_PAGE_SIZE); *(.data.init_task) - DATA_DATA - + EXTRARW_DATA 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-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/parisc/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -92,6 +92,7 @@ . = ALIGN(L1_CACHE_BYTES); .data : { /* Data */ DATA_DATA + EXTRARW_DATA CONSTRUCTORS } Index: linux-2.6-lttng/arch/powerpc/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/powerpc/kernel/vmlinux.lds.S 2007-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/powerpc/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -170,11 +170,13 @@ DATA_DATA *(.sdata) *(.got.plt) *(.got) + EXTRARW_DATA } #else .data : { *(.data .data.rel* .toc1) *(.branch_lt) + EXTRARW_DATA } .opd : { Index: linux-2.6-lttng/arch/ppc/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/ppc/kernel/vmlinux.lds.S 2007-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/ppc/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -73,6 +73,7 @@ *(.sdata2) *(.got.plt) *(.got) *(.dynamic) + EXTRARW_DATA CONSTRUCTORS } Index: linux-2.6-lttng/arch/s390/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/s390/kernel/vmlinux.lds.S 2007-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/s390/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -49,6 +49,7 @@ .data : { /* Data */ DATA_DATA + EXTRARW_DATA CONSTRUCTORS } Index: linux-2.6-lttng/arch/sh/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/sh/kernel/vmlinux.lds.S 2007-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/sh/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -49,7 +49,7 @@ *(.initrd) . = ALIGN(PAGE_SIZE); __rd_end = .; - + EXTRARW_DATA CONSTRUCTORS } Index: linux-2.6-lttng/arch/sh64/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/sh64/kernel/vmlinux.lds.S 2007-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/sh64/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -79,6 +79,7 @@ .data : C_PHYS(.data) { /* Data */ DATA_DATA + EXTRARW_DATA CONSTRUCTORS } Index: linux-2.6-lttng/arch/sparc/kernel/vmlinux.lds.S =================================================================== --- linux-2.6-lttng.orig/arch/sparc/kernel/vmlinux.lds.S 2007-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/sparc/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -23,6 +23,7 @@ .data : { DATA_DATA + EXTRARW_DATA 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-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/sparc64/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -29,6 +29,7 @@ .data : { DATA_DATA + EXTRARW_DATA 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-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/um/kernel/dyn.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -101,6 +101,7 @@ *(.data.init_irqstack) DATA_DATA *(.data.* .gnu.linkonce.d.*) + EXTRARW_DATA 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-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/um/kernel/uml.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -63,6 +63,7 @@ *(.data.init_irqstack) DATA_DATA *(.gnu.linkonce.d*) + EXTRARW_DATA 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-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/v850/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -116,6 +116,7 @@ DATA_DATA \ *(.exit.data) /* 2.5 convention */ \ *(.data.exit) /* 2.4 convention */ \ + EXTRARW_DATA \ . = 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-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/x86_64/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -63,6 +63,7 @@ /* Data */ .data : AT(ADDR(.data) - LOAD_OFFSET) { DATA_DATA + EXTRARW_DATA 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-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/arch/xtensa/kernel/vmlinux.lds.S 2007-06-15 16:14:08.000000000 -0400 @@ -118,7 +118,9 @@ _fdata = .; .data : { - *(.data) CONSTRUCTORS + *(.data) + EXTRARW_DATA + 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-06-15 16:13:50.000000000 -0400 +++ linux-2.6-lttng/include/asm-generic/vmlinux.lds.h 2007-06-15 16:14:08.000000000 -0400 @@ -150,6 +150,11 @@ * All archs are supposed to use RO_DATA() */ #define RODATA RO_DATA(4096) +/* EXTRARW_DATA adds a place to declare rw data that will not be mixed with the + * .data content; therefore limiting data cache pollution when data is put in + * the EXTRARW_DATA sections. */ +#define EXTRARW_DATA + #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/