Re: [PATCH] Documentation: KVM: Fix the GICv5 KVM_IRQ_LINE PPI range

Marc Zyngier <[email protected]>
Newsgroups org.kernel.vger.linux-doc,dev.linux.lists.kvmarm,org.kernel.vger.kvm,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Sat, 15 Aug 2026 10:25:37 +0100,
Karl Mehltretter <[email protected]> wrote:
> 
> KVM rejects GICv5 PPI irq_id values above 63, while the documented
> range extends to 127. KVM also rejects PPIs not present in the

This is on purpose, and that's not a bug.

> KVM_DEV_ARM_VGIC_USERSPACE_PPIS mask. That mask is populated by
> KVM_DEV_ARM_VGIC_CTRL_INIT; reading it beforehand currently succeeds
> but returns all zeroes.
> 
> Correct the range, document the mask restriction, and require the mask
> to be queried after VGIC initialization.
> 
> Fixes: b88d05a893cb ("KVM: arm64: gic-v5: Support GICv5 interrupts with KVM_IRQ_LINE")
> Assisted-by: Claude:claude-fable-5
> Signed-off-by: Karl Mehltretter <[email protected]>
> ---
>  Documentation/virt/kvm/api.rst                  | 4 +++-
>  Documentation/virt/kvm/devices/arm-vgic-v5.rst | 3 +++
>  2 files changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst
> index e3003a241d5b0..6d8fd74174492 100644
> --- a/Documentation/virt/kvm/api.rst
> +++ b/Documentation/virt/kvm/api.rst
> @@ -912,7 +912,9 @@ The irq_type field has the following values:
>  	       in-kernel GICv5: SPI, irq_id between 0 and 65535 (incl.)
>  - KVM_ARM_IRQ_TYPE_PPI:
>  	       in-kernel GICv2/GICv3: PPI, irq_id between 16 and 31 (incl.)
> -	       in-kernel GICv5: PPI, irq_id between 0 and 127 (incl.)
> +	       in-kernel GICv5: PPI, irq_id between 0 and 63 (incl.), and

No. Please understand the difference between *implementation* and
*architecture*.

Also, the GICv5 architecture mandates which PPI is used for which
device for the range 0-63. This is not a carbon copy of the previous
versions.

> +	       only if present in the mask returned by the
> +	       KVM_DEV_ARM_VGIC_USERSPACE_PPIS attribute

Which, if you look carefully enough, returns a 128bit mask, as per the
architecture.

>  
>  (The irq_id field thus corresponds nicely to the IRQ ID in the ARM GIC specs)
>  
> diff --git a/Documentation/virt/kvm/devices/arm-vgic-v5.rst b/Documentation/virt/kvm/devices/arm-vgic-v5.rst
> index d328cf1e22c1f..e24aed0c4afcd 100644
> --- a/Documentation/virt/kvm/devices/arm-vgic-v5.rst
> +++ b/Documentation/virt/kvm/devices/arm-vgic-v5.rst
> @@ -35,6 +35,9 @@ Groups:
>        populated with the userspace PPI mask. The lower __u64 contains the mask
>        for the lower 64 PPIS, with the remaining 64 being in the second __u64.
>  
> +      Userspace must query this attribute after initializing the VGIC with
> +      KVM_DEV_ARM_VGIC_CTRL_INIT.
> +

Must? Why? Userspace can perfectly live with ever querying this.

	M.

-- 
Without deviation from the norm, progress is not possible.
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.