From patchwork Thu Feb 3 14:27:51 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kiszka X-Patchwork-Id: 529691 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p13ESTA8023768 for ; Thu, 3 Feb 2011 14:28:29 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756451Ab1BCO2K (ORCPT ); Thu, 3 Feb 2011 09:28:10 -0500 Received: from goliath.siemens.de ([192.35.17.28]:15325 "EHLO goliath.siemens.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755855Ab1BCO2H (ORCPT ); Thu, 3 Feb 2011 09:28:07 -0500 Received: from mail1.siemens.de (localhost [127.0.0.1]) by goliath.siemens.de (8.13.6/8.13.6) with ESMTP id p13ERqtt009112; Thu, 3 Feb 2011 15:27:52 +0100 Received: from mchn199C.mchp.siemens.de ([139.25.109.49]) by mail1.siemens.de (8.13.6/8.13.6) with ESMTP id p13ERpn3011893; Thu, 3 Feb 2011 15:27:52 +0100 Message-ID: <4D4ABB67.9070208@siemens.com> Date: Thu, 03 Feb 2011 15:27:51 +0100 From: Jan Kiszka User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 MIME-Version: 1.0 To: Gleb Natapov CC: Marcelo Tosatti , Avi Kivity , kvm , qemu-devel Subject: Re: [Qemu-devel] KVM: Windows 64-bit troubles with user space irqchip References: <4D496D77.2010405@siemens.com> <4D496FA6.8070301@siemens.com> <4D49738D.7080404@redhat.com> <4D4979BD.6080900@siemens.com> <20110202154611.GR14984@redhat.com> <4D497DAB.7010901@siemens.com> <4D4A64F2.8010309@redhat.com> <4D4A7629.1010506@siemens.com> <20110203100407.GA2449@amt.cnet> <4D4A7F4B.6050406@siemens.com> <20110203141537.GY14984@redhat.com> In-Reply-To: <20110203141537.GY14984@redhat.com> Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Thu, 03 Feb 2011 14:28:29 +0000 (UTC) diff --git a/hw/apic.c b/hw/apic.c index 05a115f..13bd7b4 100644 --- a/hw/apic.c +++ b/hw/apic.c @@ -582,6 +582,7 @@ int apic_get_interrupt(DeviceState *d) { APICState *s = DO_UPCAST(APICState, busdev.qdev, d); int intno; + int tpr; /* if the APIC is installed or enabled, we let the 8259 handle the IRQs */ @@ -594,8 +595,10 @@ int apic_get_interrupt(DeviceState *d) intno = get_highest_priority_int(s->irr); if (intno < 0) return -1; - if (s->tpr && intno <= s->tpr) + tpr = s->tpr >> 4; + if (tpr && (intno >> 4) <= tpr) { return s->spurious_vec & 0xff; + } reset_bit(s->irr, intno); set_bit(s->isr, intno); apic_update_irq(s);