[PATCH v5] KVM: arm/arm64: Add VGICv3 save/restore API documentation
From: Peter Maydell <hidden>
Date: 2016-07-26 11:03:46
Also in:
kvm, kvmarm
On 26 July 2016 at 11:39, Christoffer Dall [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Factor out the GICv3 and ITS-specific documentation into a separate documentation file. Add description for how to access distributor, redistributor, and CPU interface registers for GICv3 in this new file, and add a group for accessing level triggered IRQ information for GICv3 as well. Signed-off-by: Christoffer Dall <redacted> --- Changes since v4: - Clarify register reads as per Peter's comments on v4 - Factored out ITS documenation into separate file - Clarified error conditions on all GRP_ADDR groups - Renamed KVM_VGIC_V3_ADDR_TYPE_ITS to KVM_VGIC_ITS_ADDR_TYPE in the documentation to be in line with the code. - Did not apply Peter's reviewed-by due to the conflicts and updates related to the ITS. Changes since v3: - Fix typos - Clarified level register containing 32 IRQs - Removed limitations about priority support which are no longer true - Special-case the SPENDR register accesses to access the latch state and the CPENDR register accesses to be RAZ/WI. Changes since v2: - Changed distributor access to be 32-bits in size - Clearly specified data type pointed to by addr field - Specified exception behavior for STATUSR registers - Added group for level-triggered IRQ status info - Removed acks from Marc/Peter as content has changed Documentation/virtual/kvm/devices/arm-vgic-its.txt | 38 ++++ Documentation/virtual/kvm/devices/arm-vgic-v3.txt | 207 +++++++++++++++++++++ Documentation/virtual/kvm/devices/arm-vgic.txt | 52 ++---- 3 files changed, 262 insertions(+), 35 deletions(-) create mode 100644 Documentation/virtual/kvm/devices/arm-vgic-its.txt create mode 100644 Documentation/virtual/kvm/devices/arm-vgic-v3.txtdiff --git a/Documentation/virtual/kvm/devices/arm-vgic-its.txt b/Documentation/virtual/kvm/devices/arm-vgic-its.txt new file mode 100644 index 0000000..ffae1cd --- /dev/null +++ b/Documentation/virtual/kvm/devices/arm-vgic-its.txt@@ -0,0 +1,38 @@ +ARM Virtual Interrupt Translation Service (ITS) +=============================================== + +Device types supported: + KVM_DEV_TYPE_ARM_VGIC_ITS ARM Interrupt Translation Service Controller + +Creating a virtual ITS controller also requires a host GICv3 (see +arm-vgic-v3.txt), but does not depend on having physical ITS controllers. + +There can be multiple ITS controllers per guest, each of them has to have +a separate, non-overlapping MMIO region. + + +Groups: + KVM_DEV_ARM_VGIC_GRP_ADDR + Attributes: + KVM_VGIC_ITS_ADDR_TYPE (rw, 64-bit) + Base address in the guest physical address space of the GICv3 ITS + control register frame. The ITS allows MSI(-X) interrupts to be + injected into guests. This extension is optional.
Shouldn't "The ITS allows MSI(-X) interrupts to be injected into guests. This extension is optional." be in the introductory text above, not the description of this attribute?
+ This address needs to be 64K aligned and the region covers 128K. + Errors: + -E2BIG: Address outside of addressable IPA range + -EINVAL: Incorrectly aligned address + -EEXIST: Address already configured + -EFAULT: Invalid user pointer for attr->addr. + -ENODEV: Incrorect attribute or the ITS is not supported.
"Incorrect"
+ + + KVM_DEV_ARM_VGIC_GRP_CTRL + Attributes: + KVM_DEV_ARM_VGIC_CTRL_INIT + request the initialization of the ITS, no additional parameter in + kvm_device_attr.addr. + Errors: + -ENXIO: ITS not properly configured as required prior to calling + this attribute
"setting this attribute".
+ -ENOMEM: Memory shortage when allocating ITS internal data
Otherwise Reviewed-by: Peter Maydell <redacted> -- PMM