]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - arch/arm64/kvm/hyp/sysreg-sr.c
Merge branch 'for-4.8/core' of git://git.kernel.dk/linux-block
[karo-tx-linux.git] / arch / arm64 / kvm / hyp / sysreg-sr.c
index 0f7c40eb3f53f9014ad43f16963cf426611bdeb7..9341376478370a836c55ede6fb0a8f17481bdd14 100644 (file)
@@ -27,8 +27,8 @@ static void __hyp_text __sysreg_do_nothing(struct kvm_cpu_context *ctxt) { }
 /*
  * Non-VHE: Both host and guest must save everything.
  *
- * VHE: Host must save tpidr*_el[01], actlr_el1, sp0, pc, pstate, and
- * guest must save everything.
+ * VHE: Host must save tpidr*_el[01], actlr_el1, mdscr_el1, sp0, pc,
+ * pstate, and guest must save everything.
  */
 
 static void __hyp_text __sysreg_save_common_state(struct kvm_cpu_context *ctxt)
@@ -37,6 +37,7 @@ static void __hyp_text __sysreg_save_common_state(struct kvm_cpu_context *ctxt)
        ctxt->sys_regs[TPIDR_EL0]       = read_sysreg(tpidr_el0);
        ctxt->sys_regs[TPIDRRO_EL0]     = read_sysreg(tpidrro_el0);
        ctxt->sys_regs[TPIDR_EL1]       = read_sysreg(tpidr_el1);
+       ctxt->sys_regs[MDSCR_EL1]       = read_sysreg(mdscr_el1);
        ctxt->gp_regs.regs.sp           = read_sysreg(sp_el0);
        ctxt->gp_regs.regs.pc           = read_sysreg_el2(elr);
        ctxt->gp_regs.regs.pstate       = read_sysreg_el2(spsr);
@@ -61,7 +62,6 @@ static void __hyp_text __sysreg_save_state(struct kvm_cpu_context *ctxt)
        ctxt->sys_regs[AMAIR_EL1]       = read_sysreg_el1(amair);
        ctxt->sys_regs[CNTKCTL_EL1]     = read_sysreg_el1(cntkctl);
        ctxt->sys_regs[PAR_EL1]         = read_sysreg(par_el1);
-       ctxt->sys_regs[MDSCR_EL1]       = read_sysreg(mdscr_el1);
 
        ctxt->gp_regs.sp_el1            = read_sysreg(sp_el1);
        ctxt->gp_regs.elr_el1           = read_sysreg_el1(elr);
@@ -90,6 +90,7 @@ static void __hyp_text __sysreg_restore_common_state(struct kvm_cpu_context *ctx
        write_sysreg(ctxt->sys_regs[TPIDR_EL0],   tpidr_el0);
        write_sysreg(ctxt->sys_regs[TPIDRRO_EL0], tpidrro_el0);
        write_sysreg(ctxt->sys_regs[TPIDR_EL1],   tpidr_el1);
+       write_sysreg(ctxt->sys_regs[MDSCR_EL1],   mdscr_el1);
        write_sysreg(ctxt->gp_regs.regs.sp,       sp_el0);
        write_sysreg_el2(ctxt->gp_regs.regs.pc,   elr);
        write_sysreg_el2(ctxt->gp_regs.regs.pstate, spsr);
@@ -114,7 +115,6 @@ static void __hyp_text __sysreg_restore_state(struct kvm_cpu_context *ctxt)
        write_sysreg_el1(ctxt->sys_regs[AMAIR_EL1],     amair);
        write_sysreg_el1(ctxt->sys_regs[CNTKCTL_EL1],   cntkctl);
        write_sysreg(ctxt->sys_regs[PAR_EL1],           par_el1);
-       write_sysreg(ctxt->sys_regs[MDSCR_EL1],         mdscr_el1);
 
        write_sysreg(ctxt->gp_regs.sp_el1,              sp_el1);
        write_sysreg_el1(ctxt->gp_regs.elr_el1,         elr);