mirror of
https://github.com/nxp-imx/linux-imx.git
synced 2025-07-07 09:55:19 +02:00
Revert "FROMLIST: KVM: arm64: Fix clobbered ELR in sync abort/SError"
Revert submission 3081516 Reason for revert: Cherry-picking corresponding FROMGIT commit Reverted changes: /q/submissionid:3081516 Change-Id: I8d1e41011679eaf22fca5f32c82d39bfd22847fd Signed-off-by: Pierre-Clément Tosi <ptosi@google.com>
This commit is contained in:
parent
0bbdca2ec5
commit
30068fa327
|
@ -130,7 +130,6 @@ int main(void)
|
||||||
DEFINE(VCPU_FAULT_DISR, offsetof(struct kvm_vcpu, arch.fault.disr_el1));
|
DEFINE(VCPU_FAULT_DISR, offsetof(struct kvm_vcpu, arch.fault.disr_el1));
|
||||||
DEFINE(VCPU_HCR_EL2, offsetof(struct kvm_vcpu, arch.hcr_el2));
|
DEFINE(VCPU_HCR_EL2, offsetof(struct kvm_vcpu, arch.hcr_el2));
|
||||||
DEFINE(CPU_USER_PT_REGS, offsetof(struct kvm_cpu_context, regs));
|
DEFINE(CPU_USER_PT_REGS, offsetof(struct kvm_cpu_context, regs));
|
||||||
DEFINE(CPU_ELR_EL2, offsetof(struct kvm_cpu_context, sys_regs[ELR_EL2]));
|
|
||||||
DEFINE(CPU_RGSR_EL1, offsetof(struct kvm_cpu_context, sys_regs[RGSR_EL1]));
|
DEFINE(CPU_RGSR_EL1, offsetof(struct kvm_cpu_context, sys_regs[RGSR_EL1]));
|
||||||
DEFINE(CPU_GCR_EL1, offsetof(struct kvm_cpu_context, sys_regs[GCR_EL1]));
|
DEFINE(CPU_GCR_EL1, offsetof(struct kvm_cpu_context, sys_regs[GCR_EL1]));
|
||||||
DEFINE(CPU_APIAKEYLO_EL1, offsetof(struct kvm_cpu_context, sys_regs[APIAKEYLO_EL1]));
|
DEFINE(CPU_APIAKEYLO_EL1, offsetof(struct kvm_cpu_context, sys_regs[APIAKEYLO_EL1]));
|
||||||
|
|
|
@ -83,15 +83,6 @@ alternative_else_nop_endif
|
||||||
eret
|
eret
|
||||||
sb
|
sb
|
||||||
|
|
||||||
SYM_INNER_LABEL(__guest_exit_restore_elr_and_panic, SYM_L_GLOBAL)
|
|
||||||
// x0-x29,lr: hyp regs
|
|
||||||
|
|
||||||
stp x0, x1, [sp, #-16]!
|
|
||||||
adr_this_cpu x0, kvm_hyp_ctxt, x1
|
|
||||||
ldr x0, [x0, #CPU_ELR_EL2]
|
|
||||||
msr elr_el2, x0
|
|
||||||
ldp x0, x1, [sp], #16
|
|
||||||
|
|
||||||
SYM_INNER_LABEL(__guest_exit_panic, SYM_L_GLOBAL)
|
SYM_INNER_LABEL(__guest_exit_panic, SYM_L_GLOBAL)
|
||||||
// x2-x29,lr: vcpu regs
|
// x2-x29,lr: vcpu regs
|
||||||
// vcpu x0-x1 on the stack
|
// vcpu x0-x1 on the stack
|
||||||
|
|
|
@ -720,7 +720,7 @@ guest:
|
||||||
|
|
||||||
static inline void __kvm_unexpected_el2_exception(void)
|
static inline void __kvm_unexpected_el2_exception(void)
|
||||||
{
|
{
|
||||||
extern char __guest_exit_restore_elr_and_panic[];
|
extern char __guest_exit_panic[];
|
||||||
unsigned long addr, fixup;
|
unsigned long addr, fixup;
|
||||||
struct kvm_exception_table_entry *entry, *end;
|
struct kvm_exception_table_entry *entry, *end;
|
||||||
unsigned long elr_el2 = read_sysreg(elr_el2);
|
unsigned long elr_el2 = read_sysreg(elr_el2);
|
||||||
|
@ -742,8 +742,7 @@ static inline void __kvm_unexpected_el2_exception(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Trigger a panic after restoring the hyp context. */
|
/* Trigger a panic after restoring the hyp context. */
|
||||||
this_cpu_ptr(&kvm_hyp_ctxt)->sys_regs[ELR_EL2] = elr_el2;
|
write_sysreg(__guest_exit_panic, elr_el2);
|
||||||
write_sysreg(__guest_exit_restore_elr_and_panic, elr_el2);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* __ARM64_KVM_HYP_SWITCH_H__ */
|
#endif /* __ARM64_KVM_HYP_SWITCH_H__ */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user