Commit | Line | Data |
---|---|---|
71484802 CD |
1 | ARM Virtual Interrupt Translation Service (ITS) |
2 | =============================================== | |
3 | ||
4 | Device types supported: | |
5 | KVM_DEV_TYPE_ARM_VGIC_ITS ARM Interrupt Translation Service Controller | |
6 | ||
7 | The ITS allows MSI(-X) interrupts to be injected into guests. This extension is | |
8 | optional. Creating a virtual ITS controller also requires a host GICv3 (see | |
9 | arm-vgic-v3.txt), but does not depend on having physical ITS controllers. | |
10 | ||
11 | There can be multiple ITS controllers per guest, each of them has to have | |
12 | a separate, non-overlapping MMIO region. | |
13 | ||
14 | ||
15 | Groups: | |
16 | KVM_DEV_ARM_VGIC_GRP_ADDR | |
17 | Attributes: | |
18 | KVM_VGIC_ITS_ADDR_TYPE (rw, 64-bit) | |
19 | Base address in the guest physical address space of the GICv3 ITS | |
20 | control register frame. | |
21 | This address needs to be 64K aligned and the region covers 128K. | |
22 | Errors: | |
23 | -E2BIG: Address outside of addressable IPA range | |
24 | -EINVAL: Incorrectly aligned address | |
25 | -EEXIST: Address already configured | |
26 | -EFAULT: Invalid user pointer for attr->addr. | |
27 | -ENODEV: Incorrect attribute or the ITS is not supported. | |
28 | ||
29 | ||
30 | KVM_DEV_ARM_VGIC_GRP_CTRL | |
31 | Attributes: | |
32 | KVM_DEV_ARM_VGIC_CTRL_INIT | |
33 | request the initialization of the ITS, no additional parameter in | |
34 | kvm_device_attr.addr. | |
35 | Errors: | |
36 | -ENXIO: ITS not properly configured as required prior to setting | |
37 | this attribute | |
38 | -ENOMEM: Memory shortage when allocating ITS internal data |