Xen i386 xen-head.S fix sections mixup
PATCH 1/1 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.
It applies on 2.6.22-rc2-mm2.
--- arch/i386/xen/xen-head.S | 2 ++ 1 file changed, 2 insertions(+)
arch/i386/xen/xen-head.S +2 -0
@@ -13,6 +13,7 @@ ENTRY(startup_xen) cld movl $(init_thread_union+THREAD_SIZE),%esp jmp xen_start_kernel + .previous .pushsection ".bss.page_aligned" .align PAGE_SIZE_asm
@@ -34,5 +35,6 @@ ENTRY(hypercall_page) ELFNOTE(Xen, XEN_ELFNOTE_PAE_MODE, .asciz "no") #endif ELFNOTE(Xen, XEN_ELFNOTE_LOADER, .asciz "generic") + .previous #endif /*CONFIG_XEN */
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
Quoted 7 lines · Mathieu Desnoyers
Xen i386
xen-head.Sfix sections mixup
xen-head.Sdoes not come back to the data section, leaving the text section as current section. It causes problems with a slightly enhancedDEBUG_RODATAthat supportsCONFIG_HOTPLUGand bringing a CPU up after the text has been marked read-only: reference toearly_gdt_descrcauses a page fault.
Thanks. It should be using pushsection/popsection.
J
PATCH 1/1 Xen i386 xen-head.S fix sections mixup (updated)
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.
Update:
It should be using pushsection/popsection.
--- arch/i386/xen/xen-head.S | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
arch/i386/xen/xen-head.S +5 -3
@@ -7,20 +7,21 @@ #include <asm/boot.h> #include <xen/interface/elfnote.h> - .section .init.text +.pushsection .init.text ENTRY(startup_xen) movl %esi,xen_start_info cld movl $(init_thread_union+THREAD_SIZE),%esp jmp xen_start_kernel +.popsection -.pushsection ".bss.page_aligned" +.pushsection .bss.page_aligned .align PAGE_SIZE_asm ENTRY(hypercall_page) .skip 0x1000 .popsection - .section .text +.pushsection .text ELFNOTE(Xen, XEN_ELFNOTE_GUEST_OS, .asciz "linux") ELFNOTE(Xen, XEN_ELFNOTE_GUEST_VERSION, .asciz "2.6") ELFNOTE(Xen, XEN_ELFNOTE_XEN_VERSION, .asciz "xen-3.0")
@@ -34,5 +35,6 @@ ENTRY(hypercall_page) ELFNOTE(Xen, XEN_ELFNOTE_PAE_MODE, .asciz "no") #endif ELFNOTE(Xen, XEN_ELFNOTE_LOADER, .asciz "generic") +.popsection #endif /*CONFIG_XEN */
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
Re: [PATCH] Xen i386 xen-head.S fix sections mixup (updated)
Quoted 11 lines · Mathieu Desnoyers
Xen i386
xen-head.Sfix sections mixup
xen-head.Sdoes not come back to the data section, leaving the text section as current section. It causes problems with a slightly enhancedDEBUG_RODATAthat supportsCONFIG_HOTPLUGand bringing a CPU up after the text has been marked read-only: reference toearly_gdt_descrcauses a page fault.Update:
It should be using pushsection/popsection.
Looks good, with one caveat below.
arch/i386/xen/xen-head.S ENTRY(hypercall_page) · line 39
Quoted 11 lines
arch/i386/xen/xen-head.S +2
-1- .section .text +.pushsection .text ELFNOTE(Xen, XEN_ELFNOTE_GUEST_OS, .asciz "linux") ELFNOTE(Xen, XEN_ELFNOTE_GUEST_VERSION, .asciz "2.6") ELFNOTE(Xen, XEN_ELFNOTE_XEN_VERSION, .asciz "xen-3.0")@@ -34,5 +35,6 @@ ENTRY(hypercall_page) ELFNOTE(Xen, XEN_ELFNOTE_PAE_MODE, .asciz "no") #endif ELFNOTE(Xen, XEN_ELFNOTE_LOADER, .asciz "generic") +.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.
J
PATCH 1/1 Xen i386 xen-head.S fix sections mixup (update 2)
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.
--- arch/i386/xen/xen-head.S | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
arch/i386/xen/xen-head.S +3 -3
@@ -7,20 +7,20 @@ #include <asm/boot.h> #include <xen/interface/elfnote.h> - .section .init.text +.pushsection .init.text ENTRY(startup_xen) movl %esi,xen_start_info cld movl $(init_thread_union+THREAD_SIZE),%esp jmp xen_start_kernel +.popsection -.pushsection ".bss.page_aligned" +.pushsection .bss.page_aligned .align PAGE_SIZE_asm ENTRY(hypercall_page) .skip 0x1000 .popsection - .section .text ELFNOTE(Xen, XEN_ELFNOTE_GUEST_OS, .asciz "linux") ELFNOTE(Xen, XEN_ELFNOTE_GUEST_VERSION, .asciz "2.6") ELFNOTE(Xen, XEN_ELFNOTE_XEN_VERSION, .asciz "xen-3.0")
Signature · 3 lines
Mathieu Desnoyers Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68