提交 9d0d4d34 编写于 作者: M Marc Zyngier 提交者: Christoffer Dall

arm: KVM: Treat CP15 accessors returning false as successful

Instead of considering that a CP15 accessor has failed when
returning false, let's consider that it is *always* successful
(after all, we won't stand for an incomplete emulation).

The return value now simply indicates whether we should skip
the instruction (because it has now been emulated), or if we
should leave the PC alone if the emulation has injected an
exception.
Reviewed-by: NChristoffer Dall <cdall@linaro.org>
Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
上级 b1d4cb69
...@@ -520,15 +520,15 @@ static int emulate_cp15(struct kvm_vcpu *vcpu, ...@@ -520,15 +520,15 @@ static int emulate_cp15(struct kvm_vcpu *vcpu,
if (likely(r->access(vcpu, params, r))) { if (likely(r->access(vcpu, params, r))) {
/* Skip instruction, since it was emulated */ /* Skip instruction, since it was emulated */
kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu)); kvm_skip_instr(vcpu, kvm_vcpu_trap_il_is32bit(vcpu));
return 1;
} }
/* If access function fails, it should complain. */
} else { } else {
/* If access function fails, it should complain. */
kvm_err("Unsupported guest CP15 access at: %08lx\n", kvm_err("Unsupported guest CP15 access at: %08lx\n",
*vcpu_pc(vcpu)); *vcpu_pc(vcpu));
print_cp_instr(params); print_cp_instr(params);
kvm_inject_undefined(vcpu);
} }
kvm_inject_undefined(vcpu);
return 1; return 1;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册