[PATCH v3 13/17] KVM: arm64: Alloc pkvm_hyp_vm using pKVM heap allocator

Fuad Tabba tabba at google.com
Thu Jul 23 05:14:10 PDT 2026


Hi Vincent,

On Mon, 20 Jul 2026 at 18:15, Vincent Donnefort <vdonnefort at google.com> wrote:
...

> +static void errno_to_smccc(int ret, struct kvm_cpu_context *host_ctxt)
> +{
> +       struct pkvm_hyp_req req = { .type = PKVM_HYP_NO_REQ };
> +
> +       switch (ret) {
> +       case -ENOMEM:
> +               req.type = PKVM_HYP_REQ_HYP_ALLOC;
> +               req.mem.nr_pages = hyp_alloc_topup_needed();
> +               break;
> +       }

Sashiko raised this in a different patch. This turns any -ENOMEM into
a top-up request, but hyp_allocator_map() also returns -ENOMEM from
the pkvm_map_private_va_range() failure path without setting
topup_needed, so nr_pages can be 0. The host then handles a 0-page
top-up and the while (!__ret) loop in pkvm_call_hyp_req() just
re-issues the same failing hypercall.

This might not be reachable today, but could you make it so that
errno_to_smccc() raises the request only when nr_pages is non-zero,
and let -ENOMEM propagate otherwise?

Cheers,
/fuad



More information about the linux-arm-kernel mailing list