Re: [PATCH v4 07/17] KVM: arm64: Add PKVM_HYP_REQ_HYP_ALLOC request

Fuad Tabba <[email protected]>
Newsgroups dev.linux.lists.kvmarm,dev.linux.lists.sashiko-reviews
Message-ID <CA+EHjTyfunbnF1RCVxcwQsK+LC79iPSQx4QHZ0SobjRO5-OuNg@mail.gmail.com>
On Fri, 31 Jul 2026 at 16:08, <[email protected]> wrote:
>
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [Medium] The __pkvm_hyp_topup hypercall is incorrectly placed in the always-on band, making it reachable in standard nVHE mode.
> --
>
> --- Patch [7]: [PATCH v4 07/17] KVM: arm64: Add PKVM_HYP_REQ_HYP_ALLOC request ---
> commit c7805b75faa5ebe4c309f41eb0346f2ae0a468dd
> Author: Vincent Donnefort <[email protected]>
>
> KVM: arm64: Add PKVM_HYP_REQ_HYP_ALLOC request
>
> Introduce a new pkvm_hyp_request type asking the host to top up the pKVM
> heap allocator.
>
> > diff --git a/arch/arm64/include/asm/kvm_asm.h b/arch/arm64/include/asm/kvm_asm.h
> > index 043495f7fc78b..b77acfd7d1c8a 100644
> > --- a/arch/arm64/include/asm/kvm_asm.h
> > +++ b/arch/arm64/include/asm/kvm_asm.h
> > @@ -89,6 +89,7 @@ enum __kvm_host_smccc_func {
> >       __KVM_HOST_SMCCC_FUNC___vgic_v3_restore_vmcr_aprs,
> >       __KVM_HOST_SMCCC_FUNC___vgic_v5_save_apr,
> >       __KVM_HOST_SMCCC_FUNC___vgic_v5_restore_vmcr_apr,
> > +     __KVM_HOST_SMCCC_FUNC___pkvm_hyp_topup,
> >
> >       MARKER(__KVM_HOST_SMCCC_FUNC_PKVM_ONLY),
>
> [Severity: Medium]
> Should __KVM_HOST_SMCCC_FUNC___pkvm_hyp_topup be placed after the
> __KVM_HOST_SMCCC_FUNC_PKVM_ONLY marker instead of before it?
>
> Placing it here in the always-on band makes it reachable in standard
> nVHE mode or before pKVM is finalized. If the host kernel executes this
> hypercall during those phases, it could attempt to invoke
> hyp_alloc_topup() against uninitialized pKVM heap structures, potentially
> causing a hypervisor panic.

It does not panic. __host_check_page_state_range() calls
check_range_allowed_memory() before it touches the vmemmap, and that
returns -EPERM because hyp_memblock_nr is zero outside protected mode.

No, it should not move. __pkvm_hyp_topup is in the always-on band
deliberately, so the host can top the heap up before deprivilege.

/fuad

>
> [ ... ]
>
> > diff --git a/arch/arm64/kvm/hyp/nvhe/hyp-main.c b/arch/arm64/kvm/hyp/nvhe/hyp-main.c
> > index d3c69de698f48..439b91fc8aecf 100644
> > --- a/arch/arm64/kvm/hyp/nvhe/hyp-main.c
> > +++ b/arch/arm64/kvm/hyp/nvhe/hyp-main.c
> [ ... ]
> > @@ -740,6 +765,7 @@ static const hcall_t host_hcall[] = {
> >       HANDLE_FUNC(__vgic_v3_restore_vmcr_aprs),
> >       HANDLE_FUNC(__vgic_v5_save_apr),
> >       HANDLE_FUNC(__vgic_v5_restore_vmcr_apr),
> > +     HANDLE_FUNC(__pkvm_hyp_topup),
> >
> >       HANDLE_FUNC(__pkvm_host_share_hyp),
> >       HANDLE_FUNC(__pkvm_host_unshare_hyp),
>
> [Severity: Medium]
> Does this handler registration also need to be moved to mirror the
> enum placement in the finalized-only band?
>
> --
> Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=7
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.