aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/kvm/kvm-ia64.c
diff options
context:
space:
mode:
authorGabriel L. Somlo <gsomlo@gmail.com>2014-02-27 23:06:17 -0500
committerPaolo Bonzini <pbonzini@redhat.com>2014-03-13 06:58:21 -0400
commit100943c54e0947a07d2c0185368fc2fd848f7f28 (patch)
treea69aea55ffa31a8d365974f8c9217a339cdfb27f /arch/ia64/kvm/kvm-ia64.c
parentfacb0139698923dc7b7d15cafbb319219969f4fd (diff)
kvm: x86: ignore ioapic polarity
Both QEMU and KVM have already accumulated a significant number of optimizations based on the hard-coded assumption that ioapic polarity will always use the ActiveHigh convention, where the logical and physical states of level-triggered irq lines always match (i.e., active(asserted) == high == 1, inactive == low == 0). QEMU guests are expected to follow directions given via ACPI and configure the ioapic with polarity 0 (ActiveHigh). However, even when misbehaving guests (e.g. OS X <= 10.9) set the ioapic polarity to 1 (ActiveLow), QEMU will still use the ActiveHigh signaling convention when interfacing with KVM. This patch modifies KVM to completely ignore ioapic polarity as set by the guest OS, enabling misbehaving guests to work alongside those which comply with the ActiveHigh polarity specified by QEMU's ACPI tables. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Gabriel L. Somlo <somlo@cmu.edu> [Move documentation to KVM_IRQ_LINE, add ia64. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'arch/ia64/kvm/kvm-ia64.c')
-rw-r--r--arch/ia64/kvm/kvm-ia64.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/ia64/kvm/kvm-ia64.c b/arch/ia64/kvm/kvm-ia64.c
index 53f44bee9ebb..6a4309bb821a 100644
--- a/arch/ia64/kvm/kvm-ia64.c
+++ b/arch/ia64/kvm/kvm-ia64.c
@@ -199,6 +199,7 @@ int kvm_dev_ioctl_check_extension(long ext)
199 case KVM_CAP_IRQCHIP: 199 case KVM_CAP_IRQCHIP:
200 case KVM_CAP_MP_STATE: 200 case KVM_CAP_MP_STATE:
201 case KVM_CAP_IRQ_INJECT_STATUS: 201 case KVM_CAP_IRQ_INJECT_STATUS:
202 case KVM_CAP_IOAPIC_POLARITY_IGNORED:
202 r = 1; 203 r = 1;
203 break; 204 break;
204 case KVM_CAP_COALESCED_MMIO: 205 case KVM_CAP_COALESCED_MMIO: