Thread (53 messages) 53 messages, 3 authors, 2026-02-02

Re: [PATCH 13/20] KVM: arm64: Move RESx into individual register descriptors

From: Fuad Tabba <tabba@google.com>
Date: 2026-01-29 18:14:09
Also in: kvm, kvmarm

quoted hunk ↗ jump to hunk
Actually, this interacts badly with check_feat_map(), which tries to
find whether we have fully populated the registers, excluding the RESx
bits. But since we consider E2H to be a reserved but, we end-up with:

[    0.141317] kvm [1]: Undefined HCR_EL2 behaviour, bits 0000000400000000

With my approach, it was possible to distinguish the architecturally
RESx bits (defined as RES0 or RES1), as they were the only ones with
the FORCE_RESx attribute.

I can work around it with
diff --git a/arch/arm64/kvm/config.c b/arch/arm64/kvm/config.c
index 364bdd1e5be51..398458f4a6b7b 100644
--- a/arch/arm64/kvm/config.c
+++ b/arch/arm64/kvm/config.c
@@ -1283,7 +1283,7 @@ static void __init check_feat_map(const struct reg_bits_to_feat_map *map,
        u64 mask = 0;

        for (int i = 0; i < map_size; i++)
-               if (!(map[i].flags & FORCE_RESx))
+               if (!(map[i].flags & FORCE_RESx) || !(map[i].bits & resx))
                        mask |= map[i].bits;

        if (mask != ~resx)
but it becomes a bit awkward...
If it becomes more complicated than the original, then what's the
point. Up to you whether you want to try to pursue this or not. From
my part:

Reviewed-by: Fuad Tabba <tabba@google.com>

Thanks,
/fuad



Thanks,

        M.

--
Without deviation from the norm, progress is not possible.
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help