Commit 0f3b6c48 authored by Nicholas Piggin's avatar Nicholas Piggin Committed by Michael Ellerman
Browse files

KVM: PPC: Book3S HV P9: Juggle SPR switching around



This juggles SPR switching on the entry and exit sides to be more
symmetric, which makes the next refactoring patch possible with no
functional change.

Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20211123095231.1036501-28-npiggin@gmail.com
parent 9dfe7aa7
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -4222,7 +4222,7 @@ static int kvmhv_p9_guest_entry(struct kvm_vcpu *vcpu, u64 time_limit,
		msr = mfmsr(); /* TM restore can update msr */
	}

	switch_pmu_to_guest(vcpu, &host_os_sprs);
	load_spr_state(vcpu, &host_os_sprs);

	load_fp_state(&vcpu->arch.fp);
#ifdef CONFIG_ALTIVEC
@@ -4230,7 +4230,7 @@ static int kvmhv_p9_guest_entry(struct kvm_vcpu *vcpu, u64 time_limit,
#endif
	mtspr(SPRN_VRSAVE, vcpu->arch.vrsave);

	load_spr_state(vcpu, &host_os_sprs);
	switch_pmu_to_guest(vcpu, &host_os_sprs);

	if (kvmhv_on_pseries()) {
		/*
@@ -4330,6 +4330,8 @@ static int kvmhv_p9_guest_entry(struct kvm_vcpu *vcpu, u64 time_limit,
			vcpu->arch.slb_max = 0;
	}

	switch_pmu_to_host(vcpu, &host_os_sprs);

	store_spr_state(vcpu);

	store_fp_state(&vcpu->arch.fp);
@@ -4344,8 +4346,6 @@ static int kvmhv_p9_guest_entry(struct kvm_vcpu *vcpu, u64 time_limit,

	vcpu_vpa_increment_dispatch(vcpu);

	switch_pmu_to_host(vcpu, &host_os_sprs);

	timer_rearm_host_dec(*tb);

	restore_p9_host_os_sprs(vcpu, &host_os_sprs);