forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'kvm-s390-20140130' of git://git.kernel.org/pub/scm/linux/k…
…ernel/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.
- Loading branch information
Showing
20 changed files
with
822 additions
and
104 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
FLIC (floating interrupt controller) | ||
==================================== | ||
|
||
FLIC handles floating (non per-cpu) interrupts, i.e. I/O, service and some | ||
machine check interruptions. All interrupts are stored in a per-vm list of | ||
pending interrupts. FLIC performs operations on this list. | ||
|
||
Only one FLIC instance may be instantiated. | ||
|
||
FLIC provides support to | ||
- add interrupts (KVM_DEV_FLIC_ENQUEUE) | ||
- inspect currently pending interrupts (KVM_FLIC_GET_ALL_IRQS) | ||
- purge all pending floating interrupts (KVM_DEV_FLIC_CLEAR_IRQS) | ||
- enable/disable for the guest transparent async page faults | ||
|
||
Groups: | ||
KVM_DEV_FLIC_ENQUEUE | ||
Passes a buffer and length into the kernel which are then injected into | ||
the list of pending interrupts. | ||
attr->addr contains the pointer to the buffer and attr->attr contains | ||
the length of the buffer. | ||
The format of the data structure kvm_s390_irq as it is copied from userspace | ||
is defined in usr/include/linux/kvm.h. | ||
|
||
KVM_DEV_FLIC_GET_ALL_IRQS | ||
Copies all floating interrupts into a buffer provided by userspace. | ||
When the buffer is too small it returns -ENOMEM, which is the indication | ||
for userspace to try again with a bigger buffer. | ||
All interrupts remain pending, i.e. are not deleted from the list of | ||
currently pending interrupts. | ||
attr->addr contains the userspace address of the buffer into which all | ||
interrupt data will be copied. | ||
attr->attr contains the size of the buffer in bytes. | ||
|
||
KVM_DEV_FLIC_CLEAR_IRQS | ||
Simply deletes all elements from the list of currently pending floating | ||
interrupts. No interrupts are injected into the guest. | ||
|
||
KVM_DEV_FLIC_APF_ENABLE | ||
Enables async page faults for the guest. So in case of a major page fault | ||
the host is allowed to handle this async and continues the guest. | ||
|
||
KVM_DEV_FLIC_APF_DISABLE_WAIT | ||
Disables async page faults for the guest and waits until already pending | ||
async page faults are done. This is necessary to trigger a completion interrupt | ||
for every init interrupt before migrating the interrupt list. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.