summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorAndre Przywara <andre.przywara@arm.com>2016-07-15 12:43:31 +0100
committerMarc Zyngier <marc.zyngier@arm.com>2016-07-18 18:14:35 +0100
commit1085fdc68c6097244627a02a56bd2d8fe58a1a9c (patch)
tree6a26676301cddc817aa4a4b0ba8eee7e841383f4 /include
parent59c5ab40989afa5aba9c4a0918a5ed910a917422 (diff)
downloadblackbird-op-linux-1085fdc68c6097244627a02a56bd2d8fe58a1a9c.tar.gz
blackbird-op-linux-1085fdc68c6097244627a02a56bd2d8fe58a1a9c.zip
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>
Diffstat (limited to 'include')
-rw-r--r--include/kvm/arm_vgic.h3
-rw-r--r--include/uapi/linux/kvm.h2
2 files changed, 5 insertions, 0 deletions
diff --git a/include/kvm/arm_vgic.h b/include/kvm/arm_vgic.h
index 685f33975ce4..8609faced83e 100644
--- a/include/kvm/arm_vgic.h
+++ b/include/kvm/arm_vgic.h
@@ -134,6 +134,7 @@ struct vgic_its {
gpa_t vgic_its_base;
bool enabled;
+ bool initialized;
struct vgic_io_device iodev;
};
@@ -167,6 +168,8 @@ struct vgic_dist {
struct vgic_io_device dist_iodev;
+ bool has_its;
+
/*
* Contains the attributes and gpa of the LPI configuration table.
* Since we report GICR_TYPER.CommonLPIAff as 0b00, we can share
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
index 7de96f5bb92c..d8c4c324cfae 100644
--- a/include/uapi/linux/kvm.h
+++ b/include/uapi/linux/kvm.h
@@ -1077,6 +1077,8 @@ enum kvm_device_type {
#define KVM_DEV_TYPE_FLIC KVM_DEV_TYPE_FLIC
KVM_DEV_TYPE_ARM_VGIC_V3,
#define KVM_DEV_TYPE_ARM_VGIC_V3 KVM_DEV_TYPE_ARM_VGIC_V3
+ KVM_DEV_TYPE_ARM_VGIC_ITS,
+#define KVM_DEV_TYPE_ARM_VGIC_ITS KVM_DEV_TYPE_ARM_VGIC_ITS
KVM_DEV_TYPE_MAX,
};
OpenPOWER on IntegriCloud