From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56335) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WJSf5-0004Af-RK for qemu-devel@nongnu.org; Fri, 28 Feb 2014 14:00:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WJSf0-0005R9-41 for qemu-devel@nongnu.org; Fri, 28 Feb 2014 13:59:55 -0500 Received: from mail-qa0-x233.google.com ([2607:f8b0:400d:c00::233]:59306) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WJSez-0005R4-VU for qemu-devel@nongnu.org; Fri, 28 Feb 2014 13:59:50 -0500 Received: by mail-qa0-f51.google.com with SMTP id j7so1056044qaq.38 for ; Fri, 28 Feb 2014 10:59:49 -0800 (PST) Date: Fri, 28 Feb 2014 13:57:19 -0500 From: "Gabriel L. Somlo" Message-ID: <20140228185719.GJ17184@ERROL.INI.CMU.EDU> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140228172343.GI17184@ERROL.INI.CMU.EDU> Subject: [Qemu-devel] [RFC PATCH v2] qemu: x86: ignore ioapic polarity List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: pbonzini@redhat.com, agraf@suse.de, mst@redhat.com 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 the emulated ioapic. This patch modifies the emulated ioapic to completely ignore 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 --- > 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. Now with a new and improved commit blurb :) 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