[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH] qemu: x86: ignore ioapic polarity
From: |
Gabriel L. Somlo |
Subject: |
[Qemu-devel] [RFC PATCH] qemu: x86: ignore ioapic polarity |
Date: |
Fri, 28 Feb 2014 12:23:44 -0500 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
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 QEMU 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: Gabriel L. Somlo <address@hidden>
---
On Fri, Feb 28, 2014 at 09:11:08AM +0100, Paolo Bonzini wrote:
> Il 28/02/2014 05:55, Michael S. Tsirkin ha scritto:
> >Or we can do a patch like we did for kvm and ignore polarity,
> >treating levels as logical rather than physical.
>
> Yes.
OK, this would "harmonize" TCG with KVM, in terms of acknowledging
the realities of hard-coded ActiveHigh behavior throughout the rest
of the code base.
Let me know what you think. Thanks,
Gabriel
hw/intc/ioapic.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/hw/intc/ioapic.c b/hw/intc/ioapic.c
index 652dd47..b527932 100644
--- a/hw/intc/ioapic.c
+++ b/hw/intc/ioapic.c
@@ -93,9 +93,6 @@ static void ioapic_set_irq(void *opaque, int vector, int
level)
uint32_t mask = 1 << vector;
uint64_t entry = s->ioredtbl[vector];
- if (entry & (1 << IOAPIC_LVT_POLARITY_SHIFT)) {
- level = !level;
- }
if (((entry >> IOAPIC_LVT_TRIGGER_MODE_SHIFT) & 1) ==
IOAPIC_TRIGGER_LEVEL) {
/* level triggered */
--
1.8.1.4
- Re: [Qemu-devel] RFC: ioapic polarity vs. qemu os-x guest, (continued)
- [Qemu-devel] [PATCH RFC] kvm: ignore apic polarity, Michael S. Tsirkin, 2014/02/27
- Re: [Qemu-devel] [PATCH RFC] kvm: ignore apic polarity, Gabriel L. Somlo, 2014/02/27
- Re: [Qemu-devel] [PATCH RFC] kvm: ignore apic polarity, Paolo Bonzini, 2014/02/27
- Re: [Qemu-devel] [PATCH RFC] kvm: ignore apic polarity, Gabriel L. Somlo, 2014/02/27
- Re: [Qemu-devel] [PATCH RFC] kvm: ignore apic polarity, Paolo Bonzini, 2014/02/27
- [Qemu-devel] [RFC PATCH v2] kvm: x86: ignore ioapic polarity, Gabriel L. Somlo, 2014/02/27
- [Qemu-devel] [RFC PATCH] qemu: x86: ignore ioapic polarity,
Gabriel L. Somlo <=
- [Qemu-devel] [RFC PATCH v2] qemu: x86: ignore ioapic polarity, Gabriel L. Somlo, 2014/02/28
- [Qemu-devel] [PATCH] qemu: x86: report lapic version as 0x14 instead of 0x11, Gabriel L. Somlo, 2014/02/28
- Re: [Qemu-devel] [PATCH] qemu: x86: report lapic version as 0x14 instead of 0x11, Alexander Graf, 2014/02/28
- Re: [Qemu-devel] [PATCH] qemu: x86: report lapic version as 0x14 instead of 0x11, Gabriel L. Somlo, 2014/02/28
- Re: [Qemu-devel] [PATCH] qemu: x86: report lapic version as 0x14 instead of 0x11, Alexander Graf, 2014/02/28
- Re: [Qemu-devel] [PATCH RFC] kvm: ignore apic polarity, Michael S. Tsirkin, 2014/02/28
- Re: [Qemu-devel] [PATCH RFC] kvm: ignore apic polarity, Paolo Bonzini, 2014/02/28
- Re: [Qemu-devel] [PATCH RFC] kvm: ignore apic polarity, Paolo Bonzini, 2014/02/28
- Re: [Qemu-devel] RFC: ioapic polarity vs. qemu os-x guest, Michael S. Tsirkin, 2014/02/16
- Re: [Qemu-devel] RFC: ioapic polarity vs. qemu os-x guest, Peter Maydell, 2014/02/16