Commit 59a217ce authored by Sean Christopherson's avatar Sean Christopherson
Browse files

KVM: SVM: Initialize per-CPU svm_data at the end of hardware setup

Setup the per-CPU SVM data structures at the very end of hardware setup so
that svm_hardware_unsetup() can be used in svm_hardware_setup() to unwind
AVIC setup (for the GALog notifier).  Alternatively, the error path could
do an explicit, manual unwind, e.g. by adding a helper to free the per-CPU
structures.  But the per-CPU allocations have no interactions or
dependencies, i.e. can comfortably live at the end, and so converting to
a manual unwind would introduce churn and code without providing any
immediate advantage.

Link: https://patch.msgid.link/20251016190643.80529-2-seanjc@google.com


Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
parent cab4098b
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -5386,12 +5386,6 @@ static __init int svm_hardware_setup(void)

	svm_hv_hardware_setup();

	for_each_possible_cpu(cpu) {
		r = svm_cpu_init(cpu);
		if (r)
			goto err;
	}

	enable_apicv = avic_hardware_setup();
	if (!enable_apicv) {
		enable_ipiv = false;
@@ -5435,6 +5429,13 @@ static __init int svm_hardware_setup(void)
	svm_set_cpu_caps();

	kvm_caps.inapplicable_quirks &= ~KVM_X86_QUIRK_CD_NW_CLEARED;

	for_each_possible_cpu(cpu) {
		r = svm_cpu_init(cpu);
		if (r)
			goto err;
	}

	return 0;

err: