Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 99e99d19 authored by Bharat Bhushan's avatar Bharat Bhushan Committed by Alexander Graf
Browse files

kvm: ppc: bookehv: Save restore SPRN_SPRG9 on guest entry exit



SPRN_SPRG is used by debug interrupt handler, so this is required for
debug support.

Signed-off-by: default avatarBharat Bhushan <Bharat.Bhushan@freescale.com>
Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
parent f5250471
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -587,6 +587,7 @@ struct kvm_vcpu_arch {
	u32 mmucfg;
	u32 eptcfg;
	u32 epr;
	u64 sprg9;
	u32 pwrmgtcr0;
	u32 crit_save;
	/* guest debug registers*/
+1 −0
Original line number Diff line number Diff line
@@ -668,6 +668,7 @@ int main(void)
	DEFINE(VCPU_LR, offsetof(struct kvm_vcpu, arch.lr));
	DEFINE(VCPU_CTR, offsetof(struct kvm_vcpu, arch.ctr));
	DEFINE(VCPU_PC, offsetof(struct kvm_vcpu, arch.pc));
	DEFINE(VCPU_SPRG9, offsetof(struct kvm_vcpu, arch.sprg9));
	DEFINE(VCPU_LAST_INST, offsetof(struct kvm_vcpu, arch.last_inst));
	DEFINE(VCPU_FAULT_DEAR, offsetof(struct kvm_vcpu, arch.fault_dear));
	DEFINE(VCPU_FAULT_ESR, offsetof(struct kvm_vcpu, arch.fault_esr));
+4 −0
Original line number Diff line number Diff line
@@ -398,6 +398,7 @@ _GLOBAL(kvmppc_resume_host)
#ifdef CONFIG_64BIT
	PPC_LL	r3, PACA_SPRG_VDSO(r13)
#endif
	mfspr	r5, SPRN_SPRG9
	PPC_STD(r6, VCPU_SHARED_SPRG4, r11)
	mfspr	r8, SPRN_SPRG6
	PPC_STD(r7, VCPU_SHARED_SPRG5, r11)
@@ -405,6 +406,7 @@ _GLOBAL(kvmppc_resume_host)
#ifdef CONFIG_64BIT
	mtspr	SPRN_SPRG_VDSO_WRITE, r3
#endif
	PPC_STD(r5, VCPU_SPRG9, r4)
	PPC_STD(r8, VCPU_SHARED_SPRG6, r11)
	mfxer	r3
	PPC_STD(r9, VCPU_SHARED_SPRG7, r11)
@@ -639,7 +641,9 @@ lightweight_exit:
	mtspr	SPRN_SPRG5W, r6
	PPC_LD(r8, VCPU_SHARED_SPRG7, r11)
	mtspr	SPRN_SPRG6W, r7
	PPC_LD(r5, VCPU_SPRG9, r4)
	mtspr	SPRN_SPRG7W, r8
	mtspr	SPRN_SPRG9, r5

	/* Load some guest volatiles. */
	PPC_LL	r3, VCPU_LR(r4)