Skip to content

Commit c27b8b7

Browse files
author
Marc Zyngier
committed
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: Fuad Tabba <tabba@google.com> Tested-by: Fuad Tabba <tabba@google.com> Link: https://patch.msgid.link/20260202184329.2724080-9-maz@kernel.org Signed-off-by: Marc Zyngier <maz@kernel.org>
1 parent 459fc4e commit c27b8b7

1 file changed

Lines changed: 14 additions & 12 deletions

File tree

arch/arm64/kvm/config.c

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1085,27 +1085,28 @@ static const DECLARE_FEAT_MAP(tcr2_el2_desc, TCR2_EL2,
10851085
tcr2_el2_feat_map, FEAT_TCR2);
10861086

10871087
static const struct reg_bits_to_feat_map sctlr_el1_feat_map[] = {
1088-
NEEDS_FEAT(SCTLR_EL1_CP15BEN |
1089-
SCTLR_EL1_ITD |
1090-
SCTLR_EL1_SED,
1091-
FEAT_AA32EL0),
1088+
NEEDS_FEAT(SCTLR_EL1_CP15BEN, FEAT_AA32EL0),
1089+
NEEDS_FEAT_FLAG(SCTLR_EL1_ITD |
1090+
SCTLR_EL1_SED,
1091+
AS_RES1, FEAT_AA32EL0),
10921092
NEEDS_FEAT(SCTLR_EL1_BT0 |
10931093
SCTLR_EL1_BT1,
10941094
FEAT_BTI),
10951095
NEEDS_FEAT(SCTLR_EL1_CMOW, FEAT_CMOW),
1096-
NEEDS_FEAT(SCTLR_EL1_TSCXT, feat_csv2_2_csv2_1p2),
1097-
NEEDS_FEAT(SCTLR_EL1_EIS |
1098-
SCTLR_EL1_EOS,
1099-
FEAT_ExS),
1096+
NEEDS_FEAT_FLAG(SCTLR_EL1_TSCXT,
1097+
AS_RES1, feat_csv2_2_csv2_1p2),
1098+
NEEDS_FEAT_FLAG(SCTLR_EL1_EIS |
1099+
SCTLR_EL1_EOS,
1100+
AS_RES1, FEAT_ExS),
11001101
NEEDS_FEAT(SCTLR_EL1_EnFPM, FEAT_FPMR),
11011102
NEEDS_FEAT(SCTLR_EL1_IESB, FEAT_IESB),
11021103
NEEDS_FEAT(SCTLR_EL1_EnALS, FEAT_LS64),
11031104
NEEDS_FEAT(SCTLR_EL1_EnAS0, FEAT_LS64_ACCDATA),
11041105
NEEDS_FEAT(SCTLR_EL1_EnASR, FEAT_LS64_V),
11051106
NEEDS_FEAT(SCTLR_EL1_nAA, FEAT_LSE2),
1106-
NEEDS_FEAT(SCTLR_EL1_LSMAOE |
1107-
SCTLR_EL1_nTLSMD,
1108-
FEAT_LSMAOC),
1107+
NEEDS_FEAT_FLAG(SCTLR_EL1_LSMAOE |
1108+
SCTLR_EL1_nTLSMD,
1109+
AS_RES1, FEAT_LSMAOC),
11091110
NEEDS_FEAT(SCTLR_EL1_EE, FEAT_MixedEnd),
11101111
NEEDS_FEAT(SCTLR_EL1_E0E, feat_mixedendel0),
11111112
NEEDS_FEAT(SCTLR_EL1_MSCEn, FEAT_MOPS),
@@ -1121,7 +1122,8 @@ static const struct reg_bits_to_feat_map sctlr_el1_feat_map[] = {
11211122
NEEDS_FEAT(SCTLR_EL1_NMI |
11221123
SCTLR_EL1_SPINTMASK,
11231124
FEAT_NMI),
1124-
NEEDS_FEAT(SCTLR_EL1_SPAN, FEAT_PAN),
1125+
NEEDS_FEAT_FLAG(SCTLR_EL1_SPAN,
1126+
AS_RES1, FEAT_PAN),
11251127
NEEDS_FEAT(SCTLR_EL1_EPAN, FEAT_PAN3),
11261128
NEEDS_FEAT(SCTLR_EL1_EnDA |
11271129
SCTLR_EL1_EnDB |

0 commit comments

Comments
 (0)