KVM: arm64: Trap external trace for protected VMs
authorFuad Tabba <tabba@google.com>
Thu, 14 Dec 2023 10:01:57 +0000 (10:01 +0000)
committerMarc Zyngier <maz@kernel.org>
Mon, 18 Dec 2023 11:25:51 +0000 (11:25 +0000)
pKVM does not support external trace for protected VMs. Trap
external trace, and add the ExtTrcBuff to make it possible to
check for the feature.

Signed-off-by: Fuad Tabba <tabba@google.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20231214100158.2305400-18-tabba@google.com
arch/arm64/kvm/hyp/nvhe/pkvm.c

index 9d23a51d7f7525d50558adefdc402c906ea2b82a..84b5c3f387d80cc894cb61e0f967561d55fcfffa 100644 (file)
@@ -136,6 +136,10 @@ static void pvm_init_traps_aa64dfr0(struct kvm_vcpu *vcpu)
                        cptr_set |= CPTR_EL2_TTA;
        }
 
+       /* Trap External Trace */
+       if (!FIELD_GET(ARM64_FEATURE_MASK(ID_AA64DFR0_EL1_ExtTrcBuff), feature_ids))
+               mdcr_clear |= MDCR_EL2_E2TB_MASK << MDCR_EL2_E2TB_SHIFT;
+
        vcpu->arch.mdcr_el2 |= mdcr_set;
        vcpu->arch.mdcr_el2 &= ~mdcr_clear;
        vcpu->arch.cptr_el2 |= cptr_set;