lkml.org 
[lkml]   [2023]   [Mar]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH v2 02/18] x86/reboot: Expose VMCS crash hooks if and only if KVM_INTEL is enabled
    From
    Expose the crash/reboot hooks used by KVM to do VMCLEAR+VMXOFF if and
    only if there's a potential in-tree user, KVM_INTEL.

    Signed-off-by: Sean Christopherson <seanjc@google.com>
    ---
    arch/x86/include/asm/reboot.h | 2 ++
    arch/x86/kernel/reboot.c | 4 ++++
    2 files changed, 6 insertions(+)

    diff --git a/arch/x86/include/asm/reboot.h b/arch/x86/include/asm/reboot.h
    index 2551baec927d..33c8e911e0de 100644
    --- a/arch/x86/include/asm/reboot.h
    +++ b/arch/x86/include/asm/reboot.h
    @@ -25,8 +25,10 @@ void __noreturn machine_real_restart(unsigned int type);
    #define MRR_BIOS 0
    #define MRR_APM 1

    +#if IS_ENABLED(CONFIG_KVM_INTEL)
    typedef void crash_vmclear_fn(void);
    extern crash_vmclear_fn __rcu *crash_vmclear_loaded_vmcss;
    +#endif
    void cpu_emergency_disable_virtualization(void);

    typedef void (*nmi_shootdown_cb)(int, struct pt_regs*);
    diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
    index 299b970e5f82..6c0b1634b884 100644
    --- a/arch/x86/kernel/reboot.c
    +++ b/arch/x86/kernel/reboot.c
    @@ -787,6 +787,7 @@ void machine_crash_shutdown(struct pt_regs *regs)
    }
    #endif

    +#if IS_ENABLED(CONFIG_KVM_INTEL)
    /*
    * This is used to VMCLEAR all VMCSs loaded on the
    * processor. And when loading kvm_intel module, the
    @@ -807,6 +808,7 @@ static inline void cpu_crash_vmclear_loaded_vmcss(void)
    do_vmclear_operation();
    rcu_read_unlock();
    }
    +#endif

    /* This is the CPU performing the emergency shutdown work. */
    int crashing_cpu = -1;
    @@ -818,7 +820,9 @@ int crashing_cpu = -1;
    */
    void cpu_emergency_disable_virtualization(void)
    {
    +#if IS_ENABLED(CONFIG_KVM_INTEL)
    cpu_crash_vmclear_loaded_vmcss();
    +#endif

    cpu_emergency_vmxoff();
    cpu_emergency_svm_disable();
    --
    2.40.0.rc1.284.g88254d51c5-goog
    \
     
     \ /
      Last update: 2023-03-27 00:54    [W:4.087 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site