Commit 0ead48ac authored by Oliver Upton's avatar Oliver Upton
Browse files

KVM: arm64: nv: Describe trap behavior of SCTLR2_EL1



Add the complete trap description for SCTLR2_EL1, including FGT and the
inverted HCRX bit.

Reviewed-by: default avatarMarc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20250708172532.1699409-11-oliver.upton@linux.dev


Signed-off-by: default avatarOliver Upton <oliver.upton@linux.dev>
parent a99456ab
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -88,6 +88,7 @@ enum cgt_group_id {

	CGT_HCRX_EnFPM,
	CGT_HCRX_TCR2En,
	CGT_HCRX_SCTLR2En,

	CGT_CNTHCTL_EL1TVT,
	CGT_CNTHCTL_EL1TVCT,
@@ -108,6 +109,7 @@ enum cgt_group_id {
	CGT_HCR_TTLB_TTLBOS,
	CGT_HCR_TVM_TRVM,
	CGT_HCR_TVM_TRVM_HCRX_TCR2En,
	CGT_HCR_TVM_TRVM_HCRX_SCTLR2En,
	CGT_HCR_TPU_TICAB,
	CGT_HCR_TPU_TOCU,
	CGT_HCR_NV1_nNV2_ENSCXT,
@@ -398,6 +400,12 @@ static const struct trap_bits coarse_trap_bits[] = {
		.mask		= HCRX_EL2_TCR2En,
		.behaviour	= BEHAVE_FORWARD_RW,
	},
	[CGT_HCRX_SCTLR2En] = {
		.index		= HCRX_EL2,
		.value		= 0,
		.mask		= HCRX_EL2_SCTLR2En,
		.behaviour	= BEHAVE_FORWARD_RW,
	},
	[CGT_CNTHCTL_EL1TVT] = {
		.index		= CNTHCTL_EL2,
		.value		= CNTHCTL_EL1TVT,
@@ -449,6 +457,8 @@ static const enum cgt_group_id *coarse_control_combo[] = {
	MCB(CGT_HCR_TVM_TRVM,		CGT_HCR_TVM, CGT_HCR_TRVM),
	MCB(CGT_HCR_TVM_TRVM_HCRX_TCR2En,
					CGT_HCR_TVM, CGT_HCR_TRVM, CGT_HCRX_TCR2En),
	MCB(CGT_HCR_TVM_TRVM_HCRX_SCTLR2En,
					CGT_HCR_TVM, CGT_HCR_TRVM, CGT_HCRX_SCTLR2En),
	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),
@@ -782,6 +792,7 @@ static const struct encoding_to_trap_config encoding_to_cgt[] __initconst = {
	SR_TRAP(OP_TLBI_RVALE1OSNXS,	CGT_HCR_TTLB_TTLBOS),
	SR_TRAP(OP_TLBI_RVAALE1OSNXS,	CGT_HCR_TTLB_TTLBOS),
	SR_TRAP(SYS_SCTLR_EL1,		CGT_HCR_TVM_TRVM),
	SR_TRAP(SYS_SCTLR2_EL1,		CGT_HCR_TVM_TRVM_HCRX_SCTLR2En),
	SR_TRAP(SYS_TTBR0_EL1,		CGT_HCR_TVM_TRVM),
	SR_TRAP(SYS_TTBR1_EL1,		CGT_HCR_TVM_TRVM),
	SR_TRAP(SYS_TCR_EL1,		CGT_HCR_TVM_TRVM),
@@ -1354,6 +1365,7 @@ static const struct encoding_to_trap_config encoding_to_fgt[] __initconst = {
	SR_FGT(SYS_SCXTNUM_EL0,		HFGRTR, SCXTNUM_EL0, 1),
	SR_FGT(SYS_SCXTNUM_EL1, 	HFGRTR, SCXTNUM_EL1, 1),
	SR_FGT(SYS_SCTLR_EL1, 		HFGRTR, SCTLR_EL1, 1),
	SR_FGT(SYS_SCTLR2_EL1,		HFGRTR, SCTLR_EL1, 1),
	SR_FGT(SYS_REVIDR_EL1, 		HFGRTR, REVIDR_EL1, 1),
	SR_FGT(SYS_PAR_EL1, 		HFGRTR, PAR_EL1, 1),
	SR_FGT(SYS_MPIDR_EL1, 		HFGRTR, MPIDR_EL1, 1),