[PATCH] KVM: arm64: Fix handling of FEAT_GTG for unimplemented granule sizes

Oliver Upton oliver.upton at linux.dev
Tue Jul 1 19:35:44 PDT 2025


On Tue, Jul 01, 2025 at 03:22:25PM +0100, Marc Zyngier wrote:
> Booting an EL2 guest on a system only supporting a subset of the
> possible page sizes leads to interesting situations.
> 
> For example, on a system that only supports 4kB and 64kB, and is
> booted with a 4kB kernel, we end-up advertising 16kB support at
> stage-2, which is pretty weird.
> 
> That's because we consider that any S2 bigger than our base granule
> is fair game, irrespective of what the HW actually supports.

While this is ugly as hell, it is _technically_ OK though right? Since
we always shadow the stage-2 MMU we can emulate the otherwise
unsupported page size.

Now, mismatched granularity at S1 and S2 is a massive can of worms we
should not entertain :)

> Add new checks that will verify that this granule size is actually
> supported before publishing it to the guest.
> 
> Fixes: e7ef6ed4583ea ("KVM: arm64: Enforce NV limits on a per-idregs basis")
> Signed-off-by: Marc Zyngier <maz at kernel.org>

It'd be good to clarify the rationale a bit further in the changelog,
but full agreement on disallowing this sort of stupidity.

Reviewed-by: Oliver Upton <oliver.upton at linux.dev>

Thanks,
Oliver



More information about the linux-arm-kernel mailing list