mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
KVM: x86: Move update_cr8_intercept() to lapic.c
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>
This commit is contained in:
parent
879fffc094
commit
c7722e5e1d
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 &&
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user