Skip to content

Commit ab1f377

Browse files
author
Marc Zyngier
committed
KVM: arm64: Get rid of FIXED_VALUE altogether
We have now killed every occurrences of FIXED_VALUE, and we can therefore drop the whole infrastructure. Good riddance. Reviewed-by: Fuad Tabba <tabba@google.com> Tested-by: Fuad Tabba <tabba@google.com> Link: https://patch.msgid.link/20260202184329.2724080-16-maz@kernel.org Signed-off-by: Marc Zyngier <maz@kernel.org>
1 parent f01e342 commit ab1f377

1 file changed

Lines changed: 5 additions & 24 deletions

File tree

arch/arm64/kvm/config.c

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,12 @@ struct reg_bits_to_feat_map {
2222

2323
#define NEVER_FGU BIT(0) /* Can trap, but never UNDEF */
2424
#define CALL_FUNC BIT(1) /* Needs to evaluate tons of crap */
25-
#define FIXED_VALUE BIT(2) /* RAZ/WI or RAO/WI in KVM */
25+
#define FORCE_RESx BIT(2) /* Unconditional RESx */
2626
#define MASKS_POINTER BIT(3) /* Pointer to fgt_masks struct instead of bits */
2727
#define AS_RES1 BIT(4) /* RES1 when not supported */
2828
#define REQUIRES_E2H1 BIT(5) /* Add HCR_EL2.E2H RES1 as a pre-condition */
2929
#define RES1_WHEN_E2H0 BIT(6) /* RES1 when E2H=0 and not supported */
3030
#define RES1_WHEN_E2H1 BIT(7) /* RES1 when E2H=1 and not supported */
31-
#define FORCE_RESx BIT(8) /* Unconditional RESx */
3231

3332
unsigned long flags;
3433

@@ -41,7 +40,6 @@ struct reg_bits_to_feat_map {
4140
s8 lo_lim;
4241
};
4342
bool (*match)(struct kvm *);
44-
bool (*fval)(struct kvm *, struct resx *);
4543
};
4644
};
4745

@@ -74,13 +72,6 @@ struct reg_feat_map_desc {
7472
.lo_lim = id ##_## fld ##_## lim \
7573
}
7674

77-
#define __NEEDS_FEAT_2(m, f, w, fun, dummy) \
78-
{ \
79-
.w = (m), \
80-
.flags = (f) | CALL_FUNC, \
81-
.fval = (fun), \
82-
}
83-
8475
#define __NEEDS_FEAT_1(m, f, w, fun) \
8576
{ \
8677
.w = (m), \
@@ -100,9 +91,6 @@ struct reg_feat_map_desc {
10091
#define NEEDS_FEAT_FLAG(m, f, ...) \
10192
__NEEDS_FEAT_FLAG(m, f, bits, __VA_ARGS__)
10293

103-
#define NEEDS_FEAT_FIXED(m, ...) \
104-
__NEEDS_FEAT_FLAG(m, FIXED_VALUE, bits, __VA_ARGS__, 0)
105-
10694
#define NEEDS_FEAT_MASKS(p, ...) \
10795
__NEEDS_FEAT_FLAG(p, MASKS_POINTER, masks, __VA_ARGS__)
10896

@@ -1303,19 +1291,12 @@ static struct resx compute_resx_bits(struct kvm *kvm,
13031291
if (map[i].flags & exclude)
13041292
continue;
13051293

1306-
switch (map[i].flags & (FORCE_RESx | CALL_FUNC | FIXED_VALUE)) {
1307-
case CALL_FUNC | FIXED_VALUE:
1308-
map[i].fval(kvm, &resx);
1309-
continue;
1310-
case CALL_FUNC:
1311-
match = map[i].match(kvm);
1312-
break;
1313-
case FORCE_RESx:
1294+
if (map[i].flags & FORCE_RESx)
13141295
match = false;
1315-
break;
1316-
default:
1296+
else if (map[i].flags & CALL_FUNC)
1297+
match = map[i].match(kvm);
1298+
else
13171299
match = idreg_feat_match(kvm, &map[i]);
1318-
}
13191300

13201301
if (map[i].flags & REQUIRES_E2H1)
13211302
match &= !e2h0;

0 commit comments

Comments
 (0)