summaryrefslogtreecommitdiff
path: root/arch/arm/kvm/coproc.h
diff options
context:
space:
mode:
authorMarc Zyngier <marc.zyngier@arm.com>2014-01-21 22:56:26 +0400
committerMarc Zyngier <marc.zyngier@arm.com>2014-03-03 05:15:23 +0400
commit46c214dd595381c880794413facadfa07fba5c95 (patch)
treed1ae722770cf15736001218ff33f952b45357fca /arch/arm/kvm/coproc.h
parent159793001d7d85af17855630c94f0a176848e16b (diff)
downloadlinux-46c214dd595381c880794413facadfa07fba5c95.tar.xz
ARM: KVM: fix handling of trapped 64bit coprocessor accesses
Commit 240e99cbd00a (ARM: KVM: Fix 64-bit coprocessor handling) changed the way we match the 64bit coprocessor access from user space, but didn't update the trap handler for the same set of registers. The effect is that a trapped 64bit access is never matched, leading to a fault being injected into the guest. This went unnoticed as we didn't really trap any 64bit register so far. Placing the CRm field of the access into the CRn field of the matching structure fixes the problem. Also update the debug feature to emit the expected string in case of failing match. Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org> Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch/arm/kvm/coproc.h')
-rw-r--r--arch/arm/kvm/coproc.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/arm/kvm/coproc.h b/arch/arm/kvm/coproc.h
index 0461d5c8d3de..c5ad7ff40c96 100644
--- a/arch/arm/kvm/coproc.h
+++ b/arch/arm/kvm/coproc.h
@@ -58,8 +58,8 @@ static inline void print_cp_instr(const struct coproc_params *p)
{
/* Look, we even formatted it for you to paste into the table! */
if (p->is_64bit) {
- kvm_pr_unimpl(" { CRm(%2lu), Op1(%2lu), is64, func_%s },\n",
- p->CRm, p->Op1, p->is_write ? "write" : "read");
+ kvm_pr_unimpl(" { CRm64(%2lu), Op1(%2lu), is64, func_%s },\n",
+ p->CRn, p->Op1, p->is_write ? "write" : "read");
} else {
kvm_pr_unimpl(" { CRn(%2lu), CRm(%2lu), Op1(%2lu), Op2(%2lu), is32,"
" func_%s },\n",