x86, apicv: add virtual interrupt delivery support
authorYang Zhang <yang.z.zhang@Intel.com>
Fri, 25 Jan 2013 02:18:51 +0000 (10:18 +0800)
committerGleb Natapov <gleb@redhat.com>
Tue, 29 Jan 2013 08:48:19 +0000 (10:48 +0200)
commitc7c9c56ca26f7b9458711b2d78b60b60e0d38ba7
treefeab61b2f3a5587dd502a9d2bf4b27a8b2ebe507
parent8d14695f9542e9e0195d6e41ddaa52c32322adf5
x86, apicv: add virtual interrupt delivery support

Virtual interrupt delivery avoids KVM to inject vAPIC interrupts
manually, which is fully taken care of by the hardware. This needs
some special awareness into existing interrupr injection path:

- for pending interrupt, instead of direct injection, we may need
  update architecture specific indicators before resuming to guest.

- A pending interrupt, which is masked by ISR, should be also
  considered in above update action, since hardware will decide
  when to inject it at right time. Current has_interrupt and
  get_interrupt only returns a valid vector from injection p.o.v.

Reviewed-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Kevin Tian <kevin.tian@intel.com>
Signed-off-by: Yang Zhang <yang.z.zhang@Intel.com>
Signed-off-by: Gleb Natapov <gleb@redhat.com>
14 files changed:
arch/ia64/kvm/lapic.h
arch/x86/include/asm/kvm_host.h
arch/x86/include/asm/vmx.h
arch/x86/kvm/irq.c
arch/x86/kvm/lapic.c
arch/x86/kvm/lapic.h
arch/x86/kvm/svm.c
arch/x86/kvm/vmx.c
arch/x86/kvm/x86.c
include/linux/kvm_host.h
virt/kvm/ioapic.c
virt/kvm/ioapic.h
virt/kvm/irq_comm.c
virt/kvm/kvm_main.c