aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/powerpc/include/asm/kvm_host.h1
-rw-r--r--arch/powerpc/kernel/asm-offsets.c1
-rw-r--r--arch/powerpc/kvm/bookehv_interrupts.S4
3 files changed, 6 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
index 855ba4d9539d..562f685d1678 100644
--- a/arch/powerpc/include/asm/kvm_host.h
+++ b/arch/powerpc/include/asm/kvm_host.h
@@ -587,6 +587,7 @@ struct kvm_vcpu_arch {
587 u32 mmucfg; 587 u32 mmucfg;
588 u32 eptcfg; 588 u32 eptcfg;
589 u32 epr; 589 u32 epr;
590 u64 sprg9;
590 u32 pwrmgtcr0; 591 u32 pwrmgtcr0;
591 u32 crit_save; 592 u32 crit_save;
592 /* guest debug registers*/ 593 /* guest debug registers*/
diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c
index 17ffcb4f27f9..ab9ae0411e8f 100644
--- a/arch/powerpc/kernel/asm-offsets.c
+++ b/arch/powerpc/kernel/asm-offsets.c
@@ -668,6 +668,7 @@ int main(void)
668 DEFINE(VCPU_LR, offsetof(struct kvm_vcpu, arch.lr)); 668 DEFINE(VCPU_LR, offsetof(struct kvm_vcpu, arch.lr));
669 DEFINE(VCPU_CTR, offsetof(struct kvm_vcpu, arch.ctr)); 669 DEFINE(VCPU_CTR, offsetof(struct kvm_vcpu, arch.ctr));
670 DEFINE(VCPU_PC, offsetof(struct kvm_vcpu, arch.pc)); 670 DEFINE(VCPU_PC, offsetof(struct kvm_vcpu, arch.pc));
671 DEFINE(VCPU_SPRG9, offsetof(struct kvm_vcpu, arch.sprg9));
671 DEFINE(VCPU_LAST_INST, offsetof(struct kvm_vcpu, arch.last_inst)); 672 DEFINE(VCPU_LAST_INST, offsetof(struct kvm_vcpu, arch.last_inst));
672 DEFINE(VCPU_FAULT_DEAR, offsetof(struct kvm_vcpu, arch.fault_dear)); 673 DEFINE(VCPU_FAULT_DEAR, offsetof(struct kvm_vcpu, arch.fault_dear));
673 DEFINE(VCPU_FAULT_ESR, offsetof(struct kvm_vcpu, arch.fault_esr)); 674 DEFINE(VCPU_FAULT_ESR, offsetof(struct kvm_vcpu, arch.fault_esr));
diff --git a/arch/powerpc/kvm/bookehv_interrupts.S b/arch/powerpc/kvm/bookehv_interrupts.S
index e000b397ece3..b4f8fbafee7a 100644
--- a/arch/powerpc/kvm/bookehv_interrupts.S
+++ b/arch/powerpc/kvm/bookehv_interrupts.S
@@ -398,6 +398,7 @@ _GLOBAL(kvmppc_resume_host)
398#ifdef CONFIG_64BIT 398#ifdef CONFIG_64BIT
399 PPC_LL r3, PACA_SPRG_VDSO(r13) 399 PPC_LL r3, PACA_SPRG_VDSO(r13)
400#endif 400#endif
401 mfspr r5, SPRN_SPRG9
401 PPC_STD(r6, VCPU_SHARED_SPRG4, r11) 402 PPC_STD(r6, VCPU_SHARED_SPRG4, r11)
402 mfspr r8, SPRN_SPRG6 403 mfspr r8, SPRN_SPRG6
403 PPC_STD(r7, VCPU_SHARED_SPRG5, r11) 404 PPC_STD(r7, VCPU_SHARED_SPRG5, r11)
@@ -405,6 +406,7 @@ _GLOBAL(kvmppc_resume_host)
405#ifdef CONFIG_64BIT 406#ifdef CONFIG_64BIT
406 mtspr SPRN_SPRG_VDSO_WRITE, r3 407 mtspr SPRN_SPRG_VDSO_WRITE, r3
407#endif 408#endif
409 PPC_STD(r5, VCPU_SPRG9, r4)
408 PPC_STD(r8, VCPU_SHARED_SPRG6, r11) 410 PPC_STD(r8, VCPU_SHARED_SPRG6, r11)
409 mfxer r3 411 mfxer r3
410 PPC_STD(r9, VCPU_SHARED_SPRG7, r11) 412 PPC_STD(r9, VCPU_SHARED_SPRG7, r11)
@@ -639,7 +641,9 @@ lightweight_exit:
639 mtspr SPRN_SPRG5W, r6 641 mtspr SPRN_SPRG5W, r6
640 PPC_LD(r8, VCPU_SHARED_SPRG7, r11) 642 PPC_LD(r8, VCPU_SHARED_SPRG7, r11)
641 mtspr SPRN_SPRG6W, r7 643 mtspr SPRN_SPRG6W, r7
644 PPC_LD(r5, VCPU_SPRG9, r4)
642 mtspr SPRN_SPRG7W, r8 645 mtspr SPRN_SPRG7W, r8
646 mtspr SPRN_SPRG9, r5
643 647
644 /* Load some guest volatiles. */ 648 /* Load some guest volatiles. */
645 PPC_LL r3, VCPU_LR(r4) 649 PPC_LL r3, VCPU_LR(r4)