aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/virtual/kvm
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2014-02-03 22:23:37 -0500
committerPaolo Bonzini <pbonzini@redhat.com>2014-02-03 22:23:37 -0500
commitf244d910ea2974d88efcc6d04594f25e22718f90 (patch)
tree7236a244a09fa76d73105df476d2f20a19066d70 /Documentation/virtual/kvm
parent4f34d683e52271197e1ee17b7095e8ba27761ba6 (diff)
parent536336c21697551ceca44bdffb9f53e6cc5f2f20 (diff)
Merge tag 'kvm-s390-20140130' of git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into HEAD
Two new features are added by this patch set: - The floating interrupt controller (flic) that allows us to inject, clear and inspect non-vcpu local interrupts. This also gives us an opportunity to fix deficiencies in our existing interrupt definitions. - Support for asynchronous page faults via the pfault mechanism. Testing show significant guest performance improvements under host swap.
Diffstat (limited to 'Documentation/virtual/kvm')
-rw-r--r--Documentation/virtual/kvm/devices/s390_flic.txt46
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 @@
1FLIC (floating interrupt controller)
2====================================
3
4FLIC handles floating (non per-cpu) interrupts, i.e. I/O, service and some
5machine check interruptions. All interrupts are stored in a per-vm list of
6pending interrupts. FLIC performs operations on this list.
7
8Only one FLIC instance may be instantiated.
9
10FLIC 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
16Groups:
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.