Commit d1878af3 authored by Mark Rutland's avatar Mark Rutland Committed by Marc Zyngier

KVM: arm/arm64: Log PSTATE for unhandled sysregs

When KVM traps an unhandled sysreg/coproc access from a guest, it logs
the guest PC. To aid debugging, it would be helpful to know which
exception level the trap came from, along with other PSTATE/CPSR bits,
so let's log the PSTATE/CPSR too.
Acked-by: default avatarChristoffer Dall <christoffer.dall@arm.com>
Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
parent fb544d1c
...@@ -602,8 +602,8 @@ static int emulate_cp15(struct kvm_vcpu *vcpu, ...@@ -602,8 +602,8 @@ static int emulate_cp15(struct kvm_vcpu *vcpu,
} }
} else { } else {
/* If access function fails, it should complain. */ /* If access function fails, it should complain. */
kvm_err("Unsupported guest CP15 access at: %08lx\n", kvm_err("Unsupported guest CP15 access at: %08lx [%08lx]\n",
*vcpu_pc(vcpu)); *vcpu_pc(vcpu), *vcpu_cpsr(vcpu));
print_cp_instr(params); print_cp_instr(params);
kvm_inject_undefined(vcpu); kvm_inject_undefined(vcpu);
} }
......
...@@ -1912,8 +1912,8 @@ static void unhandled_cp_access(struct kvm_vcpu *vcpu, ...@@ -1912,8 +1912,8 @@ static void unhandled_cp_access(struct kvm_vcpu *vcpu,
WARN_ON(1); WARN_ON(1);
} }
kvm_err("Unsupported guest CP%d access at: %08lx\n", kvm_err("Unsupported guest CP%d access at: %08lx [%08lx]\n",
cp, *vcpu_pc(vcpu)); cp, *vcpu_pc(vcpu), *vcpu_cpsr(vcpu));
print_sys_reg_instr(params); print_sys_reg_instr(params);
kvm_inject_undefined(vcpu); kvm_inject_undefined(vcpu);
} }
...@@ -2063,8 +2063,8 @@ static int emulate_sys_reg(struct kvm_vcpu *vcpu, ...@@ -2063,8 +2063,8 @@ static int emulate_sys_reg(struct kvm_vcpu *vcpu,
if (likely(r)) { if (likely(r)) {
perform_access(vcpu, params, r); perform_access(vcpu, params, r);
} else { } else {
kvm_err("Unsupported guest sys_reg access at: %lx\n", kvm_err("Unsupported guest sys_reg access at: %lx [%08lx]\n",
*vcpu_pc(vcpu)); *vcpu_pc(vcpu), *vcpu_cpsr(vcpu));
print_sys_reg_instr(params); print_sys_reg_instr(params);
kvm_inject_undefined(vcpu); kvm_inject_undefined(vcpu);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment