mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 01:53:29 +02:00
KVM: arm64: Allow RES1 bits to be inferred from configuration
So far, when a bit field is tied to an unsupported feature, we set it as RES0. This is almost correct, but there are a few exceptions where the bits become RES1. Add a AS_RES1 qualifier that instruct the RESx computing code to simply do that. Reviewed-by: Joey Gouly <joey.gouly@arm.com> Reviewed-by: Fuad Tabba <tabba@google.com> Tested-by: Fuad Tabba <tabba@google.com> Link: https://patch.msgid.link/20260202184329.2724080-8-maz@kernel.org Signed-off-by: Marc Zyngier <maz@kernel.org>
This commit is contained in:
parent
bbea27636e
commit
459fc4e77e
|
|
@ -24,6 +24,7 @@ struct reg_bits_to_feat_map {
|
|||
#define CALL_FUNC BIT(1) /* Needs to evaluate tons of crap */
|
||||
#define FIXED_VALUE BIT(2) /* RAZ/WI or RAO/WI in KVM */
|
||||
#define MASKS_POINTER BIT(3) /* Pointer to fgt_masks struct instead of bits */
|
||||
#define AS_RES1 BIT(4) /* RES1 when not supported */
|
||||
|
||||
unsigned long flags;
|
||||
|
||||
|
|
@ -1315,8 +1316,12 @@ static struct resx __compute_fixed_bits(struct kvm *kvm,
|
|||
else
|
||||
match = idreg_feat_match(kvm, &map[i]);
|
||||
|
||||
if (!match || (map[i].flags & FIXED_VALUE))
|
||||
resx.res0 |= reg_feat_map_bits(&map[i]);
|
||||
if (!match || (map[i].flags & FIXED_VALUE)) {
|
||||
if (map[i].flags & AS_RES1)
|
||||
resx.res1 |= reg_feat_map_bits(&map[i]);
|
||||
else
|
||||
resx.res0 |= reg_feat_map_bits(&map[i]);
|
||||
}
|
||||
}
|
||||
|
||||
return resx;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user