Merge tag 'ceph-for-4.9-rc1' of git://github.com/ceph/ceph-client
[cascardo/linux.git] / Documentation / virtual / kvm / devices / arm-vgic-its.txt
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