1.. SPDX-License-Identifier: GPL-2.0 2 3==================================================== 4ARM Virtual Generic Interrupt Controller v5 (VGICv5) 5==================================================== 6 7 8Device types supported: 9 - KVM_DEV_TYPE_ARM_VGIC_V5 ARM Generic Interrupt Controller v5.0 10 11Only one VGIC instance may be instantiated through this API. The created VGIC 12will act as the VM interrupt controller, requiring emulated user-space devices 13to inject interrupts to the VGIC instead of directly to CPUs. 14 15Creating a guest GICv5 device requires a host GICv5 host. The current VGICv5 16device only supports PPI interrupts. These can either be injected from emulated 17in-kernel devices (such as the Arch Timer, or PMU), or via the KVM_IRQ_LINE 18ioctl. 19 20Groups: 21 KVM_DEV_ARM_VGIC_GRP_CTRL 22 Attributes: 23 24 KVM_DEV_ARM_VGIC_CTRL_INIT 25 request the initialization of the VGIC, no additional parameter in 26 kvm_device_attr.addr. Must be called after all VCPUs have been created. 27 28 KVM_DEV_ARM_VGIC_USERPSPACE_PPIs 29 request the mask of userspace-drivable PPIs. Only a subset of the PPIs can 30 be directly driven from userspace with GICv5, and the returned mask 31 informs userspace of which it is allowed to drive via KVM_IRQ_LINE. 32 33 Userspace must allocate and point to __u64[2] of data in 34 kvm_device_attr.addr. When this call returns, the provided memory will be 35 populated with the userspace PPI mask. The lower __u64 contains the mask 36 for the lower 64 PPIS, with the remaining 64 being in the second __u64. 37 38 This is a read-only attribute, and cannot be set. Attempts to set it are 39 rejected. 40 41 Errors: 42 43 ======= ======================================================== 44 -ENXIO VGIC not properly configured as required prior to calling 45 this attribute 46 -ENODEV no online VCPU 47 -ENOMEM memory shortage when allocating vgic internal data 48 -EFAULT Invalid guest ram access 49 -EBUSY One or more VCPUS are running 50 ======= ======================================================== 51