diff options
| -rw-r--r-- | arch/arm64/kvm/hyp.S | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/arm64/kvm/hyp.S b/arch/arm64/kvm/hyp.S index ce70817a9223..86c289832272 100644 --- a/arch/arm64/kvm/hyp.S +++ b/arch/arm64/kvm/hyp.S | |||
| @@ -864,6 +864,10 @@ ENTRY(__kvm_flush_vm_context) | |||
| 864 | ENDPROC(__kvm_flush_vm_context) | 864 | ENDPROC(__kvm_flush_vm_context) |
| 865 | 865 | ||
| 866 | __kvm_hyp_panic: | 866 | __kvm_hyp_panic: |
| 867 | // Stash PAR_EL1 before corrupting it in __restore_sysregs | ||
| 868 | mrs x0, par_el1 | ||
| 869 | push x0, xzr | ||
| 870 | |||
| 867 | // Guess the context by looking at VTTBR: | 871 | // Guess the context by looking at VTTBR: |
| 868 | // If zero, then we're already a host. | 872 | // If zero, then we're already a host. |
| 869 | // Otherwise restore a minimal host context before panicing. | 873 | // Otherwise restore a minimal host context before panicing. |
| @@ -898,7 +902,7 @@ __kvm_hyp_panic: | |||
| 898 | mrs x3, esr_el2 | 902 | mrs x3, esr_el2 |
| 899 | mrs x4, far_el2 | 903 | mrs x4, far_el2 |
| 900 | mrs x5, hpfar_el2 | 904 | mrs x5, hpfar_el2 |
| 901 | mrs x6, par_el1 | 905 | pop x6, xzr // active context PAR_EL1 |
| 902 | mrs x7, tpidr_el2 | 906 | mrs x7, tpidr_el2 |
| 903 | 907 | ||
| 904 | mov lr, #(PSR_F_BIT | PSR_I_BIT | PSR_A_BIT | PSR_D_BIT |\ | 908 | mov lr, #(PSR_F_BIT | PSR_I_BIT | PSR_A_BIT | PSR_D_BIT |\ |
