|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] x86: reorder .data and .init when linking
commit b4cd59fea0fb93e32517979095be2bd90c71e5fd
Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
AuthorDate: Thu Feb 25 13:06:44 2016 +0100
Commit: Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Thu Feb 25 13:06:44 2016 +0100
x86: reorder .data and .init when linking
In preparation for using superpage mappings, .data and .bss will both want
to
be mapped as read-write. By making them adjacent, they can share the same
superpage and will not require superpage alignment between themselves.
While making this change, fix a latent alignment bug whereby the alignment
for
.bss.stack_aligned was in .init. __init_end only needs page alignment (due
to
being reclaimed after boot), while .bss.stack_aligned really does needs
STACK_SIZE alignment.
Suggested-by: Jan Beulich <jbeulich@xxxxxxxx>
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
xen/arch/x86/xen.lds.S | 63 +++++++++++++++++++++++++-------------------------
1 file changed, 32 insertions(+), 31 deletions(-)
diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S
index a237359..39cd513 100644
--- a/xen/arch/x86/xen.lds.S
+++ b/xen/arch/x86/xen.lds.S
@@ -74,36 +74,6 @@ SECTIONS
#endif
} :text
- . = ALIGN(SMP_CACHE_BYTES);
- .data.read_mostly : {
- /* Exception table */
- __start___ex_table = .;
- *(.ex_table)
- __stop___ex_table = .;
-
- /* Pre-exception table */
- __start___pre_ex_table = .;
- *(.ex_table.pre)
- __stop___pre_ex_table = .;
-
- *(.data.read_mostly)
- . = ALIGN(8);
- __start_schedulers_array = .;
- *(.data.schedulers)
- __end_schedulers_array = .;
- *(.data.rel.ro)
- *(.data.rel.ro.*)
- } :text
-
- .data : { /* Data */
- . = ALIGN(PAGE_SIZE);
- *(.data.page_aligned)
- *(.data)
- *(.data.rel)
- *(.data.rel.*)
- CONSTRUCTORS
- } :text
-
. = ALIGN(PAGE_SIZE); /* Init code and data */
__init_begin = .;
.init.text : {
@@ -164,10 +134,41 @@ SECTIONS
*(.xsm_initcall.init)
__xsm_initcall_end = .;
} :text
- . = ALIGN(STACK_SIZE);
+ . = ALIGN(PAGE_SIZE);
__init_end = .;
+ . = ALIGN(SMP_CACHE_BYTES);
+ .data.read_mostly : {
+ /* Exception table */
+ __start___ex_table = .;
+ *(.ex_table)
+ __stop___ex_table = .;
+
+ /* Pre-exception table */
+ __start___pre_ex_table = .;
+ *(.ex_table.pre)
+ __stop___pre_ex_table = .;
+
+ *(.data.read_mostly)
+ . = ALIGN(8);
+ __start_schedulers_array = .;
+ *(.data.schedulers)
+ __end_schedulers_array = .;
+ *(.data.rel.ro)
+ *(.data.rel.ro.*)
+ } :text
+
+ .data : { /* Data */
+ . = ALIGN(PAGE_SIZE);
+ *(.data.page_aligned)
+ *(.data)
+ *(.data.rel)
+ *(.data.rel.*)
+ CONSTRUCTORS
+ } :text
+
.bss : { /* BSS */
+ . = ALIGN(STACK_SIZE);
__bss_start = .;
*(.bss.stack_aligned)
. = ALIGN(PAGE_SIZE);
--
generated by git-patchbot for /home/xen/git/xen.git#master
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |