KVM: x86: Check kvm_rebooting in kvm_spurious_fault()
Explicitly check kvm_rebooting in kvm_spurious_fault() prior to invoking BUG(), as opposed to assuming the caller has already done so. Letting kvm_spurious_fault() be called "directly" will allow VMX to better optimize its low level assembly flows. As a happy side effect, kvm_spurious_fault() no longer needs to be marked as a dead end since it doesn't unconditionally BUG(). Acked-by: Paolo Bonzini <pbonzini@redhat.com> Cc: Josh Poimboeuf <jpoimboe@redhat.com> Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
90a48843a1
commit
4b526de50e
@ -1534,7 +1534,7 @@ enum {
|
|||||||
#define kvm_arch_vcpu_memslots_id(vcpu) ((vcpu)->arch.hflags & HF_SMM_MASK ? 1 : 0)
|
#define kvm_arch_vcpu_memslots_id(vcpu) ((vcpu)->arch.hflags & HF_SMM_MASK ? 1 : 0)
|
||||||
#define kvm_memslots_for_spte_role(kvm, role) __kvm_memslots(kvm, (role).smm)
|
#define kvm_memslots_for_spte_role(kvm, role) __kvm_memslots(kvm, (role).smm)
|
||||||
|
|
||||||
asmlinkage void __noreturn kvm_spurious_fault(void);
|
asmlinkage void kvm_spurious_fault(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Hardware virtualization extension instructions may fault if a
|
* Hardware virtualization extension instructions may fault if a
|
||||||
|
@ -360,7 +360,8 @@ EXPORT_SYMBOL_GPL(kvm_set_apic_base);
|
|||||||
asmlinkage __visible void kvm_spurious_fault(void)
|
asmlinkage __visible void kvm_spurious_fault(void)
|
||||||
{
|
{
|
||||||
/* Fault while not rebooting. We want the trace. */
|
/* Fault while not rebooting. We want the trace. */
|
||||||
BUG();
|
if (!kvm_rebooting)
|
||||||
|
BUG();
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(kvm_spurious_fault);
|
EXPORT_SYMBOL_GPL(kvm_spurious_fault);
|
||||||
|
|
||||||
|
@ -138,7 +138,6 @@ static bool __dead_end_function(struct objtool_file *file, struct symbol *func,
|
|||||||
"do_task_dead",
|
"do_task_dead",
|
||||||
"__module_put_and_exit",
|
"__module_put_and_exit",
|
||||||
"complete_and_exit",
|
"complete_and_exit",
|
||||||
"kvm_spurious_fault",
|
|
||||||
"__reiserfs_panic",
|
"__reiserfs_panic",
|
||||||
"lbug_with_loc",
|
"lbug_with_loc",
|
||||||
"fortify_panic",
|
"fortify_panic",
|
||||||
|
Loading…
Reference in New Issue
Block a user