mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 04:23:35 +02:00
KVM: SVM: Update "APICv in x2APIC without x2AVIC" in avic.c, not svm.c
Set the "allow_apicv_in_x2apic_without_x2apic_virtualization" flag as part of avic_hardware_setup() instead of handling in svm_hardware_setup(), and make x2avic_enabled local to avic.c (setting the flag was the only use in svm.c). Tag avic_hardware_setup() with __init as necessary (it should have been tagged __init long ago). No functional change intended (aside from the side effects of tagging avic_hardware_setup() with __init). Acked-by: Naveen N Rao (AMD) <naveen@kernel.org> Tested-by: Naveen N Rao (AMD) <naveen@kernel.org> Link: https://lore.kernel.org/r/20250919215934.1590410-4-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
parent
eb44ea6a7a
commit
a9095e4fc4
|
|
@ -77,7 +77,7 @@ static DEFINE_HASHTABLE(svm_vm_data_hash, SVM_VM_DATA_HASH_BITS);
|
|||
static u32 next_vm_id = 0;
|
||||
static bool next_vm_id_wrapped = 0;
|
||||
static DEFINE_SPINLOCK(svm_vm_data_hash_lock);
|
||||
bool x2avic_enabled;
|
||||
static bool x2avic_enabled;
|
||||
|
||||
|
||||
static void avic_set_x2apic_msr_interception(struct vcpu_svm *svm,
|
||||
|
|
@ -1147,7 +1147,7 @@ void avic_vcpu_unblocking(struct kvm_vcpu *vcpu)
|
|||
* - Hypervisor can support both xAVIC and x2AVIC in the same guest.
|
||||
* - The mode can be switched at run-time.
|
||||
*/
|
||||
bool avic_hardware_setup(void)
|
||||
bool __init avic_hardware_setup(void)
|
||||
{
|
||||
if (!npt_enabled)
|
||||
return false;
|
||||
|
|
@ -1182,6 +1182,8 @@ bool avic_hardware_setup(void)
|
|||
x2avic_enabled = boot_cpu_has(X86_FEATURE_X2AVIC);
|
||||
if (x2avic_enabled)
|
||||
pr_info("x2AVIC enabled\n");
|
||||
else
|
||||
svm_x86_ops.allow_apicv_in_x2apic_without_x2apic_virtualization = true;
|
||||
|
||||
/*
|
||||
* Disable IPI virtualization for AMD Family 17h CPUs (Zen1 and Zen2)
|
||||
|
|
|
|||
|
|
@ -5337,8 +5337,6 @@ static __init int svm_hardware_setup(void)
|
|||
svm_x86_ops.vcpu_blocking = NULL;
|
||||
svm_x86_ops.vcpu_unblocking = NULL;
|
||||
svm_x86_ops.vcpu_get_apicv_inhibit_reasons = NULL;
|
||||
} else if (!x2avic_enabled) {
|
||||
svm_x86_ops.allow_apicv_in_x2apic_without_x2apic_virtualization = true;
|
||||
}
|
||||
|
||||
if (vls) {
|
||||
|
|
|
|||
|
|
@ -48,7 +48,6 @@ extern bool npt_enabled;
|
|||
extern int nrips;
|
||||
extern int vgif;
|
||||
extern bool intercept_smi;
|
||||
extern bool x2avic_enabled;
|
||||
extern bool vnmi;
|
||||
extern int lbrv;
|
||||
|
||||
|
|
@ -804,7 +803,7 @@ extern struct kvm_x86_nested_ops svm_nested_ops;
|
|||
BIT(APICV_INHIBIT_REASON_PHYSICAL_ID_TOO_BIG) \
|
||||
)
|
||||
|
||||
bool avic_hardware_setup(void);
|
||||
bool __init avic_hardware_setup(void);
|
||||
int avic_ga_log_notifier(u32 ga_tag);
|
||||
void avic_vm_destroy(struct kvm *kvm);
|
||||
int avic_vm_init(struct kvm *kvm);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user