diff options
author | Yang Zhang <yang.z.zhang@Intel.com> | 2013-01-24 21:18:51 -0500 |
---|---|---|
committer | Gleb Natapov <gleb@redhat.com> | 2013-01-29 03:48:19 -0500 |
commit | c7c9c56ca26f7b9458711b2d78b60b60e0d38ba7 (patch) | |
tree | feab61b2f3a5587dd502a9d2bf4b27a8b2ebe507 /virt/kvm/ioapic.h | |
parent | 8d14695f9542e9e0195d6e41ddaa52c32322adf5 (diff) |
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>
Diffstat (limited to 'virt/kvm/ioapic.h')
-rw-r--r-- | virt/kvm/ioapic.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/virt/kvm/ioapic.h b/virt/kvm/ioapic.h index a30abfe6ed16..0400a466c50c 100644 --- a/virt/kvm/ioapic.h +++ b/virt/kvm/ioapic.h | |||
@@ -82,5 +82,9 @@ int kvm_irq_delivery_to_apic(struct kvm *kvm, struct kvm_lapic *src, | |||
82 | struct kvm_lapic_irq *irq); | 82 | struct kvm_lapic_irq *irq); |
83 | int kvm_get_ioapic(struct kvm *kvm, struct kvm_ioapic_state *state); | 83 | int kvm_get_ioapic(struct kvm *kvm, struct kvm_ioapic_state *state); |
84 | int kvm_set_ioapic(struct kvm *kvm, struct kvm_ioapic_state *state); | 84 | int kvm_set_ioapic(struct kvm *kvm, struct kvm_ioapic_state *state); |
85 | void kvm_ioapic_make_eoibitmap_request(struct kvm *kvm); | ||
86 | void kvm_ioapic_calculate_eoi_exitmap(struct kvm_vcpu *vcpu, | ||
87 | u64 *eoi_exit_bitmap); | ||
88 | |||
85 | 89 | ||
86 | #endif | 90 | #endif |