]> www.infradead.org Git - users/hch/misc.git/commitdiff
KVM: arm64: Expand valid block mappings to FEAT_LPA/LPA2 support
authorMarc Zyngier <maz@kernel.org>
Mon, 28 Jul 2025 15:29:56 +0000 (16:29 +0100)
committerMarc Zyngier <maz@kernel.org>
Sat, 20 Sep 2025 10:05:13 +0000 (11:05 +0100)
With 52bit PAs, block mappings can exist at different levels (such
as level 0 for 4kB pages, or level 1 for 16kB and 64kB pages).

Account for this in walk_s1().

Reviewed-by: Oliver Upton <oliver.upton@linux.dev>
Signed-off-by: Marc Zyngier <maz@kernel.org>
arch/arm64/kvm/at.c

index d06cf816f848a8c034a254905f3901e76ebba3c3..e740df0d82f85befeda1333f4f763c1c5435e609 100644 (file)
@@ -448,11 +448,11 @@ static int walk_s1(struct kvm_vcpu *vcpu, struct s1_walk_info *wi,
 
                switch (BIT(wi->pgshift)) {
                case SZ_4K:
-                       valid_block = level == 1 || level == 2;
+                       valid_block = level == 1 || level == 2 || (wi->pa52bit && level == 0);
                        break;
                case SZ_16K:
                case SZ_64K:
-                       valid_block = level == 2;
+                       valid_block = level == 2 || (wi->pa52bit && level == 1);
                        break;
                }