diff options
author | Cornelia Huck <cornelia.huck@de.ibm.com> | 2013-07-15 07:36:01 -0400 |
---|---|---|
committer | Cornelia Huck <cornelia.huck@de.ibm.com> | 2014-03-21 08:43:00 -0400 |
commit | 84223598778ba08041f4297fda485df83414d57e (patch) | |
tree | bd93b83a13cc5cd1f6781bf681161fb3982548c5 /Documentation/virtual/kvm | |
parent | 841b91c584b6d1e2a2cb508bd2d0236cd37e1750 (diff) |
KVM: s390: irq routing for adapter interrupts.
Introduce a new interrupt class for s390 adapter interrupts and enable
irqfds for s390.
This is depending on a new s390 specific vm capability, KVM_CAP_S390_IRQCHIP,
that needs to be enabled by userspace.
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Diffstat (limited to 'Documentation/virtual/kvm')
-rw-r--r-- | Documentation/virtual/kvm/api.txt | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt index faf6fe9772c7..2cb1640a90ad 100644 --- a/Documentation/virtual/kvm/api.txt +++ b/Documentation/virtual/kvm/api.txt | |||
@@ -586,8 +586,8 @@ struct kvm_fpu { | |||
586 | 586 | ||
587 | 4.24 KVM_CREATE_IRQCHIP | 587 | 4.24 KVM_CREATE_IRQCHIP |
588 | 588 | ||
589 | Capability: KVM_CAP_IRQCHIP | 589 | Capability: KVM_CAP_IRQCHIP, KVM_CAP_S390_IRQCHIP (s390) |
590 | Architectures: x86, ia64, ARM, arm64 | 590 | Architectures: x86, ia64, ARM, arm64, s390 |
591 | Type: vm ioctl | 591 | Type: vm ioctl |
592 | Parameters: none | 592 | Parameters: none |
593 | Returns: 0 on success, -1 on error | 593 | Returns: 0 on success, -1 on error |
@@ -596,7 +596,10 @@ Creates an interrupt controller model in the kernel. On x86, creates a virtual | |||
596 | ioapic, a virtual PIC (two PICs, nested), and sets up future vcpus to have a | 596 | ioapic, a virtual PIC (two PICs, nested), and sets up future vcpus to have a |
597 | local APIC. IRQ routing for GSIs 0-15 is set to both PIC and IOAPIC; GSI 16-23 | 597 | local APIC. IRQ routing for GSIs 0-15 is set to both PIC and IOAPIC; GSI 16-23 |
598 | only go to the IOAPIC. On ia64, a IOSAPIC is created. On ARM/arm64, a GIC is | 598 | only go to the IOAPIC. On ia64, a IOSAPIC is created. On ARM/arm64, a GIC is |
599 | created. | 599 | created. On s390, a dummy irq routing table is created. |
600 | |||
601 | Note that on s390 the KVM_CAP_S390_IRQCHIP vm capability needs to be enabled | ||
602 | before KVM_CREATE_IRQCHIP can be used. | ||
600 | 603 | ||
601 | 604 | ||
602 | 4.25 KVM_IRQ_LINE | 605 | 4.25 KVM_IRQ_LINE |
@@ -1336,7 +1339,7 @@ KVM_ASSIGN_DEV_IRQ. Partial deassignment of host or guest IRQ is allowed. | |||
1336 | 4.52 KVM_SET_GSI_ROUTING | 1339 | 4.52 KVM_SET_GSI_ROUTING |
1337 | 1340 | ||
1338 | Capability: KVM_CAP_IRQ_ROUTING | 1341 | Capability: KVM_CAP_IRQ_ROUTING |
1339 | Architectures: x86 ia64 | 1342 | Architectures: x86 ia64 s390 |
1340 | Type: vm ioctl | 1343 | Type: vm ioctl |
1341 | Parameters: struct kvm_irq_routing (in) | 1344 | Parameters: struct kvm_irq_routing (in) |
1342 | Returns: 0 on success, -1 on error | 1345 | Returns: 0 on success, -1 on error |
@@ -1359,6 +1362,7 @@ struct kvm_irq_routing_entry { | |||
1359 | union { | 1362 | union { |
1360 | struct kvm_irq_routing_irqchip irqchip; | 1363 | struct kvm_irq_routing_irqchip irqchip; |
1361 | struct kvm_irq_routing_msi msi; | 1364 | struct kvm_irq_routing_msi msi; |
1365 | struct kvm_irq_routing_s390_adapter adapter; | ||
1362 | __u32 pad[8]; | 1366 | __u32 pad[8]; |
1363 | } u; | 1367 | } u; |
1364 | }; | 1368 | }; |
@@ -1366,6 +1370,7 @@ struct kvm_irq_routing_entry { | |||
1366 | /* gsi routing entry types */ | 1370 | /* gsi routing entry types */ |
1367 | #define KVM_IRQ_ROUTING_IRQCHIP 1 | 1371 | #define KVM_IRQ_ROUTING_IRQCHIP 1 |
1368 | #define KVM_IRQ_ROUTING_MSI 2 | 1372 | #define KVM_IRQ_ROUTING_MSI 2 |
1373 | #define KVM_IRQ_ROUTING_S390_ADAPTER 3 | ||
1369 | 1374 | ||
1370 | No flags are specified so far, the corresponding field must be set to zero. | 1375 | No flags are specified so far, the corresponding field must be set to zero. |
1371 | 1376 | ||
@@ -1381,6 +1386,14 @@ struct kvm_irq_routing_msi { | |||
1381 | __u32 pad; | 1386 | __u32 pad; |
1382 | }; | 1387 | }; |
1383 | 1388 | ||
1389 | struct kvm_irq_routing_s390_adapter { | ||
1390 | __u64 ind_addr; | ||
1391 | __u64 summary_addr; | ||
1392 | __u64 ind_offset; | ||
1393 | __u32 summary_offset; | ||
1394 | __u32 adapter_id; | ||
1395 | }; | ||
1396 | |||
1384 | 1397 | ||
1385 | 4.53 KVM_ASSIGN_SET_MSIX_NR | 1398 | 4.53 KVM_ASSIGN_SET_MSIX_NR |
1386 | 1399 | ||