Re: [PATCH] KVM: arm64: Reject the stage-2 MMU pointer hypercalls under pKVM

From: Fuad Tabba

Date: Tue Sep 15 2026 - 05:50:40 EST


Hi Marc,

On Tue, 15 Sept 2026 at 10:24, Marc Zyngier <maz@xxxxxxxxxx> wrote:
[...]
> > @@ -602,6 +614,9 @@ static void handle___kvm_flush_cpu_context(struct kvm_cpu_context *host_ctxt)
> > {
> > DECLARE_REG(struct kvm_s2_mmu *, mmu, host_ctxt, 1);
> >
> > + if (unlikely(is_protected_kvm_enabled()))
> > + return;
> > +
> > __kvm_flush_cpu_context(kern_hyp_va(mmu));
> > }
> >
>
> Anf why not __kvm_flush_vm_context()? It doesn't take a S2 MMU
> pointer, but it is still logically wrong to let this being called.

I'll respin these, as you suggest, and consolidate them. I'll mention
in the cover letter which series/patches the new one supersedes.

Sorry for the noise,
/fuad

>
> And the whole sprinkling of guards like this is just horrible. We
> already have a filtering mechanism, just make use of it:
>
> diff --git a/arch/arm64/include/asm/kvm_asm.h b/arch/arm64/include/asm/kvm_asm.h
> index bffdeb36da1d2..51bf30b671fe4 100644
> --- a/arch/arm64/include/asm/kvm_asm.h
> +++ b/arch/arm64/include/asm/kvm_asm.h
> @@ -62,6 +62,11 @@ enum __kvm_host_smccc_func {
> __KVM_HOST_SMCCC_FUNC___kvm_enable_ssbs,
> __KVM_HOST_SMCCC_FUNC___vgic_v3_init_lrs,
> __KVM_HOST_SMCCC_FUNC___vgic_v3_get_gic_config,
> + __KVM_HOST_SMCCC_FUNC___kvm_flush_vm_context,
> + __KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid_ipa,
> + __KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid_ipa_nsh,
> + __KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid,
> + __KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid_range,
>
> MARKER(__KVM_HOST_SMCCC_FUNC_MIN_PKVM),
>
> @@ -70,11 +75,6 @@ enum __kvm_host_smccc_func {
> /* Hypercalls that are always available and common to [nh]VHE/pKVM. */
> __KVM_HOST_SMCCC_FUNC___kvm_adjust_pc,
> __KVM_HOST_SMCCC_FUNC___kvm_vcpu_run,
> - __KVM_HOST_SMCCC_FUNC___kvm_flush_vm_context,
> - __KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid_ipa,
> - __KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid_ipa_nsh,
> - __KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid,
> - __KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid_range,
> __KVM_HOST_SMCCC_FUNC___kvm_flush_cpu_context,
> __KVM_HOST_SMCCC_FUNC___kvm_timer_set_cntvoff,
> __KVM_HOST_SMCCC_FUNC___tracing_load,
>
>
> Thanks,
>
> M.
>
> --
> Without deviation from the norm, progress is not possible.