[PATCH v4 17/28] KVM: arm64: nv: Add trap forwarding for MDCR_EL2

Jing Zhang jingzhangos at google.com
Tue Aug 15 15:33:18 PDT 2023


Hi Marc,

On Tue, Aug 15, 2023 at 11:46 AM Marc Zyngier <maz at kernel.org> wrote:
>
> Describe the MDCR_EL2 register, and associate it with all the sysregs
> it allows to trap.
>
> Reviewed-by: Eric Auger <eric.auger at redhat.com>
> Signed-off-by: Marc Zyngier <maz at kernel.org>
> ---
>  arch/arm64/kvm/emulate-nested.c | 268 ++++++++++++++++++++++++++++++++
>  1 file changed, 268 insertions(+)
>
> diff --git a/arch/arm64/kvm/emulate-nested.c b/arch/arm64/kvm/emulate-nested.c
> index 975a30ef874a..241e44eeed6d 100644
> --- a/arch/arm64/kvm/emulate-nested.c
> +++ b/arch/arm64/kvm/emulate-nested.c
> @@ -67,6 +67,18 @@ enum cgt_group_id {
>         CGT_HCR_TTLBIS,
>         CGT_HCR_TTLBOS,
>
> +       CGT_MDCR_TPMCR,
> +       CGT_MDCR_TPM,
> +       CGT_MDCR_TDE,
> +       CGT_MDCR_TDA,
> +       CGT_MDCR_TDOSA,
> +       CGT_MDCR_TDRA,
> +       CGT_MDCR_E2PB,
> +       CGT_MDCR_TPMS,
> +       CGT_MDCR_TTRF,
> +       CGT_MDCR_E2TB,
> +       CGT_MDCR_TDCC,
> +
>         /*
>          * Anything after this point is a combination of coarse trap
>          * controls, which must all be evaluated to decide what to do.
> @@ -80,6 +92,11 @@ enum cgt_group_id {
>         CGT_HCR_TPU_TICAB,
>         CGT_HCR_TPU_TOCU,
>         CGT_HCR_NV1_nNV2_ENSCXT,
> +       CGT_MDCR_TPM_TPMCR,
> +       CGT_MDCR_TDE_TDA,
> +       CGT_MDCR_TDE_TDOSA,
> +       CGT_MDCR_TDE_TDRA,
> +       CGT_MDCR_TDCC_TDE_TDA,
>
>         /*
>          * Anything after this point requires a callback evaluating a
> @@ -260,6 +277,72 @@ static const struct trap_bits coarse_trap_bits[] = {
>                 .mask           = HCR_TTLBOS,
>                 .behaviour      = BEHAVE_FORWARD_ANY,
>         },
> +       [CGT_MDCR_TPMCR] = {
> +               .index          = MDCR_EL2,
> +               .value          = MDCR_EL2_TPMCR,
> +               .mask           = MDCR_EL2_TPMCR,
> +               .behaviour      = BEHAVE_FORWARD_ANY,
> +       },
> +       [CGT_MDCR_TPM] = {
> +               .index          = MDCR_EL2,
> +               .value          = MDCR_EL2_TPM,
> +               .mask           = MDCR_EL2_TPM,
> +               .behaviour      = BEHAVE_FORWARD_ANY,
> +       },
> +       [CGT_MDCR_TDE] = {
> +               .index          = MDCR_EL2,
> +               .value          = MDCR_EL2_TDE,
> +               .mask           = MDCR_EL2_TDE,
> +               .behaviour      = BEHAVE_FORWARD_ANY,
> +       },
> +       [CGT_MDCR_TDA] = {
> +               .index          = MDCR_EL2,
> +               .value          = MDCR_EL2_TDA,
> +               .mask           = MDCR_EL2_TDA,
> +               .behaviour      = BEHAVE_FORWARD_ANY,
> +       },
> +       [CGT_MDCR_TDOSA] = {
> +               .index          = MDCR_EL2,
> +               .value          = MDCR_EL2_TDOSA,
> +               .mask           = MDCR_EL2_TDOSA,
> +               .behaviour      = BEHAVE_FORWARD_ANY,
> +       },
> +       [CGT_MDCR_TDRA] = {
> +               .index          = MDCR_EL2,
> +               .value          = MDCR_EL2_TDRA,
> +               .mask           = MDCR_EL2_TDRA,
> +               .behaviour      = BEHAVE_FORWARD_ANY,
> +       },
> +       [CGT_MDCR_E2PB] = {
> +               .index          = MDCR_EL2,
> +               .value          = 0,
> +               .mask           = BIT(MDCR_EL2_E2PB_SHIFT),
> +               .behaviour      = BEHAVE_FORWARD_ANY,
> +       },
> +       [CGT_MDCR_TPMS] = {
> +               .index          = MDCR_EL2,
> +               .value          = MDCR_EL2_TPMS,
> +               .mask           = MDCR_EL2_TPMS,
> +               .behaviour      = BEHAVE_FORWARD_ANY,
> +       },
> +       [CGT_MDCR_TTRF] = {
> +               .index          = MDCR_EL2,
> +               .value          = MDCR_EL2_TTRF,
> +               .mask           = MDCR_EL2_TTRF,
> +               .behaviour      = BEHAVE_FORWARD_ANY,
> +       },
> +       [CGT_MDCR_E2TB] = {
> +               .index          = MDCR_EL2,
> +               .value          = 0,
> +               .mask           = BIT(MDCR_EL2_E2TB_SHIFT),
> +               .behaviour      = BEHAVE_FORWARD_ANY,
> +       },
> +       [CGT_MDCR_TDCC] = {
> +               .index          = MDCR_EL2,
> +               .value          = MDCR_EL2_TDCC,
> +               .mask           = MDCR_EL2_TDCC,
> +               .behaviour      = BEHAVE_FORWARD_ANY,
> +       },
>  };
>
>  #define MCB(id, ...)                                           \
> @@ -277,6 +360,11 @@ static const enum cgt_group_id *coarse_control_combo[] = {
>         MCB(CGT_HCR_TPU_TICAB,          CGT_HCR_TPU, CGT_HCR_TICAB),
>         MCB(CGT_HCR_TPU_TOCU,           CGT_HCR_TPU, CGT_HCR_TOCU),
>         MCB(CGT_HCR_NV1_nNV2_ENSCXT,    CGT_HCR_NV1_nNV2, CGT_HCR_ENSCXT),
> +       MCB(CGT_MDCR_TPM_TPMCR,         CGT_MDCR_TPM, CGT_MDCR_TPMCR),
> +       MCB(CGT_MDCR_TDE_TDA,           CGT_MDCR_TDE, CGT_MDCR_TDA),
> +       MCB(CGT_MDCR_TDE_TDOSA,         CGT_MDCR_TDE, CGT_MDCR_TDOSA),
> +       MCB(CGT_MDCR_TDE_TDRA,          CGT_MDCR_TDE, CGT_MDCR_TDRA),
> +       MCB(CGT_MDCR_TDCC_TDE_TDA,      CGT_MDCR_TDCC, CGT_MDCR_TDE, CGT_MDCR_TDA),
>  };
>
>  typedef enum trap_behaviour (*complex_condition_check)(struct kvm_vcpu *);
> @@ -609,6 +697,186 @@ static const struct encoding_to_trap_config encoding_to_cgt[] __initconst = {
>         SR_TRAP(SYS_ERXPFGF_EL1,        CGT_HCR_nFIEN),
>         SR_TRAP(SYS_ERXPFGCTL_EL1,      CGT_HCR_nFIEN),
>         SR_TRAP(SYS_ERXPFGCDN_EL1,      CGT_HCR_nFIEN),
> +       SR_TRAP(SYS_PMCR_EL0,           CGT_MDCR_TPM_TPMCR),
> +       SR_TRAP(SYS_PMCNTENSET_EL0,     CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMCNTENCLR_EL0,     CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMOVSSET_EL0,       CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMOVSCLR_EL0,       CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMCEID0_EL0,        CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMCEID1_EL0,        CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMXEVTYPER_EL0,     CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMSWINC_EL0,        CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMSELR_EL0,         CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMXEVCNTR_EL0,      CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMCCNTR_EL0,        CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMUSERENR_EL0,      CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMINTENSET_EL1,     CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMINTENCLR_EL1,     CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMMIR_EL1,          CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(0),   CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(1),   CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(2),   CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(3),   CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(4),   CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(5),   CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(6),   CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(7),   CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(8),   CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(9),   CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(10),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(11),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(12),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(13),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(14),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(15),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(16),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(17),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(18),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(19),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(20),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(21),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(22),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(23),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(24),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(25),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(26),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(27),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(28),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(29),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVCNTRn_EL0(30),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(0),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(1),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(2),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(3),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(4),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(5),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(6),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(7),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(8),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(9),  CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(10), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(11), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(12), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(13), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(14), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(15), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(16), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(17), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(18), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(19), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(20), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(21), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(22), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(23), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(24), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(25), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(26), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(27), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(28), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(29), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMEVTYPERn_EL0(30), CGT_MDCR_TPM),
> +       SR_TRAP(SYS_PMCCFILTR_EL0,      CGT_MDCR_TPM),
> +       SR_TRAP(SYS_MDCCSR_EL0,         CGT_MDCR_TDCC_TDE_TDA),
> +       SR_TRAP(SYS_MDCCINT_EL1,        CGT_MDCR_TDCC_TDE_TDA),
> +       SR_TRAP(SYS_OSDTRRX_EL1,        CGT_MDCR_TDCC_TDE_TDA),
> +       SR_TRAP(SYS_OSDTRTX_EL1,        CGT_MDCR_TDCC_TDE_TDA),
> +       SR_TRAP(SYS_DBGDTR_EL0,         CGT_MDCR_TDCC_TDE_TDA),
> +       /*
> +        * Also covers DBGDTRRX_EL0, which has the same encoding as
> +        * SYS_DBGDTRTX_EL0...
> +        */
> +       SR_TRAP(SYS_DBGDTRTX_EL0,       CGT_MDCR_TDCC_TDE_TDA),
> +       SR_TRAP(SYS_MDSCR_EL1,          CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_OSECCR_EL1,         CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBVRn_EL1(0),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBVRn_EL1(1),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBVRn_EL1(2),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBVRn_EL1(3),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBVRn_EL1(4),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBVRn_EL1(5),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBVRn_EL1(6),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBVRn_EL1(7),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBVRn_EL1(8),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBVRn_EL1(9),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBVRn_EL1(10),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBVRn_EL1(11),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBVRn_EL1(12),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBVRn_EL1(13),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBVRn_EL1(14),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBVRn_EL1(15),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBCRn_EL1(0),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBCRn_EL1(1),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBCRn_EL1(2),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBCRn_EL1(3),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBCRn_EL1(4),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBCRn_EL1(5),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBCRn_EL1(6),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBCRn_EL1(7),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBCRn_EL1(8),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBCRn_EL1(9),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBCRn_EL1(10),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBCRn_EL1(11),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBCRn_EL1(12),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBCRn_EL1(13),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBCRn_EL1(14),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGBCRn_EL1(15),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWVRn_EL1(0),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWVRn_EL1(1),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWVRn_EL1(2),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWVRn_EL1(3),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWVRn_EL1(4),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWVRn_EL1(5),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWVRn_EL1(6),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWVRn_EL1(7),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWVRn_EL1(8),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWVRn_EL1(9),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWVRn_EL1(10),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWVRn_EL1(11),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWVRn_EL1(12),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWVRn_EL1(13),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWVRn_EL1(14),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWVRn_EL1(15),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWCRn_EL1(0),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWCRn_EL1(1),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWCRn_EL1(2),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWCRn_EL1(3),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWCRn_EL1(4),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWCRn_EL1(5),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWCRn_EL1(6),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWCRn_EL1(7),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWCRn_EL1(8),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWCRn_EL1(9),     CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWCRn_EL1(10),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWCRn_EL1(11),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWCRn_EL1(12),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWCRn_EL1(13),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGWCRn_EL1(14),    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGCLAIMSET_EL1,    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGCLAIMCLR_EL1,    CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_DBGAUTHSTATUS_EL1,  CGT_MDCR_TDE_TDA),
> +       SR_TRAP(SYS_OSLAR_EL1,          CGT_MDCR_TDE_TDOSA),
> +       SR_TRAP(SYS_OSLSR_EL1,          CGT_MDCR_TDE_TDOSA),
> +       SR_TRAP(SYS_OSDLR_EL1,          CGT_MDCR_TDE_TDOSA),
> +       SR_TRAP(SYS_DBGPRCR_EL1,        CGT_MDCR_TDE_TDOSA),
> +       SR_TRAP(SYS_MDRAR_EL1,          CGT_MDCR_TDE_TDRA),
> +       SR_TRAP(SYS_PMBLIMITR_EL1,      CGT_MDCR_E2PB),
> +       SR_TRAP(SYS_PMBPTR_EL1,         CGT_MDCR_E2PB),
> +       SR_TRAP(SYS_PMBSR_EL1,          CGT_MDCR_E2PB),
> +       SR_TRAP(SYS_PMSCR_EL1,          CGT_MDCR_TPMS),
> +       SR_TRAP(SYS_PMSEVFR_EL1,        CGT_MDCR_TPMS),
> +       SR_TRAP(SYS_PMSFCR_EL1,         CGT_MDCR_TPMS),
> +       SR_TRAP(SYS_PMSICR_EL1,         CGT_MDCR_TPMS),
> +       SR_TRAP(SYS_PMSIDR_EL1,         CGT_MDCR_TPMS),
> +       SR_TRAP(SYS_PMSIRR_EL1,         CGT_MDCR_TPMS),
> +       SR_TRAP(SYS_PMSLATFR_EL1,       CGT_MDCR_TPMS),
> +       SR_TRAP(SYS_PMSNEVFR_EL1,       CGT_MDCR_TPMS),
> +       SR_TRAP(SYS_TRFCR_EL1,          CGT_MDCR_TTRF),
> +       SR_TRAP(SYS_TRBBASER_EL1,       CGT_MDCR_E2TB),
> +       SR_TRAP(SYS_TRBLIMITR_EL1,      CGT_MDCR_E2TB),
> +       SR_TRAP(SYS_TRBMAR_EL1,         CGT_MDCR_E2TB),
> +       SR_TRAP(SYS_TRBPTR_EL1,         CGT_MDCR_E2TB),
> +       SR_TRAP(SYS_TRBSR_EL1,          CGT_MDCR_E2TB),
> +       SR_TRAP(SYS_TRBTRG_EL1,         CGT_MDCR_E2TB),
>  };
>
>  static DEFINE_XARRAY(sr_forward_xa);
> --
> 2.34.1
>

Reviewed-by: Jing Zhang <jingzhangos at google.com>

Jing



More information about the linux-arm-kernel mailing list