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-3.15-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm
Pull kvm updates from Paolo Bonzini: "PPC and ARM do not have much going on this time. Most of the cool stuff, instead, is in s390 and (after a few releases) x86. ARM has some caching fixes and PPC has transactional memory support in guests. MIPS has some fixes, with more probably coming in 3.16 as QEMU will soon get support for MIPS KVM. For x86 there are optimizations for debug registers, which trigger on some Windows games, and other important fixes for Windows guests. We now expose to the guest Broadwell instruction set extensions and also Intel MPX. There's also a fix/workaround for OS X guests, nested virtualization features (preemption timer), and a couple kvmclock refinements. For s390, the main news is asynchronous page faults, together with improvements to IRQs (floating irqs and adapter irqs) that speed up virtio devices" * tag 'kvm-3.15-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (96 commits) KVM: PPC: Book3S HV: Save/restore host PMU registers that are new in POWER8 KVM: PPC: Book3S HV: Fix decrementer timeouts with non-zero TB offset KVM: PPC: Book3S HV: Don't use kvm_memslots() in real mode KVM: PPC: Book3S HV: Return ENODEV error rather than EIO KVM: PPC: Book3S: Trim top 4 bits of physical address in RTAS code KVM: PPC: Book3S HV: Add get/set_one_reg for new TM state KVM: PPC: Book3S HV: Add transactional memory support KVM: Specify byte order for KVM_EXIT_MMIO KVM: vmx: fix MPX detection KVM: PPC: Book3S HV: Fix KVM hang with CONFIG_KVM_XICS=n KVM: PPC: Book3S: Introduce hypervisor call H_GET_TCE KVM: PPC: Book3S HV: Fix incorrect userspace exit on ioeventfd write KVM: s390: clear local interrupts at cpu initial reset KVM: s390: Fix possible memory leak in SIGP functions KVM: s390: fix calculation of idle_mask array size KVM: s390: randomize sca address KVM: ioapic: reinject pending interrupts on KVM_SET_IRQCHIP KVM: Bump KVM_MAX_IRQ_ROUTES for s390 KVM: s390: irq routing for adapter interrupts. KVM: s390: adapter interrupt sources ...
Showing
74 changed files
with
3,265 additions
and
838 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
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,91 @@ | ||
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 | ||
- register and modify adapter interrupt sources (KVM_DEV_FLIC_ADAPTER_*) | ||
|
||
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. | ||
|
||
KVM_DEV_FLIC_ADAPTER_REGISTER | ||
Register an I/O adapter interrupt source. Takes a kvm_s390_io_adapter | ||
describing the adapter to register: | ||
|
||
struct kvm_s390_io_adapter { | ||
__u32 id; | ||
__u8 isc; | ||
__u8 maskable; | ||
__u8 swap; | ||
__u8 pad; | ||
}; | ||
|
||
id contains the unique id for the adapter, isc the I/O interruption subclass | ||
to use, maskable whether this adapter may be masked (interrupts turned off) | ||
and swap whether the indicators need to be byte swapped. | ||
|
||
|
||
KVM_DEV_FLIC_ADAPTER_MODIFY | ||
Modifies attributes of an existing I/O adapter interrupt source. Takes | ||
a kvm_s390_io_adapter_req specifiying the adapter and the operation: | ||
|
||
struct kvm_s390_io_adapter_req { | ||
__u32 id; | ||
__u8 type; | ||
__u8 mask; | ||
__u16 pad0; | ||
__u64 addr; | ||
}; | ||
|
||
id specifies the adapter and type the operation. The supported operations | ||
are: | ||
|
||
KVM_S390_IO_ADAPTER_MASK | ||
mask or unmask the adapter, as specified in mask | ||
|
||
KVM_S390_IO_ADAPTER_MAP | ||
perform a gmap translation for the guest address provided in addr, | ||
pin a userspace page for the translated address and add it to the | ||
list of mappings | ||
|
||
KVM_S390_IO_ADAPTER_UNMAP | ||
release a userspace page for the translated address specified in addr | ||
from the list of mappings |
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.