KVM: x86: do not define SMM-related constants if SMM disabled
authorPaolo Bonzini <pbonzini@redhat.com>
Mon, 7 Nov 2022 15:11:42 +0000 (10:11 -0500)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 9 Nov 2022 17:31:21 +0000 (12:31 -0500)
The hidden processor flags HF_SMM_MASK and HF_SMM_INSIDE_NMI_MASK
are not needed if CONFIG_KVM_SMM is turned off.  Remove the
definitions altogether and the code that uses them.

Suggested-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/kvm_emulate.h
arch/x86/kvm/smm.c
arch/x86/kvm/x86.c

index 24a2152a77cd002656642bf148c3df41355a348a..e9862eaac43b8d75ddbe7b6b68c46ebdff52627c 100644 (file)
@@ -1997,10 +1997,11 @@ enum {
 #define HF_NMI_MASK            (1 << 3)
 #define HF_IRET_MASK           (1 << 4)
 #define HF_GUEST_MASK          (1 << 5) /* VCPU is in guest-mode */
+
+#ifdef CONFIG_KVM_SMM
 #define HF_SMM_MASK            (1 << 6)
 #define HF_SMM_INSIDE_NMI_MASK (1 << 7)
 
-#ifdef CONFIG_KVM_SMM
 # define __KVM_VCPU_MULTIPLE_ADDRESS_SPACE
 # define KVM_ADDRESS_SPACE_NUM 2
 # define kvm_arch_vcpu_memslots_id(vcpu) ((vcpu)->arch.hflags & HF_SMM_MASK ? 1 : 0)
index 84b1f2661463055399ae0f0cb42e42bb512ff701..2d9662be8333781c8851cd779869b680bd39b1b1 100644 (file)
@@ -278,7 +278,6 @@ enum x86emul_mode {
 /* These match some of the HF_* flags defined in kvm_host.h  */
 #define X86EMUL_GUEST_MASK           (1 << 5) /* VCPU is in guest-mode */
 #define X86EMUL_SMM_MASK             (1 << 6)
-#define X86EMUL_SMM_INSIDE_NMI_MASK  (1 << 7)
 
 /*
  * fastop functions are declared as taking a never-defined fastop parameter,
index 102ecb85256400d5d8fe2f8fec49cb820ce4d81d..d9cf104ad94f502dc8403574f18cc83c2a6528b7 100644 (file)
@@ -10,6 +10,8 @@
 
 void kvm_smm_changed(struct kvm_vcpu *vcpu, bool entering_smm)
 {
+       BUILD_BUG_ON(HF_SMM_MASK != X86EMUL_SMM_MASK);
+
        trace_kvm_smm_transition(vcpu->vcpu_id, vcpu->arch.smbase, entering_smm);
 
        if (entering_smm) {
index 84aa51613e4f5a98a9636ff3427a014b377704ff..cbec2e675c18f90e935ad642441641f0db8814bb 100644 (file)
@@ -5093,10 +5093,12 @@ static void kvm_vcpu_ioctl_x86_get_vcpu_events(struct kvm_vcpu *vcpu,
 
        /* events->sipi_vector is never valid when reporting to user space */
 
+#ifdef CONFIG_KVM_SMM
        events->smi.smm = is_smm(vcpu);
        events->smi.pending = vcpu->arch.smi_pending;
        events->smi.smm_inside_nmi =
                !!(vcpu->arch.hflags & HF_SMM_INSIDE_NMI_MASK);
+#endif
        events->smi.latched_init = kvm_lapic_latched_init(vcpu);
 
        events->flags = (KVM_VCPUEVENT_VALID_NMI_PENDING
@@ -8267,8 +8269,6 @@ static void init_emulate_ctxt(struct kvm_vcpu *vcpu)
                     cs_db                              ? X86EMUL_MODE_PROT32 :
                                                          X86EMUL_MODE_PROT16;
        BUILD_BUG_ON(HF_GUEST_MASK != X86EMUL_GUEST_MASK);
-       BUILD_BUG_ON(HF_SMM_MASK != X86EMUL_SMM_MASK);
-       BUILD_BUG_ON(HF_SMM_INSIDE_NMI_MASK != X86EMUL_SMM_INSIDE_NMI_MASK);
 
        ctxt->interruptibility = 0;
        ctxt->have_exception = false;