| POWER9 eXternal Interrupt Virtualization Engine (XIVE Gen1) |
| ========================================================== |
| |
| Device types supported: |
| KVM_DEV_TYPE_XIVE POWER9 XIVE Interrupt Controller generation 1 |
| |
| This device acts as a VM interrupt controller. It provides the KVM |
| interface to configure the interrupt sources of a VM in the underlying |
| POWER9 XIVE interrupt controller. |
| |
| Only one XIVE instance may be instantiated. A guest XIVE device |
| requires a POWER9 host and the guest OS should have support for the |
| XIVE native exploitation interrupt mode. If not, it should run using |
| the legacy interrupt mode, referred as XICS (POWER7/8). |
| |
| * Groups: |
| |
| 1. KVM_DEV_XIVE_GRP_CTRL |
| Provides global controls on the device |
| |
| 2. KVM_DEV_XIVE_GRP_SOURCE (write only) |
| Initializes a new source in the XIVE device and mask it. |
| Attributes: |
| Interrupt source number (64-bit) |
| The kvm_device_attr.addr points to a __u64 value: |
| bits: | 63 .... 2 | 1 | 0 |
| values: | unused | level | type |
| - type: 0:MSI 1:LSI |
| - level: assertion level in case of an LSI. |
| Errors: |
| -E2BIG: Interrupt source number is out of range |
| -ENOMEM: Could not create a new source block |
| -EFAULT: Invalid user pointer for attr->addr. |
| -ENXIO: Could not allocate underlying HW interrupt |