aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Zyngier <marc.zyngier@arm.com>2012-07-11 21:46:06 +0100
committerMarc Zyngier <marc.zyngier@arm.com>2012-07-11 21:46:06 +0100
commit984557b0065a42a505e39c3a72b4f32c185ec700 (patch)
tree2e5e9a456f0c233b06ed71f55d17b8d7c72434a0
parenta5c6ba54fce2e06626d5e9749e9090fb18a5cc97 (diff)
downloadlinux-kvm-arm-kvm-a15-v10-stage-v3.5-rc5-vgic.tar.gz
ARM: KVM: Use HCR.TIDCP to trap L2CTLR instead of HSTR.{9,10,11}kvm-a15-v10-stage-v3.5-rc5-vgic
Despite being labeled as "Trap accesses to lockdown, DMA and TCM operations", HCR.TIDCP actually traps L2CTLR on A15. Actually, it is a perfect replacement for HSTR.{9,10,11}. (We could use HDCR to control access to the percormance counters). Only keep HSTR.15 for which there is no alternative, and use HCR.TIDP to control L2CTLR access. Reported-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
-rw-r--r--arch/arm/include/asm/kvm_arm.h3
-rw-r--r--arch/arm/kvm/interrupts.S4
2 files changed, 4 insertions, 3 deletions
diff --git a/arch/arm/include/asm/kvm_arm.h b/arch/arm/include/asm/kvm_arm.h
index 4142d181b8298e..afa628ddbe429e 100644
--- a/arch/arm/include/asm/kvm_arm.h
+++ b/arch/arm/include/asm/kvm_arm.h
@@ -62,6 +62,7 @@
/*
* The bits we set in HCR:
* TAC: Trap ACTLR
+ * TIDCP: Trap L2CTRL (on A15)
* TSC: Trap SMC
* TSW: Trap cache operations by set/way
* TWI: Trap WFI
@@ -74,7 +75,7 @@
*/
#define HCR_GUEST_MASK (HCR_TSC | HCR_TSW | HCR_TWI | HCR_VM | HCR_BSU_IS | \
HCR_FB | HCR_TAC | HCR_AMO | HCR_IMO | HCR_FMO | \
- HCR_SWIO)
+ HCR_TIDCP | HCR_SWIO)
#define HCR_VIRT_EXCP_MASK (HCR_VA | HCR_VI | HCR_VF)
/* System Control Register (SCTLR) bits */
diff --git a/arch/arm/kvm/interrupts.S b/arch/arm/kvm/interrupts.S
index eb2687019812e9..b202d434a1cb96 100644
--- a/arch/arm/kvm/interrupts.S
+++ b/arch/arm/kvm/interrupts.S
@@ -409,9 +409,9 @@ ENDPROC(__kvm_flush_vm_context)
* (hardware reset value is 0) */
.macro set_hstr entry
mrc p15, 4, r2, c1, c1, 3
- ldr r3, =(HSTR_T(9) | HSTR_T(10) | HSTR_T(11) | HSTR_T(15))
+ ldr r3, =HSTR_T(15)
.if \entry == 1
- orr r2, r2, r3 @ Trap CR{9,10,11,15}
+ orr r2, r2, r3 @ Trap CRn=15
.else
bic r2, r2, r3 @ Don't trap any CRx accesses
.endif