* [patch 08/10] Defines the linker macro EXTRA_RWDATA for the marker data section.
[not found] <20070510015555.973107048@polymtl.ca>
@ 2007-05-10 1:56 ` Mathieu Desnoyers
2007-05-10 1:56 ` [patch 09/10] Linux Kernel Markers - Use EXTRA_RWDATA in architectures Mathieu Desnoyers
1 sibling, 0 replies; 2+ messages in thread
From: Mathieu Desnoyers @ 2007-05-10 1:56 UTC (permalink / raw)
To: akpm; +Cc: linux-kernel, hch, Mathieu Desnoyers, linux-arch
[-- Attachment #1: linux-kernel-markers-define-the-linker-macro-extra_rwdata.patch --]
[-- Type: text/plain, Size: 2784 bytes --]
Defines the linker macro EXTRA_RWDATA for the marker data section. It puts
the marker data in a separate section that will not pollute the normal .data
section, which minimize the cache impact. Markers need such a special section
because they define a lot of spreaded and small data structures at multiple
sites.
This patch also creates the __markers_strings section (ro marker strings) and
makes sure the __markers section is aligned by putting it before the
__ksymtab_strings (not after).
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: <linux-arch@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
include/asm-generic/vmlinux.lds.h | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
Index: linux-2.6-lttng/include/asm-generic/vmlinux.lds.h
===================================================================
--- linux-2.6-lttng.orig/include/asm-generic/vmlinux.lds.h 2007-05-08 17:07:12.000000000 -0400
+++ linux-2.6-lttng/include/asm-generic/vmlinux.lds.h 2007-05-08 17:09:12.000000000 -0400
@@ -116,21 +116,19 @@
*(__kcrctab_gpl_future) \
VMLINUX_SYMBOL(__stop___kcrctab_gpl_future) = .; \
} \
- \
- /* Kernel symbol table: strings */ \
- __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
- *(__ksymtab_strings) \
- } \
/* Kernel markers : pointers */ \
- .markers : AT(ADDR(.markers) - LOAD_OFFSET) { \
+ __markers : AT(ADDR(__markers) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__start___markers) = .; \
- *(.markers) \
+ *(__markers) \
VMLINUX_SYMBOL(__stop___markers) = .; \
} \
- .markers.c : AT(ADDR(.markers.c) - LOAD_OFFSET) { \
- VMLINUX_SYMBOL(__start___markers_c) = .; \
- *(.markers.c) \
- VMLINUX_SYMBOL(__stop___markers_c) = .; \
+ /* Kernel symbol table: strings */ \
+ __ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
+ *(__ksymtab_strings) \
+ } \
+ /* Kernel markers : strings */ \
+ __markers_strings : AT(ADDR(__markers_strings) - LOAD_OFFSET) { \
+ *(__markers_strings) \
} \
__end_rodata = .; \
. = ALIGN(4096); \
@@ -145,6 +143,10 @@
\
. = ALIGN(4096);
+#define EXTRA_RWDATA \
+ . = ALIGN(8); \
+ *(__markers_data) \
+
#define SECURITY_INIT \
.security_initcall.init : AT(ADDR(.security_initcall.init) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__security_initcall_start) = .; \
@@ -241,4 +243,3 @@
*(.initcall6s.init) \
*(.initcall7.init) \
*(.initcall7s.init)
-
--
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
^ permalink raw reply [flat|nested] 2+ messages in thread* [patch 09/10] Linux Kernel Markers - Use EXTRA_RWDATA in architectures
[not found] <20070510015555.973107048@polymtl.ca>
2007-05-10 1:56 ` [patch 08/10] Defines the linker macro EXTRA_RWDATA for the marker data section Mathieu Desnoyers
@ 2007-05-10 1:56 ` Mathieu Desnoyers
1 sibling, 0 replies; 2+ messages in thread
From: Mathieu Desnoyers @ 2007-05-10 1:56 UTC (permalink / raw)
To: akpm; +Cc: linux-kernel, hch, Mathieu Desnoyers, linux-arch
[-- Attachment #1: linux-kernel-markers-use-extra_rwdata-in-architectures.patch --]
[-- Type: text/plain, Size: 15039 bytes --]
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: <linux-arch@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
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 +-
29 files changed, 33 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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/alpha/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/arm/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/arm26/kernel/vmlinux-arm26-xip.lds.in 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/arm26/kernel/vmlinux-arm26.lds.in 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/avr32/kernel/vmlinux.lds.c 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/cris/arch-v10/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/cris/arch-v32/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/frv/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/h8300/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/i386/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/ia64/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/m32r/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/m68k/kernel/vmlinux-std.lds 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/m68k/kernel/vmlinux-sun3.lds 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/m68knommu/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/mips/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/parisc/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/powerpc/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/ppc/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/s390/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/sh/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/sh64/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/sparc/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/sparc64/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/um/kernel/dyn.lds.S 2007-05-09 18:16:17.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-09 18:14:50.000000000 -0400
+++ linux-2.6-lttng/arch/um/kernel/uml.lds.S 2007-05-09 18:16:17.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-09 18:14:51.000000000 -0400
+++ linux-2.6-lttng/arch/v850/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:51.000000000 -0400
+++ linux-2.6-lttng/arch/x86_64/kernel/vmlinux.lds.S 2007-05-09 18:16:17.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-09 18:14:51.000000000 -0400
+++ linux-2.6-lttng/arch/xtensa/kernel/vmlinux.lds.S 2007-05-09 18:16:17.000000000 -0400
@@ -144,7 +144,7 @@
_fdata = .;
.data :
{
- *(.data) CONSTRUCTORS
+ *(.data) EXTRA_RWDATA CONSTRUCTORS
. = ALIGN(XCHAL_ICACHE_LINESIZE);
*(.data.cacheline_aligned)
}
--
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
^ permalink raw reply [flat|nested] 2+ messages in thread