summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm64/kvm/config.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/arm64/kvm/config.c b/arch/arm64/kvm/config.c
index 9ad7eb5f4b98..72c6dd7656ba 100644
--- a/arch/arm64/kvm/config.c
+++ b/arch/arm64/kvm/config.c
@@ -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;