mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 11:33:28 +02:00
KVM: arm64: nv: Add trap forwarding for MDCR_EL2
Describe the MDCR_EL2 register, and associate it with all the sysregs it allows to trap. Reviewed-by: Eric Auger <eric.auger@redhat.com> Signed-off-by: Marc Zyngier <maz@kernel.org> Reviewed-by: Jing Zhang <jingzhangos@google.com> Link: https://lore.kernel.org/r/20230815183903.2735724-18-maz@kernel.org
This commit is contained in:
parent
a0b70fb00d
commit
cb31632c44
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user