KVM: arm64: vgic-its: Introduce new KVM ITS device
authorAndre Przywara <andre.przywara@arm.com>
Fri, 15 Jul 2016 11:43:31 +0000 (12:43 +0100)
committerMarc Zyngier <marc.zyngier@arm.com>
Mon, 18 Jul 2016 17:14:35 +0000 (18:14 +0100)
commit1085fdc68c6097244627a02a56bd2d8fe58a1a9c
tree6a26676301cddc817aa4a4b0ba8eee7e841383f4
parent59c5ab40989afa5aba9c4a0918a5ed910a917422
KVM: arm64: vgic-its: Introduce new KVM ITS device

Introduce a new KVM device that represents an ARM Interrupt Translation
Service (ITS) controller. Since there can be multiple of this per guest,
we can't piggy back on the existing GICv3 distributor device, but create
a new type of KVM device.
On the KVM_CREATE_DEVICE ioctl we allocate and initialize the ITS data
structure and store the pointer in the kvm_device data.
Upon an explicit init ioctl from userland (after having setup the MMIO
address) we register the handlers with the kvm_io_bus framework.
Any reference to an ITS thus has to go via this interface.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Documentation/virtual/kvm/devices/arm-vgic.txt
arch/arm/kvm/arm.c
arch/arm64/include/uapi/asm/kvm.h
include/kvm/arm_vgic.h
include/uapi/linux/kvm.h
virt/kvm/arm/vgic/vgic-its.c
virt/kvm/arm/vgic/vgic-kvm-device.c
virt/kvm/arm/vgic/vgic-mmio-v3.c
virt/kvm/arm/vgic/vgic.h