all the handlers are already there in coproc_a15.c, but the traps are not enabled at world switch in __kvm_vcpu_run. In particular this was noticed because the guests were trying to read the number of CPUs using l2ctlr, and the number of physical host CPUs was returned instead of the number of VCPUs. This change extends the 'set_hstr' macro to accept an additional argument to choose which registers to trap on. Signed-off-by: Claudio Fontana <claudio.fontana@xxxxxxxxxx> Tested-by: Claudio Fontana <claudio.fontana@xxxxxxxxxx> Acked-by: Antonios Motakis <a.motakis@xxxxxxxxxxxxxxxxxxxxxx> --- arch/arm/kvm/interrupts.S | 4 ++-- arch/arm/kvm/interrupts_head.S | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/arm/kvm/interrupts.S b/arch/arm/kvm/interrupts.S index 5a09e89..0ecb80b 100644 --- a/arch/arm/kvm/interrupts.S +++ b/arch/arm/kvm/interrupts.S @@ -112,7 +112,7 @@ ENTRY(__kvm_vcpu_run) configure_hyp_role 1, r0 @ Trap coprocessor CRx accesses - set_hstr 1 + set_hstr 1, (HSTR_T(15) | HSTR_T(9)) set_hcptr 1, (HCPTR_TTA | HCPTR_TCP(10) | HCPTR_TCP(11)) set_hdcr 1 @@ -150,7 +150,7 @@ __kvm_vcpu_return: mcrr p15, 6, r2, r3, c2 @ Write VTTBR @ Don't trap coprocessor accesses for host kernel - set_hstr 0 + set_hstr 0, (HSTR_T(15) | HSTR_T(9)) set_hdcr 0 set_hcptr 0, (HCPTR_TTA | HCPTR_TCP(10) | HCPTR_TCP(11)) diff --git a/arch/arm/kvm/interrupts_head.S b/arch/arm/kvm/interrupts_head.S index ece84d1..e3e7eed 100644 --- a/arch/arm/kvm/interrupts_head.S +++ b/arch/arm/kvm/interrupts_head.S @@ -480,11 +480,11 @@ /* Configures the HSTR (Hyp System Trap Register) on entry/return * (hardware reset value is 0) */ -.macro set_hstr entry +.macro set_hstr entry, mask mrc p15, 4, r2, c1, c1, 3 - ldr r3, =HSTR_T(15) + ldr r3, =\mask .if \entry == 1 - orr r2, r2, r3 @ Trap CR{15} + orr r2, r2, r3 @ Trap accesses defined in mask .else bic r2, r2, r3 @ Don't trap any CRx accesses .endif -- 1.7.12.1 _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm