[PATCH] ARM: KVM: enable traps on coprocessor cp15 c9 access

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux