From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=60902 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OIxP5-0004Qx-1O for qemu-devel@nongnu.org; Mon, 31 May 2010 01:19:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OIxP3-0005DZ-UL for qemu-devel@nongnu.org; Mon, 31 May 2010 01:19:10 -0400 Received: from mx1.redhat.com ([209.132.183.28]:62072) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OIxP3-0005DP-MK for qemu-devel@nongnu.org; Mon, 31 May 2010 01:19:09 -0400 Date: Mon, 31 May 2010 08:19:05 +0300 From: Gleb Natapov Subject: Re: [Qemu-devel] Re: [RFT][PATCH 07/15] qemu_irq: Add IRQ handlers with delivery feedback Message-ID: <20100531051905.GD24302@redhat.com> References: <20100529163709.GJ3604@redhat.com> <20100530060255.GJ5474@redhat.com> <20100530123316.GB24302@redhat.com> <20100530134935.GC24302@redhat.com> <20100530200722.GA6243@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Blue Swirl Cc: Jan Kiszka , qemu-devel@nongnu.org, Juan Quintela On Sun, May 30, 2010 at 08:21:30PM +0000, Blue Swirl wrote: > On Sun, May 30, 2010 at 8:07 PM, Gleb Natapov wrote: > > On Sun, May 30, 2010 at 07:37:59PM +0000, Blue Swirl wrote: > >> On Sun, May 30, 2010 at 1:49 PM, Gleb Natapov wrote: > >> > On Sun, May 30, 2010 at 12:56:26PM +0000, Blue Swirl wrote: > >> >> >> Well, I'd like to get the test program also trigger it. Now I'm getting: > >> >> >> apic: write: 00000350 = 00000000 > >> >> >> apic: apic_reset_irq_delivered: old coalescing 0 > >> >> >> apic: apic_local_deliver: vector 3 delivery mode 0 > >> >> >> apic: apic_set_irq: coalescing 1 > >> >> >> apic: apic_get_irq_delivered: returning coalescing 1 > >> >> >> apic: apic_reset_irq_delivered: old coalescing 1 > >> >> >> apic: apic_local_deliver: vector 3 delivery mode 0 > >> >> >> apic: apic_set_irq: coalescing 0 > >> >> >> apic: apic_get_irq_delivered: returning coalescing 0 > >> >> >> apic: apic_reset_irq_delivered: old coalescing 0 > >> >> >> apic: apic_local_deliver: vector 3 delivery mode 0 > >> >> >> apic: apic_set_irq: coalescing 0 > >> >> >> > >> > So interrupt is _alway_ coalesced. If apic_get_irq_delivered() returns > >> > 0 it means the interrupt was not delivered. > >> > >> That seems strange. I changed the program so that the handler gets > >> executed, also output a dot to serial from the handler. I changed the > >> frequency to 2Hz. > >> > >> Now, if I leave out -rtc-td-hack, I get the dots at 2Hz as expected. > >> With -rtc-td-hack, the dots come out much faster. I added > >> DEBUG_COALESCING also to RTC, with that enabled I get: > >> qemu -L . -bios coalescing.bin -d in_asm,int -no-hpet -rtc-td-hack -serial stdio > >> cmos: coalesced irqs scaled to 0 > >> cmos: coalesced irqs increased to 1 > >> cmos: injecting on ack > >> .cmos: injecting on ack > >> .cmos: injecting on ack > >> .cmos: injecting on ack > >> .cmos: injecting on ack > >> .cmos: injecting on ack > >> .cmos: injecting on ack > >> .cmos: injecting on ack > >> .cmos: injecting on ack > >> .cmos: injecting on ack > >> .cmos: injecting on ack > >> .cmos: injecting on ack > >> .cmos: injecting on ack > >> .cmos: injecting on ack > >> .cmos: injecting on ack > >> .cmos: injecting on ack > >> .cmos: injecting on ack > >> .cmos: injecting on ack > >> .cmos: injecting on ack > >> .cmos: injecting on ack > >> ..cmos: injecting from timer > >> .cmos: coalesced irqs increased to 2 > >> cmos: injecting on ack > >> > >> So, there are bogus injections. > > > > Looks like irr in apic is never cleared. Probably bug in userspace apic > > emulation. I'll look into it. Try to route interrupt via APIC (not ExtInt), > > or use qemu-kvm with in kernel irq chip. > > With APIC you mean Fixed? Then the IRQ is not delivered at all. You need to deliver it through IOAPIC. -- Gleb.