linux/Documentation/virtual/kvm
Steve Rutherford 1c1a9ce973 KVM: x86: Add support for local interrupt requests from userspace
In order to enable userspace PIC support, the userspace PIC needs to
be able to inject local interrupts even when the APICs are in the
kernel.

KVM_INTERRUPT now supports sending local interrupts to an APIC when
APICs are in the kernel.

The ready_for_interrupt_request flag is now only set when the CPU/APIC
will immediately accept and inject an interrupt (i.e. APIC has not
masked the PIC).

When the PIC wishes to initiate an INTA cycle with, say, CPU0, it
kicks CPU0 out of the guest, and renedezvous with CPU0 once it arrives
in userspace.

When the CPU/APIC unmasks the PIC, a KVM_EXIT_IRQ_WINDOW_OPEN is
triggered, so that userspace has a chance to inject a PIC interrupt
if it had been pending.

Overall, this design can lead to a small number of spurious userspace
renedezvous. In particular, whenever the PIC transistions from low to
high while it is masked and whenever the PIC becomes unmasked while
it is low.

Note: this does not buffer more than one local interrupt in the
kernel, so the VMM needs to enter the guest in order to complete
interrupt injection before injecting an additional interrupt.

Compiles for x86.

Can pass the KVM Unit Tests.

Signed-off-by: Steve Rutherford <srutherford@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2015-10-01 15:06:29 +02:00
..
devices KVM: s390: fix get_all_floating_irqs 2015-03-31 21:05:51 +02:00
00-INDEX Documentation/: update 00-INDEX files 2014-02-10 16:01:40 -08:00
api.txt KVM: x86: Add support for local interrupt requests from userspace 2015-10-01 15:06:29 +02:00
cpuid.txt Documentation/kvm: Update cpuid documentation for steal time and pv eoi 2013-09-24 19:12:16 +02:00
hypercalls.txt KVM: doc: Fix typo in doc/virtual/kvm 2013-12-31 17:24:54 -02:00
locking.txt KVM: doc: Fix typo in doc/virtual/kvm 2013-12-31 17:24:54 -02:00
mmu.txt KVM: x86: add SMM to the MMU role, support SMRAM address space 2015-06-05 17:26:37 +02:00
msr.txt Documentation: virtual: kvm: correct one bit description in APF case 2014-11-03 12:07:27 +01:00
nested-vmx.txt KVM: nVMX: Documentation 2011-07-12 13:15:22 +03:00
ppc-pv.txt KVM: PPC: Disable NX for old magic page using guests 2014-05-30 14:26:24 +02:00
review-checklist.txt
s390-diag.txt KVM: s390: add documentation for diag 501 2014-04-22 13:24:51 +02:00
timekeeping.txt KVM: doc: Fix typo in doc/virtual/kvm 2013-12-31 17:24:54 -02:00