On Mon, Mar 13, 2023, Huang, Kai wrote: > On Fri, 2023-03-10 at 13:42 -0800, Sean Christopherson wrote: > > Use the virt callback to disable SVM (and set GIF=1) during an emergency > > instead of blindly attempting to disable SVM.� Like the VMX case, if KVM > > (or an out-of-tree hypervisor) isn't loaded/active, SVM can't be in use. > > > > Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx> > > [...] > > > -#if IS_ENABLED(CONFIG_KVM_INTEL) > > +#if IS_ENABLED(CONFIG_KVM_INTEL) || IS_ENABLED(CONFIG_KVM_AMD) > > �/* RCU-protected callback to disable virtualization prior to reboot. */ > > �static cpu_emergency_virt_cb __rcu *cpu_emergency_virt_callback; > > � > > @@ -821,7 +821,7 @@ int crashing_cpu = -1; > > � */ > > �void cpu_emergency_disable_virtualization(void) > > �{ > > -#if IS_ENABLED(CONFIG_KVM_INTEL) > > +#if IS_ENABLED(CONFIG_KVM_INTEL) || IS_ENABLED(CONFIG_KVM_AMD) > > � cpu_emergency_virt_cb *callback; > > � > > � rcu_read_lock(); > > @@ -830,8 +830,6 @@ void cpu_emergency_disable_virtualization(void) > > � callback(); > > � rcu_read_unlock(); > > �#endif > > - /* KVM_AMD doesn't yet utilize the common callback. */ > > - cpu_emergency_svm_disable(); > > �} > > Shouldn't the callback be always present since you want to consider 'out-of- > tree' hypervisor case? No? The kernel doesn't provide any guarantees for out-of-tree code. I don't have a super strong preference, though I do like the effective documentation the checks provide. Buy more importantly, my understanding is that the x86 maintainers want to limit the exposure for these types of interfaces, e.g. `git grep IS_ENABLED\(CONFIG_KVM` for a variety of hooks that are enabled iff KVM is enabled in the kernel config.