Skip to content

Commit 135b450

Browse files
author
Maxim Levitsky
committed
KVM: x86: Move kvm_set_apic_base() implementation to lapic.c (from x86.c)
JIRA: https://issues.redhat.com/browse/RHEL-71725 commit c9c9acf Author: Sean Christopherson <seanjc@google.com> Date: Fri Nov 1 11:35:51 2024 -0700 KVM: x86: Move kvm_set_apic_base() implementation to lapic.c (from x86.c) Move kvm_set_apic_base() to lapic.c so that the bulk of KVM's local APIC code resides in lapic.c, regardless of whether or not KVM is emulating the local APIC in-kernel. This will also allow making various helpers visible only to lapic.c. No functional change intended. Reviewed-by: Kai Huang <kai.huang@intel.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Link: https://lore.kernel.org/r/20241009181742.1128779-6-seanjc@google.com Link: https://lore.kernel.org/r/20241101183555.1794700-6-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com> Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
1 parent 1bb4e11 commit 135b450

File tree

2 files changed

+21
-21
lines changed

2 files changed

+21
-21
lines changed

arch/x86/kvm/lapic.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2628,6 +2628,27 @@ void kvm_lapic_set_base(struct kvm_vcpu *vcpu, u64 value)
26282628
}
26292629
}
26302630

2631+
int kvm_set_apic_base(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
2632+
{
2633+
enum lapic_mode old_mode = kvm_get_apic_mode(vcpu);
2634+
enum lapic_mode new_mode = kvm_apic_mode(msr_info->data);
2635+
u64 reserved_bits = kvm_vcpu_reserved_gpa_bits_raw(vcpu) | 0x2ff |
2636+
(guest_cpuid_has(vcpu, X86_FEATURE_X2APIC) ? 0 : X2APIC_ENABLE);
2637+
2638+
if ((msr_info->data & reserved_bits) != 0 || new_mode == LAPIC_MODE_INVALID)
2639+
return 1;
2640+
if (!msr_info->host_initiated) {
2641+
if (old_mode == LAPIC_MODE_X2APIC && new_mode == LAPIC_MODE_XAPIC)
2642+
return 1;
2643+
if (old_mode == LAPIC_MODE_DISABLED && new_mode == LAPIC_MODE_X2APIC)
2644+
return 1;
2645+
}
2646+
2647+
kvm_lapic_set_base(vcpu, msr_info->data);
2648+
kvm_recalculate_apic_map(vcpu->kvm);
2649+
return 0;
2650+
}
2651+
26312652
void kvm_apic_update_apicv(struct kvm_vcpu *vcpu)
26322653
{
26332654
struct kvm_lapic *apic = vcpu->arch.apic;

arch/x86/kvm/x86.c

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -667,27 +667,6 @@ static void drop_user_return_notifiers(void)
667667
kvm_on_user_return(&msrs->urn);
668668
}
669669

670-
int kvm_set_apic_base(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
671-
{
672-
enum lapic_mode old_mode = kvm_get_apic_mode(vcpu);
673-
enum lapic_mode new_mode = kvm_apic_mode(msr_info->data);
674-
u64 reserved_bits = kvm_vcpu_reserved_gpa_bits_raw(vcpu) | 0x2ff |
675-
(guest_cpuid_has(vcpu, X86_FEATURE_X2APIC) ? 0 : X2APIC_ENABLE);
676-
677-
if ((msr_info->data & reserved_bits) != 0 || new_mode == LAPIC_MODE_INVALID)
678-
return 1;
679-
if (!msr_info->host_initiated) {
680-
if (old_mode == LAPIC_MODE_X2APIC && new_mode == LAPIC_MODE_XAPIC)
681-
return 1;
682-
if (old_mode == LAPIC_MODE_DISABLED && new_mode == LAPIC_MODE_X2APIC)
683-
return 1;
684-
}
685-
686-
kvm_lapic_set_base(vcpu, msr_info->data);
687-
kvm_recalculate_apic_map(vcpu->kvm);
688-
return 0;
689-
}
690-
691670
/*
692671
* Handle a fault on a hardware virtualization (VMX or SVM) instruction.
693672
*

0 commit comments

Comments
 (0)