mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-09-22 09:34:56 +02:00
KVM: x86: Move update_cr8_intercept() to lapic.c
[ Upstream Commit c7722e5e1d ]
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>
Signed-off-by: Carlos López <clopez@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
9baa2833e6
commit
0d0187a46b
@@ -2754,6 +2754,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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
+3
-31
@@ -126,7 +126,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);
|
||||
@@ -5357,7 +5356,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;
|
||||
}
|
||||
@@ -10565,33 +10564,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)) {
|
||||
@@ -11298,7 +11270,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);
|
||||
}
|
||||
}
|
||||
@@ -12424,7 +12396,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 &&
|
||||
|
||||
Reference in New Issue
Block a user