diff options
Diffstat (limited to 'Documentation/virtual/kvm')
-rw-r--r-- | Documentation/virtual/kvm/devices/s390_flic.txt | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/Documentation/virtual/kvm/devices/s390_flic.txt b/Documentation/virtual/kvm/devices/s390_flic.txt new file mode 100644 index 000000000000..410fa673e5b6 --- /dev/null +++ b/Documentation/virtual/kvm/devices/s390_flic.txt | |||
@@ -0,0 +1,46 @@ | |||
1 | FLIC (floating interrupt controller) | ||
2 | ==================================== | ||
3 | |||
4 | FLIC handles floating (non per-cpu) interrupts, i.e. I/O, service and some | ||
5 | machine check interruptions. All interrupts are stored in a per-vm list of | ||
6 | pending interrupts. FLIC performs operations on this list. | ||
7 | |||
8 | Only one FLIC instance may be instantiated. | ||
9 | |||
10 | FLIC provides support to | ||
11 | - add interrupts (KVM_DEV_FLIC_ENQUEUE) | ||
12 | - inspect currently pending interrupts (KVM_FLIC_GET_ALL_IRQS) | ||
13 | - purge all pending floating interrupts (KVM_DEV_FLIC_CLEAR_IRQS) | ||
14 | - enable/disable for the guest transparent async page faults | ||
15 | |||
16 | Groups: | ||
17 | KVM_DEV_FLIC_ENQUEUE | ||
18 | Passes a buffer and length into the kernel which are then injected into | ||
19 | the list of pending interrupts. | ||
20 | attr->addr contains the pointer to the buffer and attr->attr contains | ||
21 | the length of the buffer. | ||
22 | The format of the data structure kvm_s390_irq as it is copied from userspace | ||
23 | is defined in usr/include/linux/kvm.h. | ||
24 | |||
25 | KVM_DEV_FLIC_GET_ALL_IRQS | ||
26 | Copies all floating interrupts into a buffer provided by userspace. | ||
27 | When the buffer is too small it returns -ENOMEM, which is the indication | ||
28 | for userspace to try again with a bigger buffer. | ||
29 | All interrupts remain pending, i.e. are not deleted from the list of | ||
30 | currently pending interrupts. | ||
31 | attr->addr contains the userspace address of the buffer into which all | ||
32 | interrupt data will be copied. | ||
33 | attr->attr contains the size of the buffer in bytes. | ||
34 | |||
35 | KVM_DEV_FLIC_CLEAR_IRQS | ||
36 | Simply deletes all elements from the list of currently pending floating | ||
37 | interrupts. No interrupts are injected into the guest. | ||
38 | |||
39 | KVM_DEV_FLIC_APF_ENABLE | ||
40 | Enables async page faults for the guest. So in case of a major page fault | ||
41 | the host is allowed to handle this async and continues the guest. | ||
42 | |||
43 | KVM_DEV_FLIC_APF_DISABLE_WAIT | ||
44 | Disables async page faults for the guest and waits until already pending | ||
45 | async page faults are done. This is necessary to trigger a completion interrupt | ||
46 | for every init interrupt before migrating the interrupt list. | ||