···8989 * - Debug ROM Address (MDCR_EL2_TDRA)9090 * - OS related registers (MDCR_EL2_TDOSA)9191 * - Statistical profiler (MDCR_EL2_TPMS/MDCR_EL2_E2PB)9292+ * - Self-hosted Trace Filter controls (MDCR_EL2_TTRF)9293 *9394 * Additionally, KVM only traps guest accesses to the debug registers if9495 * the guest is not actively using them (see the KVM_ARM64_DEBUG_DIRTY···113112 vcpu->arch.mdcr_el2 = __this_cpu_read(mdcr_el2) & MDCR_EL2_HPMN_MASK;114113 vcpu->arch.mdcr_el2 |= (MDCR_EL2_TPM |115114 MDCR_EL2_TPMS |115115+ MDCR_EL2_TTRF |116116 MDCR_EL2_TPMCR |117117 MDCR_EL2_TDRA |118118 MDCR_EL2_TDOSA);
+9
arch/arm64/kvm/hyp/vgic-v3-sr.c
···429429 if (has_vhe())430430 flags = local_daif_save();431431432432+ /*433433+ * Table 11-2 "Permitted ICC_SRE_ELx.SRE settings" indicates434434+ * that to be able to set ICC_SRE_EL1.SRE to 0, all the435435+ * interrupt overrides must be set. You've got to love this.436436+ */437437+ sysreg_clear_set(hcr_el2, 0, HCR_AMO | HCR_FMO | HCR_IMO);438438+ isb();432439 write_gicreg(0, ICC_SRE_EL1);433440 isb();434441435442 val = read_gicreg(ICC_SRE_EL1);436443437444 write_gicreg(sre, ICC_SRE_EL1);445445+ isb();446446+ sysreg_clear_set(hcr_el2, HCR_AMO | HCR_FMO | HCR_IMO, 0);438447 isb();439448440449 if (has_vhe())