diff options
author | Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> | 2007-08-22 17:01:59 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-08-22 22:52:47 -0400 |
commit | 0852ec8cc1ac108344a219dfcab4043f407ddd9a (patch) | |
tree | 7f9541c600c2b3ce9fae8e3a9f1a425fe68dda9f | |
parent | abd96ecb298675a21c412a29f5de2f80174d5f18 (diff) |
Xen i386 xen-head.S fix sections mixup
Xen i386 xen-head.S fix sections mixup
xen-head.S does not come back to the data section, leaving the text section
as current section. It causes problems with a slightly enhanced DEBUG_RODATA
that supports CONFIG_HOTPLUG and bringing a CPU up after the text has been
marked read-only: reference to early_gdt_descr causes a page fault.
Updates:
- It should be using pushsection/popsection.
- Actually, the push/popsections around the ELFNOTEs are redundant; ELFNOTE()
does its own push/popsection to put things into the appropriate .note* section
anyway.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Acked-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Cc: Chris Wright <chrisw@sous-sol.org>
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | arch/i386/xen/xen-head.S | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/i386/xen/xen-head.S b/arch/i386/xen/xen-head.S index bc71f3bc4014..f8d6937db2ec 100644 --- a/arch/i386/xen/xen-head.S +++ b/arch/i386/xen/xen-head.S | |||
@@ -7,20 +7,20 @@ | |||
7 | #include <asm/boot.h> | 7 | #include <asm/boot.h> |
8 | #include <xen/interface/elfnote.h> | 8 | #include <xen/interface/elfnote.h> |
9 | 9 | ||
10 | .section .init.text | 10 | .pushsection .init.text |
11 | ENTRY(startup_xen) | 11 | ENTRY(startup_xen) |
12 | movl %esi,xen_start_info | 12 | movl %esi,xen_start_info |
13 | cld | 13 | cld |
14 | movl $(init_thread_union+THREAD_SIZE),%esp | 14 | movl $(init_thread_union+THREAD_SIZE),%esp |
15 | jmp xen_start_kernel | 15 | jmp xen_start_kernel |
16 | .popsection | ||
16 | 17 | ||
17 | .pushsection ".bss.page_aligned" | 18 | .pushsection .bss.page_aligned |
18 | .align PAGE_SIZE_asm | 19 | .align PAGE_SIZE_asm |
19 | ENTRY(hypercall_page) | 20 | ENTRY(hypercall_page) |
20 | .skip 0x1000 | 21 | .skip 0x1000 |
21 | .popsection | 22 | .popsection |
22 | 23 | ||
23 | .section .text | ||
24 | ELFNOTE(Xen, XEN_ELFNOTE_GUEST_OS, .asciz "linux") | 24 | ELFNOTE(Xen, XEN_ELFNOTE_GUEST_OS, .asciz "linux") |
25 | ELFNOTE(Xen, XEN_ELFNOTE_GUEST_VERSION, .asciz "2.6") | 25 | ELFNOTE(Xen, XEN_ELFNOTE_GUEST_VERSION, .asciz "2.6") |
26 | ELFNOTE(Xen, XEN_ELFNOTE_XEN_VERSION, .asciz "xen-3.0") | 26 | ELFNOTE(Xen, XEN_ELFNOTE_XEN_VERSION, .asciz "xen-3.0") |