]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: x86: Move update_cr8_intercept() to lapic.c
authorSean Christopherson <seanjc@google.com>
Fri, 29 May 2026 22:21:56 +0000 (15:21 -0700)
committerSean Christopherson <seanjc@google.com>
Wed, 3 Jun 2026 12:35:23 +0000 (05:35 -0700)
Move update_cr8_intercept() to lapic.c so that it's globally visible
in anticipation of extracting most of the register-specific code out of
x86.c and into a new compilation unit.  Opportunistically prefix the
helper kvm_lapic_ to make its role/scope more obvious.

No functional change intended.

Reviewed-by: Kai Huang <kai.huang@intel.com>
Reviewed-by: Yosry Ahmed <yosry@kernel.org>
Link: https://patch.msgid.link/20260529222223.870923-14-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/lapic.c
arch/x86/kvm/lapic.h
arch/x86/kvm/x86.c

index d8dbfb107bfb0f83da22fc683bfc5a919cfb9ef4..27cca31308bd6ad4ba183fd4538b19f815d2b235 100644 (file)
@@ -2744,6 +2744,32 @@ u64 kvm_lapic_get_cr8(struct kvm_vcpu *vcpu)
        return (tpr & 0xf0) >> 4;
 }
 
+void kvm_lapic_update_cr8_intercept(struct kvm_vcpu *vcpu)
+{
+       int max_irr, tpr;
+
+       if (!kvm_x86_ops.update_cr8_intercept)
+               return;
+
+       if (!lapic_in_kernel(vcpu))
+               return;
+
+       if (vcpu->arch.apic->apicv_active)
+               return;
+
+       if (!vcpu->arch.apic->vapic_addr)
+               max_irr = kvm_lapic_find_highest_irr(vcpu);
+       else
+               max_irr = -1;
+
+       if (max_irr != -1)
+               max_irr >>= 4;
+
+       tpr = kvm_lapic_get_cr8(vcpu);
+
+       kvm_x86_call(update_cr8_intercept)(vcpu, tpr, max_irr);
+}
+
 static void __kvm_apic_set_base(struct kvm_vcpu *vcpu, u64 value)
 {
        u64 old_value = vcpu->arch.apic_base;
index 274885af4ebc4f97ae9ed9e58528dbc3fc8d11d1..533581d061517dfa49ee590bcb8dbf8badeb7a22 100644 (file)
@@ -100,6 +100,7 @@ int kvm_apic_accept_events(struct kvm_vcpu *vcpu);
 void kvm_lapic_reset(struct kvm_vcpu *vcpu, bool init_event);
 u64 kvm_lapic_get_cr8(struct kvm_vcpu *vcpu);
 void kvm_lapic_set_tpr(struct kvm_vcpu *vcpu, unsigned long cr8);
+void kvm_lapic_update_cr8_intercept(struct kvm_vcpu *vcpu);
 void kvm_lapic_set_eoi(struct kvm_vcpu *vcpu);
 void kvm_apic_set_version(struct kvm_vcpu *vcpu);
 void kvm_apic_after_set_mcg_cap(struct kvm_vcpu *vcpu);
index 58562163155b06626bae915299f2740592742b1e..326ae99db6de43749145cf2b7181611321fcd005 100644 (file)
@@ -128,7 +128,6 @@ static u64 __read_mostly efer_reserved_bits = ~((u64)EFER_SCE);
                                    KVM_X2APIC_ENABLE_SUPPRESS_EOI_BROADCAST    | \
                                    KVM_X2APIC_DISABLE_SUPPRESS_EOI_BROADCAST)
 
-static void update_cr8_intercept(struct kvm_vcpu *vcpu);
 static void process_nmi(struct kvm_vcpu *vcpu);
 static void __kvm_set_rflags(struct kvm_vcpu *vcpu, unsigned long rflags);
 static void store_regs(struct kvm_vcpu *vcpu);
@@ -5341,7 +5340,7 @@ static int kvm_vcpu_ioctl_set_lapic(struct kvm_vcpu *vcpu,
        r = kvm_apic_set_state(vcpu, s);
        if (r)
                return r;
-       update_cr8_intercept(vcpu);
+       kvm_lapic_update_cr8_intercept(vcpu);
 
        return 0;
 }
@@ -10586,33 +10585,6 @@ static void post_kvm_run_save(struct kvm_vcpu *vcpu)
                kvm_run->flags |= KVM_RUN_X86_GUEST_MODE;
 }
 
-static void update_cr8_intercept(struct kvm_vcpu *vcpu)
-{
-       int max_irr, tpr;
-
-       if (!kvm_x86_ops.update_cr8_intercept)
-               return;
-
-       if (!lapic_in_kernel(vcpu))
-               return;
-
-       if (vcpu->arch.apic->apicv_active)
-               return;
-
-       if (!vcpu->arch.apic->vapic_addr)
-               max_irr = kvm_lapic_find_highest_irr(vcpu);
-       else
-               max_irr = -1;
-
-       if (max_irr != -1)
-               max_irr >>= 4;
-
-       tpr = kvm_lapic_get_cr8(vcpu);
-
-       kvm_x86_call(update_cr8_intercept)(vcpu, tpr, max_irr);
-}
-
-
 int kvm_check_nested_events(struct kvm_vcpu *vcpu)
 {
        if (kvm_test_request(KVM_REQ_TRIPLE_FAULT, vcpu)) {
@@ -11353,7 +11325,7 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
                        kvm_x86_call(enable_irq_window)(vcpu);
 
                if (kvm_lapic_enabled(vcpu)) {
-                       update_cr8_intercept(vcpu);
+                       kvm_lapic_update_cr8_intercept(vcpu);
                        kvm_lapic_sync_to_vapic(vcpu);
                }
        }
@@ -12499,7 +12471,7 @@ static int __set_sregs_common(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs,
        kvm_set_segment(vcpu, &sregs->tr, VCPU_SREG_TR);
        kvm_set_segment(vcpu, &sregs->ldt, VCPU_SREG_LDTR);
 
-       update_cr8_intercept(vcpu);
+       kvm_lapic_update_cr8_intercept(vcpu);
 
        /* Older userspace won't unhalt the vcpu on reset. */
        if (kvm_vcpu_is_bsp(vcpu) && kvm_rip_read(vcpu) == 0xfff0 &&