|
@@ -4147,3 +4147,45 @@ This capability, if KVM_CHECK_EXTENSION indicates that it is
|
|
|
available, means that that the kernel can support guests using the
|
|
|
hashed page table MMU defined in Power ISA V3.00 (as implemented in
|
|
|
the POWER9 processor), including in-memory segment tables.
|
|
|
+
|
|
|
+
|
|
|
+8.5 KVM_CAP_ARM_USER_IRQ
|
|
|
+
|
|
|
+Architectures: arm, arm64
|
|
|
+This capability, if KVM_CHECK_EXTENSION indicates that it is available, means
|
|
|
+that if userspace creates a VM without an in-kernel interrupt controller, it
|
|
|
+will be notified of changes to the output level of in-kernel emulated devices,
|
|
|
+which can generate virtual interrupts, presented to the VM.
|
|
|
+For such VMs, on every return to userspace, the kernel
|
|
|
+updates the vcpu's run->s.regs.device_irq_level field to represent the actual
|
|
|
+output level of the device.
|
|
|
+
|
|
|
+Whenever kvm detects a change in the device output level, kvm guarantees at
|
|
|
+least one return to userspace before running the VM. This exit could either
|
|
|
+be a KVM_EXIT_INTR or any other exit event, like KVM_EXIT_MMIO. This way,
|
|
|
+userspace can always sample the device output level and re-compute the state of
|
|
|
+the userspace interrupt controller. Userspace should always check the state
|
|
|
+of run->s.regs.device_irq_level on every kvm exit.
|
|
|
+The value in run->s.regs.device_irq_level can represent both level and edge
|
|
|
+triggered interrupt signals, depending on the device. Edge triggered interrupt
|
|
|
+signals will exit to userspace with the bit in run->s.regs.device_irq_level
|
|
|
+set exactly once per edge signal.
|
|
|
+
|
|
|
+The field run->s.regs.device_irq_level is available independent of
|
|
|
+run->kvm_valid_regs or run->kvm_dirty_regs bits.
|
|
|
+
|
|
|
+If KVM_CAP_ARM_USER_IRQ is supported, the KVM_CHECK_EXTENSION ioctl returns a
|
|
|
+number larger than 0 indicating the version of this capability is implemented
|
|
|
+and thereby which bits in in run->s.regs.device_irq_level can signal values.
|
|
|
+
|
|
|
+Currently the following bits are defined for the device_irq_level bitmap:
|
|
|
+
|
|
|
+ KVM_CAP_ARM_USER_IRQ >= 1:
|
|
|
+
|
|
|
+ KVM_ARM_DEV_EL1_VTIMER - EL1 virtual timer
|
|
|
+ KVM_ARM_DEV_EL1_PTIMER - EL1 physical timer
|
|
|
+ KVM_ARM_DEV_PMU - ARM PMU overflow interrupt signal
|
|
|
+
|
|
|
+Future versions of kvm may implement additional events. These will get
|
|
|
+indicated by returning a higher number from KVM_CHECK_EXTENSION and will be
|
|
|
+listed above.
|