* [PATCH 1/5] sparc64: ident vmlinux.lds.S
2007-05-24 20:04 Linker script cleanup / consolidation Sam Ravnborg
@ 2007-05-24 20:10 ` Sam Ravnborg
2007-05-24 20:11 ` Sam Ravnborg
` (3 subsequent siblings)
4 siblings, 0 replies; 18+ messages in thread
From: Sam Ravnborg @ 2007-05-24 20:10 UTC (permalink / raw)
To: David Miller, linux-arch, sparclinux, LKML
This introduce a style similar to C code.
No functional changes.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
arch/sparc64/kernel/vmlinux.lds.S | 239 ++++++++++++++++++++++---------------
1 files changed, 142 insertions(+), 97 deletions(-)
diff --git a/arch/sparc64/kernel/vmlinux.lds.S b/arch/sparc64/kernel/vmlinux.lds.S
index fb648de..6f924fd 100644
--- a/arch/sparc64/kernel/vmlinux.lds.S
+++ b/arch/sparc64/kernel/vmlinux.lds.S
@@ -9,105 +9,150 @@ ENTRY(_start)
jiffies = jiffies_64;
SECTIONS
{
- swapper_low_pmd_dir = 0x0000000000402000;
- . = 0x4000;
- .text 0x0000000000404000 :
- {
- _text = .;
- TEXT_TEXT
- SCHED_TEXT
- LOCK_TEXT
- KPROBES_TEXT
- *(.gnu.warning)
- } =0
- _etext = .;
- PROVIDE (etext = .);
-
- RODATA
-
- .data :
- {
- DATA_DATA
- CONSTRUCTORS
- }
- .data1 : { *(.data1) }
- . = ALIGN(64);
- .data.cacheline_aligned : { *(.data.cacheline_aligned) }
- . = ALIGN(64);
- .data.read_mostly : { *(.data.read_mostly) }
- _edata = .;
- PROVIDE (edata = .);
- .fixup : { *(.fixup) }
-
- . = ALIGN(16);
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(8192);
- __init_begin = .;
- .init.text : {
- _sinittext = .;
- *(.init.text)
- _einittext = .;
- }
- .init.data : { *(.init.data) }
- . = ALIGN(16);
- __setup_start = .;
- .init.setup : { *(.init.setup) }
- __setup_end = .;
- __initcall_start = .;
- .initcall.init : {
- INITCALLS
- }
- __initcall_end = .;
- __con_initcall_start = .;
- .con_initcall.init : { *(.con_initcall.init) }
- __con_initcall_end = .;
- SECURITY_INIT
- . = ALIGN(4);
- __tsb_ldquad_phys_patch = .;
- .tsb_ldquad_phys_patch : { *(.tsb_ldquad_phys_patch) }
- __tsb_ldquad_phys_patch_end = .;
- __tsb_phys_patch = .;
- .tsb_phys_patch : { *(.tsb_phys_patch) }
- __tsb_phys_patch_end = .;
- __cpuid_patch = .;
- .cpuid_patch : { *(.cpuid_patch) }
- __cpuid_patch_end = .;
- __sun4v_1insn_patch = .;
- .sun4v_1insn_patch : { *(.sun4v_1insn_patch) }
- __sun4v_1insn_patch_end = .;
- __sun4v_2insn_patch = .;
- .sun4v_2insn_patch : { *(.sun4v_2insn_patch) }
- __sun4v_2insn_patch_end = .;
+ swapper_low_pmd_dir = 0x0000000000402000;
+ . = 0x4000;
+ .text 0x0000000000404000 : {
+ _text = .;
+ TEXT_TEXT
+ SCHED_TEXT
+ LOCK_TEXT
+ KPROBES_TEXT
+ *(.gnu.warning)
+ } =0
+ _etext = .;
+ PROVIDE (etext = .);
+
+ RODATA
+
+ .data : {
+ DATA_DATA
+ CONSTRUCTORS
+ }
+ .data1 : {
+ *(.data1)
+ }
+
+ . = ALIGN(64);
+ .data.cacheline_aligned : {
+ *(.data.cacheline_aligned)
+ }
+
+ . = ALIGN(64);
+ .data.read_mostly : {
+ *(.data.read_mostly)
+ }
+ _edata = .;
+ PROVIDE (edata = .);
+ .fixup : {
+ *(.fixup)
+ }
+
+ . = ALIGN(16);
+ __start___ex_table = .;
+ __ex_table : {
+ *(__ex_table)
+ }
+ __stop___ex_table = .;
+
+ . = ALIGN(8192);
+ __init_begin = .;
+ .init.text : {
+ _sinittext = .;
+ *(.init.text)
+ _einittext = .;
+ }
+
+ .init.data : {
+ *(.init.data)
+ }
+
+ . = ALIGN(16);
+ __setup_start = .;
+ .init.setup : {
+ *(.init.setup)
+ }
+ __setup_end = .;
+
+ __initcall_start = .;
+ .initcall.init : {
+ INITCALLS
+ }
+ __initcall_end = .;
+
+ __con_initcall_start = .;
+ .con_initcall.init : {
+ *(.con_initcall.init)
+ }
+ __con_initcall_end = .;
+ SECURITY_INIT
+
+ . = ALIGN(4);
+ __tsb_ldquad_phys_patch = .;
+ .tsb_ldquad_phys_patch : {
+ *(.tsb_ldquad_phys_patch)
+ }
+ __tsb_ldquad_phys_patch_end = .;
+
+ __tsb_phys_patch = .;
+ .tsb_phys_patch : {
+ *(.tsb_phys_patch)
+ }
+ __tsb_phys_patch_end = .;
+
+ __cpuid_patch = .;
+ .cpuid_patch : {
+ *(.cpuid_patch)
+ }
+ __cpuid_patch_end = .;
+
+ __sun4v_1insn_patch = .;
+ .sun4v_1insn_patch : {
+ *(.sun4v_1insn_patch)
+ }
+ __sun4v_1insn_patch_end = .;
+ __sun4v_2insn_patch = .;
+ .sun4v_2insn_patch : {
+ *(.sun4v_2insn_patch)
+ }
+ __sun4v_2insn_patch_end = .;
#ifdef CONFIG_BLK_DEV_INITRD
- . = ALIGN(8192);
- __initramfs_start = .;
- .init.ramfs : { *(.init.ramfs) }
- __initramfs_end = .;
+ . = ALIGN(8192);
+ __initramfs_start = .;
+ .init.ramfs : {
+ *(.init.ramfs)
+ }
+ __initramfs_end = .;
#endif
- . = ALIGN(8192);
- __per_cpu_start = .;
- .data.percpu : { *(.data.percpu) }
- __per_cpu_end = .;
- . = ALIGN(8192);
- __init_end = .;
- __bss_start = .;
- .sbss : { *(.sbss) *(.scommon) }
- .bss :
- {
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
- /DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) }
-
- STABS_DEBUG
-
- DWARF_DEBUG
+ . = ALIGN(8192);
+ __per_cpu_start = .;
+ .data.percpu : {
+ *(.data.percpu)
+ }
+ __per_cpu_end = .;
+ . = ALIGN(8192);
+ __init_end = .;
+
+ __bss_start = .;
+ .sbss : {
+ *(.sbss)
+ *(.scommon)
+ }
+ .bss : {
+ *(.dynbss)
+ *(.bss)
+ *(COMMON)
+ }
+ _end = . ;
+ PROVIDE (end = .);
+
+ /DISCARD/ : {
+ *(.exit.text)
+ *(.exit.data)
+ *(.exitcall.exit)
+ }
+
+ STABS_DEBUG
+ DWARF_DEBUG
}
--
1.5.1.rc3.20.gaa453
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH 1/5] sparc64: ident vmlinux.lds.S
@ 2007-05-24 20:10 ` Sam Ravnborg
0 siblings, 0 replies; 18+ messages in thread
From: Sam Ravnborg @ 2007-05-24 20:10 UTC (permalink / raw)
To: David Miller, linux-arch, sparclinux, LKML
This introduce a style similar to C code.
No functional changes.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
arch/sparc64/kernel/vmlinux.lds.S | 239 ++++++++++++++++++++++---------------
1 files changed, 142 insertions(+), 97 deletions(-)
diff --git a/arch/sparc64/kernel/vmlinux.lds.S b/arch/sparc64/kernel/vmlinux.lds.S
index fb648de..6f924fd 100644
--- a/arch/sparc64/kernel/vmlinux.lds.S
+++ b/arch/sparc64/kernel/vmlinux.lds.S
@@ -9,105 +9,150 @@ ENTRY(_start)
jiffies = jiffies_64;
SECTIONS
{
- swapper_low_pmd_dir = 0x0000000000402000;
- . = 0x4000;
- .text 0x0000000000404000 :
- {
- _text = .;
- TEXT_TEXT
- SCHED_TEXT
- LOCK_TEXT
- KPROBES_TEXT
- *(.gnu.warning)
- } =0
- _etext = .;
- PROVIDE (etext = .);
-
- RODATA
-
- .data :
- {
- DATA_DATA
- CONSTRUCTORS
- }
- .data1 : { *(.data1) }
- . = ALIGN(64);
- .data.cacheline_aligned : { *(.data.cacheline_aligned) }
- . = ALIGN(64);
- .data.read_mostly : { *(.data.read_mostly) }
- _edata = .;
- PROVIDE (edata = .);
- .fixup : { *(.fixup) }
-
- . = ALIGN(16);
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(8192);
- __init_begin = .;
- .init.text : {
- _sinittext = .;
- *(.init.text)
- _einittext = .;
- }
- .init.data : { *(.init.data) }
- . = ALIGN(16);
- __setup_start = .;
- .init.setup : { *(.init.setup) }
- __setup_end = .;
- __initcall_start = .;
- .initcall.init : {
- INITCALLS
- }
- __initcall_end = .;
- __con_initcall_start = .;
- .con_initcall.init : { *(.con_initcall.init) }
- __con_initcall_end = .;
- SECURITY_INIT
- . = ALIGN(4);
- __tsb_ldquad_phys_patch = .;
- .tsb_ldquad_phys_patch : { *(.tsb_ldquad_phys_patch) }
- __tsb_ldquad_phys_patch_end = .;
- __tsb_phys_patch = .;
- .tsb_phys_patch : { *(.tsb_phys_patch) }
- __tsb_phys_patch_end = .;
- __cpuid_patch = .;
- .cpuid_patch : { *(.cpuid_patch) }
- __cpuid_patch_end = .;
- __sun4v_1insn_patch = .;
- .sun4v_1insn_patch : { *(.sun4v_1insn_patch) }
- __sun4v_1insn_patch_end = .;
- __sun4v_2insn_patch = .;
- .sun4v_2insn_patch : { *(.sun4v_2insn_patch) }
- __sun4v_2insn_patch_end = .;
+ swapper_low_pmd_dir = 0x0000000000402000;
+ . = 0x4000;
+ .text 0x0000000000404000 : {
+ _text = .;
+ TEXT_TEXT
+ SCHED_TEXT
+ LOCK_TEXT
+ KPROBES_TEXT
+ *(.gnu.warning)
+ } =0
+ _etext = .;
+ PROVIDE (etext = .);
+
+ RODATA
+
+ .data : {
+ DATA_DATA
+ CONSTRUCTORS
+ }
+ .data1 : {
+ *(.data1)
+ }
+
+ . = ALIGN(64);
+ .data.cacheline_aligned : {
+ *(.data.cacheline_aligned)
+ }
+
+ . = ALIGN(64);
+ .data.read_mostly : {
+ *(.data.read_mostly)
+ }
+ _edata = .;
+ PROVIDE (edata = .);
+ .fixup : {
+ *(.fixup)
+ }
+
+ . = ALIGN(16);
+ __start___ex_table = .;
+ __ex_table : {
+ *(__ex_table)
+ }
+ __stop___ex_table = .;
+
+ . = ALIGN(8192);
+ __init_begin = .;
+ .init.text : {
+ _sinittext = .;
+ *(.init.text)
+ _einittext = .;
+ }
+
+ .init.data : {
+ *(.init.data)
+ }
+
+ . = ALIGN(16);
+ __setup_start = .;
+ .init.setup : {
+ *(.init.setup)
+ }
+ __setup_end = .;
+
+ __initcall_start = .;
+ .initcall.init : {
+ INITCALLS
+ }
+ __initcall_end = .;
+
+ __con_initcall_start = .;
+ .con_initcall.init : {
+ *(.con_initcall.init)
+ }
+ __con_initcall_end = .;
+ SECURITY_INIT
+
+ . = ALIGN(4);
+ __tsb_ldquad_phys_patch = .;
+ .tsb_ldquad_phys_patch : {
+ *(.tsb_ldquad_phys_patch)
+ }
+ __tsb_ldquad_phys_patch_end = .;
+
+ __tsb_phys_patch = .;
+ .tsb_phys_patch : {
+ *(.tsb_phys_patch)
+ }
+ __tsb_phys_patch_end = .;
+
+ __cpuid_patch = .;
+ .cpuid_patch : {
+ *(.cpuid_patch)
+ }
+ __cpuid_patch_end = .;
+
+ __sun4v_1insn_patch = .;
+ .sun4v_1insn_patch : {
+ *(.sun4v_1insn_patch)
+ }
+ __sun4v_1insn_patch_end = .;
+ __sun4v_2insn_patch = .;
+ .sun4v_2insn_patch : {
+ *(.sun4v_2insn_patch)
+ }
+ __sun4v_2insn_patch_end = .;
#ifdef CONFIG_BLK_DEV_INITRD
- . = ALIGN(8192);
- __initramfs_start = .;
- .init.ramfs : { *(.init.ramfs) }
- __initramfs_end = .;
+ . = ALIGN(8192);
+ __initramfs_start = .;
+ .init.ramfs : {
+ *(.init.ramfs)
+ }
+ __initramfs_end = .;
#endif
- . = ALIGN(8192);
- __per_cpu_start = .;
- .data.percpu : { *(.data.percpu) }
- __per_cpu_end = .;
- . = ALIGN(8192);
- __init_end = .;
- __bss_start = .;
- .sbss : { *(.sbss) *(.scommon) }
- .bss :
- {
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
- /DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) }
-
- STABS_DEBUG
-
- DWARF_DEBUG
+ . = ALIGN(8192);
+ __per_cpu_start = .;
+ .data.percpu : {
+ *(.data.percpu)
+ }
+ __per_cpu_end = .;
+ . = ALIGN(8192);
+ __init_end = .;
+
+ __bss_start = .;
+ .sbss : {
+ *(.sbss)
+ *(.scommon)
+ }
+ .bss : {
+ *(.dynbss)
+ *(.bss)
+ *(COMMON)
+ }
+ _end = . ;
+ PROVIDE (end = .);
+
+ /DISCARD/ : {
+ *(.exit.text)
+ *(.exit.data)
+ *(.exitcall.exit)
+ }
+
+ STABS_DEBUG
+ DWARF_DEBUG
}
--
1.5.1.rc3.20.gaa453
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH 2/5] asm-generic: add RO_DATA which take alignment parameter
2007-05-24 20:04 Linker script cleanup / consolidation Sam Ravnborg
@ 2007-05-24 20:11 ` Sam Ravnborg
2007-05-24 20:11 ` Sam Ravnborg
` (3 subsequent siblings)
4 siblings, 0 replies; 18+ messages in thread
From: Sam Ravnborg @ 2007-05-24 20:11 UTC (permalink / raw)
To: David Miller, linux-arch, sparclinux, LKML
RODATA has a hardcoded alignment of 4096 but architectures
may which to decide their optimal alignmnet.
Introduce RO_DATA that takes an alignment parameter.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
include/asm-generic/vmlinux.lds.h | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index 8307b1b..5388c41 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -14,8 +14,8 @@
*(.data) \
*(.data.init.refok)
-#define RODATA \
- . = ALIGN(4096); \
+#define RO_DATA(align) \
+ . = ALIGN((align)); \
.rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__start_rodata) = .; \
*(.rodata) *(.rodata.*) \
@@ -135,7 +135,10 @@
VMLINUX_SYMBOL(__end_rodata) = .; \
} \
\
- . = ALIGN(4096);
+ . = ALIGN((align));
+
+/* for backward compatibility */
+#define RODATA RO_DATA(4096)
#define SECURITY_INIT \
.security_initcall.init : AT(ADDR(.security_initcall.init) - LOAD_OFFSET) { \
--
1.5.1.rc3.20.gaa453
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH 2/5] asm-generic: add RO_DATA which take alignment parameter
@ 2007-05-24 20:11 ` Sam Ravnborg
0 siblings, 0 replies; 18+ messages in thread
From: Sam Ravnborg @ 2007-05-24 20:11 UTC (permalink / raw)
To: David Miller, linux-arch, sparclinux, LKML
RODATA has a hardcoded alignment of 4096 but architectures
may which to decide their optimal alignmnet.
Introduce RO_DATA that takes an alignment parameter.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
include/asm-generic/vmlinux.lds.h | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index 8307b1b..5388c41 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -14,8 +14,8 @@
*(.data) \
*(.data.init.refok)
-#define RODATA \
- . = ALIGN(4096); \
+#define RO_DATA(align) \
+ . = ALIGN((align)); \
.rodata : AT(ADDR(.rodata) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__start_rodata) = .; \
*(.rodata) *(.rodata.*) \
@@ -135,7 +135,10 @@
VMLINUX_SYMBOL(__end_rodata) = .; \
} \
\
- . = ALIGN(4096);
+ . = ALIGN((align));
+
+/* for backward compatibility */
+#define RODATA RO_DATA(4096)
#define SECURITY_INIT \
.security_initcall.init : AT(ADDR(.security_initcall.init) - LOAD_OFFSET) { \
--
1.5.1.rc3.20.gaa453
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH 3/5] sparc64: use PAGE_SIZE in vmlinux.lds
2007-05-24 20:04 Linker script cleanup / consolidation Sam Ravnborg
@ 2007-05-24 20:13 ` Sam Ravnborg
2007-05-24 20:11 ` Sam Ravnborg
` (3 subsequent siblings)
4 siblings, 0 replies; 18+ messages in thread
From: Sam Ravnborg @ 2007-05-24 20:13 UTC (permalink / raw)
To: David Miller, linux-arch, sparclinux, LKML
sparc64 had hardcoded pagesize to 8192 for alignment.
But optimal alignment is PAGE_SIZE so replace harcoded values
with the PAGE_SIZE constant.
Note: PAGE_SIZE differ with configuration so this is a change
in functionality - see page.h
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
arch/sparc64/kernel/vmlinux.lds.S | 11 ++++++-----
1 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/arch/sparc64/kernel/vmlinux.lds.S b/arch/sparc64/kernel/vmlinux.lds.S
index 6f924fd..8559d07 100644
--- a/arch/sparc64/kernel/vmlinux.lds.S
+++ b/arch/sparc64/kernel/vmlinux.lds.S
@@ -1,5 +1,6 @@
/* ld script to make UltraLinux kernel */
+#include <asm/page.h>
#include <asm-generic/vmlinux.lds.h>
OUTPUT_FORMAT("elf64-sparc", "elf64-sparc", "elf64-sparc")
@@ -22,7 +23,7 @@ SECTIONS
_etext = .;
PROVIDE (etext = .);
- RODATA
+ RO_DATA(PAGE_SIZE)
.data : {
DATA_DATA
@@ -54,7 +55,7 @@ SECTIONS
}
__stop___ex_table = .;
- . = ALIGN(8192);
+ . = ALIGN(PAGE_SIZE);
__init_begin = .;
.init.text : {
_sinittext = .;
@@ -117,7 +118,7 @@ SECTIONS
__sun4v_2insn_patch_end = .;
#ifdef CONFIG_BLK_DEV_INITRD
- . = ALIGN(8192);
+ . = ALIGN(PAGE_SIZE);
__initramfs_start = .;
.init.ramfs : {
*(.init.ramfs)
@@ -125,13 +126,13 @@ SECTIONS
__initramfs_end = .;
#endif
- . = ALIGN(8192);
+ . = ALIGN(PAGE_SIZE);
__per_cpu_start = .;
.data.percpu : {
*(.data.percpu)
}
__per_cpu_end = .;
- . = ALIGN(8192);
+ . = ALIGN(PAGE_SIZE);
__init_end = .;
__bss_start = .;
--
1.5.1.rc3.20.gaa453
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH 3/5] sparc64: use PAGE_SIZE in vmlinux.lds
@ 2007-05-24 20:13 ` Sam Ravnborg
0 siblings, 0 replies; 18+ messages in thread
From: Sam Ravnborg @ 2007-05-24 20:13 UTC (permalink / raw)
To: David Miller, linux-arch, sparclinux, LKML
sparc64 had hardcoded pagesize to 8192 for alignment.
But optimal alignment is PAGE_SIZE so replace harcoded values
with the PAGE_SIZE constant.
Note: PAGE_SIZE differ with configuration so this is a change
in functionality - see page.h
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
arch/sparc64/kernel/vmlinux.lds.S | 11 ++++++-----
1 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/arch/sparc64/kernel/vmlinux.lds.S b/arch/sparc64/kernel/vmlinux.lds.S
index 6f924fd..8559d07 100644
--- a/arch/sparc64/kernel/vmlinux.lds.S
+++ b/arch/sparc64/kernel/vmlinux.lds.S
@@ -1,5 +1,6 @@
/* ld script to make UltraLinux kernel */
+#include <asm/page.h>
#include <asm-generic/vmlinux.lds.h>
OUTPUT_FORMAT("elf64-sparc", "elf64-sparc", "elf64-sparc")
@@ -22,7 +23,7 @@ SECTIONS
_etext = .;
PROVIDE (etext = .);
- RODATA
+ RO_DATA(PAGE_SIZE)
.data : {
DATA_DATA
@@ -54,7 +55,7 @@ SECTIONS
}
__stop___ex_table = .;
- . = ALIGN(8192);
+ . = ALIGN(PAGE_SIZE);
__init_begin = .;
.init.text : {
_sinittext = .;
@@ -117,7 +118,7 @@ SECTIONS
__sun4v_2insn_patch_end = .;
#ifdef CONFIG_BLK_DEV_INITRD
- . = ALIGN(8192);
+ . = ALIGN(PAGE_SIZE);
__initramfs_start = .;
.init.ramfs : {
*(.init.ramfs)
@@ -125,13 +126,13 @@ SECTIONS
__initramfs_end = .;
#endif
- . = ALIGN(8192);
+ . = ALIGN(PAGE_SIZE);
__per_cpu_start = .;
.data.percpu : {
*(.data.percpu)
}
__per_cpu_end = .;
- . = ALIGN(8192);
+ . = ALIGN(PAGE_SIZE);
__init_end = .;
__bss_start = .;
--
1.5.1.rc3.20.gaa453
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH/RFC 4/5] asm-generic: add INITRAMFS to vmlinux.lds.h
2007-05-24 20:04 Linker script cleanup / consolidation Sam Ravnborg
@ 2007-05-24 20:14 ` Sam Ravnborg
2007-05-24 20:11 ` Sam Ravnborg
` (3 subsequent siblings)
4 siblings, 0 replies; 18+ messages in thread
From: Sam Ravnborg @ 2007-05-24 20:14 UTC (permalink / raw)
To: David Miller, linux-arch, sparclinux, LKML
Add the definition of initramfs to vmlinux.lds.h
This simplifies arch lds script a bit.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
Is these 8 lines really worth it.
I think yes - but no less than this.
Sam
include/asm-generic/vmlinux.lds.h | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index 5388c41..0e3d2eb 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -140,6 +140,19 @@
/* for backward compatibility */
#define RODATA RO_DATA(4096)
+/* INITRAMFS is used to hold the filesystem used during early boot. */
+#ifdef CONFIG_BLK_DEV_INITRD
+#define INITRAMFS(align) \
+ . = ALIGN((align)); \
+ .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { \
+ VMLINUX_SYMBOL(__initramfs_start) = .; \
+ *(.init.ramfs) \
+ VMLINUX_SYMBOL(__initramfs_end) = .; \
+ }
+#else
+#define INITRAMFS(align)
+#endif
+
#define SECURITY_INIT \
.security_initcall.init : AT(ADDR(.security_initcall.init) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__security_initcall_start) = .; \
--
1.5.1.rc3.20.gaa453
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH/RFC 4/5] asm-generic: add INITRAMFS to vmlinux.lds.h
@ 2007-05-24 20:14 ` Sam Ravnborg
0 siblings, 0 replies; 18+ messages in thread
From: Sam Ravnborg @ 2007-05-24 20:14 UTC (permalink / raw)
To: David Miller, linux-arch, sparclinux, LKML
Add the definition of initramfs to vmlinux.lds.h
This simplifies arch lds script a bit.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
Is these 8 lines really worth it.
I think yes - but no less than this.
Sam
include/asm-generic/vmlinux.lds.h | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index 5388c41..0e3d2eb 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -140,6 +140,19 @@
/* for backward compatibility */
#define RODATA RO_DATA(4096)
+/* INITRAMFS is used to hold the filesystem used during early boot. */
+#ifdef CONFIG_BLK_DEV_INITRD
+#define INITRAMFS(align) \
+ . = ALIGN((align)); \
+ .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { \
+ VMLINUX_SYMBOL(__initramfs_start) = .; \
+ *(.init.ramfs) \
+ VMLINUX_SYMBOL(__initramfs_end) = .; \
+ }
+#else
+#define INITRAMFS(align)
+#endif
+
#define SECURITY_INIT \
.security_initcall.init : AT(ADDR(.security_initcall.init) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__security_initcall_start) = .; \
--
1.5.1.rc3.20.gaa453
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH/RFC 5/5] sparc64: use INITRAMFS in vmlinux.lds.h
2007-05-24 20:04 Linker script cleanup / consolidation Sam Ravnborg
@ 2007-05-24 20:15 ` Sam Ravnborg
2007-05-24 20:11 ` Sam Ravnborg
` (3 subsequent siblings)
4 siblings, 0 replies; 18+ messages in thread
From: Sam Ravnborg @ 2007-05-24 20:15 UTC (permalink / raw)
To: David Miller, linux-arch, sparclinux, LKML
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
arch/sparc64/kernel/vmlinux.lds.S | 9 +--------
1 files changed, 1 insertions(+), 8 deletions(-)
diff --git a/arch/sparc64/kernel/vmlinux.lds.S b/arch/sparc64/kernel/vmlinux.lds.S
index 8559d07..2d6fb93 100644
--- a/arch/sparc64/kernel/vmlinux.lds.S
+++ b/arch/sparc64/kernel/vmlinux.lds.S
@@ -117,14 +117,7 @@ SECTIONS
}
__sun4v_2insn_patch_end = .;
-#ifdef CONFIG_BLK_DEV_INITRD
- . = ALIGN(PAGE_SIZE);
- __initramfs_start = .;
- .init.ramfs : {
- *(.init.ramfs)
- }
- __initramfs_end = .;
-#endif
+ INITRAMFS(PAGE_SIZE)
. = ALIGN(PAGE_SIZE);
__per_cpu_start = .;
--
1.5.1.rc3.20.gaa453
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH/RFC 5/5] sparc64: use INITRAMFS in vmlinux.lds.h
@ 2007-05-24 20:15 ` Sam Ravnborg
0 siblings, 0 replies; 18+ messages in thread
From: Sam Ravnborg @ 2007-05-24 20:15 UTC (permalink / raw)
To: David Miller, linux-arch, sparclinux, LKML
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
arch/sparc64/kernel/vmlinux.lds.S | 9 +--------
1 files changed, 1 insertions(+), 8 deletions(-)
diff --git a/arch/sparc64/kernel/vmlinux.lds.S b/arch/sparc64/kernel/vmlinux.lds.S
index 8559d07..2d6fb93 100644
--- a/arch/sparc64/kernel/vmlinux.lds.S
+++ b/arch/sparc64/kernel/vmlinux.lds.S
@@ -117,14 +117,7 @@ SECTIONS
}
__sun4v_2insn_patch_end = .;
-#ifdef CONFIG_BLK_DEV_INITRD
- . = ALIGN(PAGE_SIZE);
- __initramfs_start = .;
- .init.ramfs : {
- *(.init.ramfs)
- }
- __initramfs_end = .;
-#endif
+ INITRAMFS(PAGE_SIZE)
. = ALIGN(PAGE_SIZE);
__per_cpu_start = .;
--
1.5.1.rc3.20.gaa453
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: Linker script cleanup / consolidation
2007-05-24 20:09 Linker script cleanup / consolidation Sam Ravnborg
@ 2007-05-24 20:45 ` David Miller
2007-05-24 21:15 ` Sam Ravnborg
` (4 subsequent siblings)
5 siblings, 0 replies; 18+ messages in thread
From: David Miller @ 2007-05-24 20:45 UTC (permalink / raw)
To: sparclinux
From: Sam Ravnborg <sam@ravnborg.org>
Date: Thu, 24 May 2007 22:09:34 +0200
> The other archs shall have a similar clean-up over time.
> sparc64 was just a good place to start because David had
> expressed that he liked the consolidation.
This looks great. In fact I'd be happy with you pushing this
now for 2.6.22 in order to fix that RODATA() section alignment
bug.
On a related topic, I've been wondering how to make instruction
patching sections work with initdata without warning. I have
a bunch of assembler patches in the main kernel image that go
something like this:
661: ldx [%g7 + TRAP_PER_CPU_TSB_HUGE], %g5
nop
.section .sun4v_2insn_patch, "ax"
.word 661b
mov SCRATCHPAD_UTSBREG2, %g5
ldxa [%g5] ASI_SCRATCHPAD, %g5
.previous
And then an __init function walks the tables in the
".sun4v_2insn_patch" instruction to patch things as
needed.
I don't need to do this patching in modules or anything
complicated like that, just in the static kernel image.
The problem is if I put one of these patches into __init assembler
code, the modpost.c thing warns. As you can see, these patch sections
in between __init_begin and __init_end.
I see that IA64 has something similar, and they prepend their
patch section names with ".data." would that help me with the
modpost.c warning issue?
The history behind this is that I want to make the assembler in
arch/sparc64/kernel/trampoline.S __init to fix one modpost.c
warning, but once I dod that I hit this patching section issue
which makes more warnings that the original problem :-)
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: Linker script cleanup / consolidation
2007-05-24 20:09 Linker script cleanup / consolidation Sam Ravnborg
2007-05-24 20:45 ` David Miller
@ 2007-05-24 21:15 ` Sam Ravnborg
2007-05-24 21:16 ` David Miller
` (3 subsequent siblings)
5 siblings, 0 replies; 18+ messages in thread
From: Sam Ravnborg @ 2007-05-24 21:15 UTC (permalink / raw)
To: sparclinux
On Thu, May 24, 2007 at 01:45:12PM -0700, David Miller wrote:
> From: Sam Ravnborg <sam@ravnborg.org>
> Date: Thu, 24 May 2007 22:09:34 +0200
>
> > The other archs shall have a similar clean-up over time.
> > sparc64 was just a good place to start because David had
> > expressed that he liked the consolidation.
>
> This looks great. In fact I'd be happy with you pushing this
> now for 2.6.22 in order to fix that RODATA() section alignment
> bug.
I did not write so I realize but since this targets sparc64 I
expected you to apply this to your sparc-2.6.git tree.
But I can push too - just confirm what you expect.
> On a related topic, I've been wondering how to make instruction
Need sleep before composing an answer - bed-time here.
Sam
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: Linker script cleanup / consolidation
2007-05-24 20:09 Linker script cleanup / consolidation Sam Ravnborg
2007-05-24 20:45 ` David Miller
2007-05-24 21:15 ` Sam Ravnborg
@ 2007-05-24 21:16 ` David Miller
2007-05-28 18:53 ` Sam Ravnborg
` (2 subsequent siblings)
5 siblings, 0 replies; 18+ messages in thread
From: David Miller @ 2007-05-24 21:16 UTC (permalink / raw)
To: sparclinux
From: Sam Ravnborg <sam@ravnborg.org>
Date: Thu, 24 May 2007 23:15:11 +0200
> On Thu, May 24, 2007 at 01:45:12PM -0700, David Miller wrote:
> > From: Sam Ravnborg <sam@ravnborg.org>
> > Date: Thu, 24 May 2007 22:09:34 +0200
> >
> > > The other archs shall have a similar clean-up over time.
> > > sparc64 was just a good place to start because David had
> > > expressed that he liked the consolidation.
> >
> > This looks great. In fact I'd be happy with you pushing this
> > now for 2.6.22 in order to fix that RODATA() section alignment
> > bug.
> I did not write so I realize but since this targets sparc64 I
> expected you to apply this to your sparc-2.6.git tree.
> But I can push too - just confirm what you expect.
Please merge this with my signoff added to each patch:
Signed-off-by: David S. Miller <davem@davemloft.net>
I have some bug fixes to move forward I appreciate your taking care of
this.
> > On a related topic, I've been wondering how to make instruction
> Need sleep before composing an answer - bed-time here.
Good night, and thanks for all this work.
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: Linker script cleanup / consolidation
2007-05-24 20:09 Linker script cleanup / consolidation Sam Ravnborg
` (2 preceding siblings ...)
2007-05-24 21:16 ` David Miller
@ 2007-05-28 18:53 ` Sam Ravnborg
2007-05-29 6:00 ` David Miller
2007-05-29 18:41 ` Sam Ravnborg
5 siblings, 0 replies; 18+ messages in thread
From: Sam Ravnborg @ 2007-05-28 18:53 UTC (permalink / raw)
To: sparclinux
>
> On a related topic, I've been wondering how to make instruction
> patching sections work with initdata without warning. I have
> a bunch of assembler patches in the main kernel image that go
> something like this:
>
> 661: ldx [%g7 + TRAP_PER_CPU_TSB_HUGE], %g5
> nop
> .section .sun4v_2insn_patch, "ax"
> .word 661b
> mov SCRATCHPAD_UTSBREG2, %g5
> ldxa [%g5] ASI_SCRATCHPAD, %g5
> .previous
>
> And then an __init function walks the tables in the
> ".sun4v_2insn_patch" instruction to patch things as
> needed.
>
> I don't need to do this patching in modules or anything
> complicated like that, just in the static kernel image.
>
> The problem is if I put one of these patches into __init assembler
> code, the modpost.c thing warns. As you can see, these patch sections
> in between __init_begin and __init_end.
>
> I see that IA64 has something similar, and they prepend their
> patch section names with ".data." would that help me with the
> modpost.c warning issue?
>
> The history behind this is that I want to make the assembler in
> arch/sparc64/kernel/trampoline.S __init to fix one modpost.c
> warning, but once I dod that I hit this patching section issue
> which makes more warnings that the original problem :-)
First off. I tried building a sparc64 kernel from -linus using
defconfig and got no section mismatch warnings.
Building a ia64 kernel now...
What we can do in modpost is to define that references from a certain
section or sections that start with for example ".patch_insn."
to .init.text / .init.data will be ignored.
Avoiding hardcoding ".sun4v_*" would be preferred and maybe
we could move paravirt over to use a section with the same naming
convention.
Trying to cheat modpost is only a source of confusion and thats
not the way to do it.
Sam
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: Linker script cleanup / consolidation
2007-05-24 20:09 Linker script cleanup / consolidation Sam Ravnborg
` (3 preceding siblings ...)
2007-05-28 18:53 ` Sam Ravnborg
@ 2007-05-29 6:00 ` David Miller
2007-05-29 18:41 ` Sam Ravnborg
5 siblings, 0 replies; 18+ messages in thread
From: David Miller @ 2007-05-29 6:00 UTC (permalink / raw)
To: sparclinux
From: Sam Ravnborg <sam@ravnborg.org>
Date: Mon, 28 May 2007 20:53:36 +0200
> First off. I tried building a sparc64 kernel from -linus using
> defconfig and got no section mismatch warnings.
Turn on SMP. :-)
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: Linker script cleanup / consolidation
2007-05-24 20:09 Linker script cleanup / consolidation Sam Ravnborg
` (4 preceding siblings ...)
2007-05-29 6:00 ` David Miller
@ 2007-05-29 18:41 ` Sam Ravnborg
5 siblings, 0 replies; 18+ messages in thread
From: Sam Ravnborg @ 2007-05-29 18:41 UTC (permalink / raw)
To: sparclinux
On Mon, May 28, 2007 at 11:00:29PM -0700, David Miller wrote:
> From: Sam Ravnborg <sam@ravnborg.org>
> Date: Mon, 28 May 2007 20:53:36 +0200
>
> > First off. I tried building a sparc64 kernel from -linus using
> > defconfig and got no section mismatch warnings.
>
> Turn on SMP. :-)
In trampoline.S moved all code to .init.text and got this:
WARNING: arch/sparc64/kernel/built-in.o(.sun4v_1insn_patch+0x8): Section mismatch: reference to .init.text:
WARNING: arch/sparc64/kernel/built-in.o(.sun4v_1insn_patch+0x10): Section mismatch: reference to .init.text:
WARNING: arch/sparc64/kernel/built-in.o(.sun4v_1insn_patch+0x18): Section mismatch: reference to .init.text:
WARNING: arch/sparc64/kernel/built-in.o(.cpuid_patch+0x0): Section mismatch: reference to .init.text:
It is trivial to ignore all references from a section named *_patch to .init.text
But grepping linker script files for all other archs this does not look like
a common namespace.
modpost has today following list of sections that may reference .init.text
without causing a warning:
const char *namelist1[] = {
".init",
".opd", /* see comment [OPD] at exit_section_ref_ok() */
".toc1", /* used by ppc64 */
".stab",
".data.rel.ro", /* used by parisc64 */
".parainstructions",
".text.lock",
"__bug_table", /* used by powerpc for BUG() */
".pci_fixup_header",
".pci_fixup_final",
".pdr",
"__param",
"__ex_table",
".fixup",
".smp_locks",
".plt", /* seen on ARCH=um build on x86_64. Harmless */
"__ftr_fixup", /* powerpc cpu feature fixup */
"__fw_ftr_fixup", /* powerpc firmware feature fixup */
NULL
};
/* Start of section names */
const char *namelist2[] = {
".init.",
".altinstructions",
".eh_frame",
".debug",
".parainstructions",
".rodata",
NULL
So adding a third section that allow references from sections named *_patch is no big deal.
Let me know if you stick to that namespace and I will add it to modpost.
Sam
^ permalink raw reply [flat|nested] 18+ messages in thread