KVM: Use .fixup instead of .text.fixup on __kvm_handle_fault_on_reboot
authorEduardo Habkost <ehabkost@redhat.com>
Tue, 19 Aug 2008 23:00:08 +0000 (20:00 -0300)
committerAvi Kivity <avi@qumranet.com>
Mon, 25 Aug 2008 14:22:57 +0000 (17:22 +0300)
vmlinux.lds expects the fixup code to be on a section named .fixup. The
.text.fixup section is not mentioned on vmlinux.lds, and is included on
the resulting vmlinux (just after .text) only because of ld heuristics on
placing orphan sections.

However, placing .text.fixup outside .text breaks the definition of
_etext, making it exclude the .text.fixup contents. That makes .text.fixup
be ignored by the kernel initialization code that needs to know about
section locations, such as the code setting page protection bits.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
include/asm-x86/kvm_host.h

index 0f3c531146142df89075e4623c36377510c7489e..c2e34c27590066e4cf3359b78c1805d6c02805fc 100644 (file)
@@ -722,7 +722,7 @@ asmlinkage void kvm_handle_fault_on_reboot(void);
 
 #define __kvm_handle_fault_on_reboot(insn) \
        "666: " insn "\n\t" \
-       ".pushsection .text.fixup, \"ax\" \n" \
+       ".pushsection .fixup, \"ax\" \n" \
        "667: \n\t" \
        KVM_EX_PUSH " $666b \n\t" \
        "jmp kvm_handle_fault_on_reboot \n\t" \