Commit c27b8b7a authored by Marc Zyngier's avatar Marc Zyngier
Browse files

KVM: arm64: Correctly handle SCTLR_EL1 RES1 bits for unsupported features



A bunch of SCTLR_EL1 bits must be set to RES1 when the controlling
feature is not present. Add the AS_RES1 qualifier where needed.

Reviewed-by: default avatarFuad Tabba <tabba@google.com>
Tested-by: default avatarFuad Tabba <tabba@google.com>
Link: https://patch.msgid.link/20260202184329.2724080-9-maz@kernel.org


Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
parent 459fc4e7
Loading
Loading
Loading
Loading
+14 −12
Original line number Diff line number Diff line
@@ -1085,27 +1085,28 @@ static const DECLARE_FEAT_MAP(tcr2_el2_desc, TCR2_EL2,
			      tcr2_el2_feat_map, FEAT_TCR2);

static const struct reg_bits_to_feat_map sctlr_el1_feat_map[] = {
	NEEDS_FEAT(SCTLR_EL1_CP15BEN	|
		   SCTLR_EL1_ITD	|
	NEEDS_FEAT(SCTLR_EL1_CP15BEN, FEAT_AA32EL0),
	NEEDS_FEAT_FLAG(SCTLR_EL1_ITD	|
			SCTLR_EL1_SED,
		   FEAT_AA32EL0),
			AS_RES1, FEAT_AA32EL0),
	NEEDS_FEAT(SCTLR_EL1_BT0	|
		   SCTLR_EL1_BT1,
		   FEAT_BTI),
	NEEDS_FEAT(SCTLR_EL1_CMOW, FEAT_CMOW),
	NEEDS_FEAT(SCTLR_EL1_TSCXT, feat_csv2_2_csv2_1p2),
	NEEDS_FEAT(SCTLR_EL1_EIS	|
	NEEDS_FEAT_FLAG(SCTLR_EL1_TSCXT,
			AS_RES1, feat_csv2_2_csv2_1p2),
	NEEDS_FEAT_FLAG(SCTLR_EL1_EIS	|
			SCTLR_EL1_EOS,
		   FEAT_ExS),
			AS_RES1, FEAT_ExS),
	NEEDS_FEAT(SCTLR_EL1_EnFPM, FEAT_FPMR),
	NEEDS_FEAT(SCTLR_EL1_IESB, FEAT_IESB),
	NEEDS_FEAT(SCTLR_EL1_EnALS, FEAT_LS64),
	NEEDS_FEAT(SCTLR_EL1_EnAS0, FEAT_LS64_ACCDATA),
	NEEDS_FEAT(SCTLR_EL1_EnASR, FEAT_LS64_V),
	NEEDS_FEAT(SCTLR_EL1_nAA, FEAT_LSE2),
	NEEDS_FEAT(SCTLR_EL1_LSMAOE	|
	NEEDS_FEAT_FLAG(SCTLR_EL1_LSMAOE	|
			SCTLR_EL1_nTLSMD,
		   FEAT_LSMAOC),
			AS_RES1, FEAT_LSMAOC),
	NEEDS_FEAT(SCTLR_EL1_EE, FEAT_MixedEnd),
	NEEDS_FEAT(SCTLR_EL1_E0E, feat_mixedendel0),
	NEEDS_FEAT(SCTLR_EL1_MSCEn, FEAT_MOPS),
@@ -1121,7 +1122,8 @@ static const struct reg_bits_to_feat_map sctlr_el1_feat_map[] = {
	NEEDS_FEAT(SCTLR_EL1_NMI	|
		   SCTLR_EL1_SPINTMASK,
		   FEAT_NMI),
	NEEDS_FEAT(SCTLR_EL1_SPAN, FEAT_PAN),
	NEEDS_FEAT_FLAG(SCTLR_EL1_SPAN,
			AS_RES1, FEAT_PAN),
	NEEDS_FEAT(SCTLR_EL1_EPAN, FEAT_PAN3),
	NEEDS_FEAT(SCTLR_EL1_EnDA	|
		   SCTLR_EL1_EnDB	|