KVM: arm/arm64: Add VGICv3 save/restore API documentation
[linux-2.6-block.git] / Documentation / virtual / kvm / devices / arm-vgic-its.txt
CommitLineData
71484802
CD
1ARM Virtual Interrupt Translation Service (ITS)
2===============================================
3
4Device types supported:
5 KVM_DEV_TYPE_ARM_VGIC_ITS ARM Interrupt Translation Service Controller
6
7The ITS allows MSI(-X) interrupts to be injected into guests. This extension is
8optional. Creating a virtual ITS controller also requires a host GICv3 (see
9arm-vgic-v3.txt), but does not depend on having physical ITS controllers.
10
11There can be multiple ITS controllers per guest, each of them has to have
12a separate, non-overlapping MMIO region.
13
14
15Groups:
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