From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=38950 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OIonB-0004rL-04 for qemu-devel@nongnu.org; Sun, 30 May 2010 16:07:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OIon9-00034O-2t for qemu-devel@nongnu.org; Sun, 30 May 2010 16:07:28 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56828) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OIon8-00034D-SG for qemu-devel@nongnu.org; Sun, 30 May 2010 16:07:27 -0400 Date: Sun, 30 May 2010 23:07:22 +0300 From: Gleb Natapov Subject: Re: [Qemu-devel] Re: [RFT][PATCH 07/15] qemu_irq: Add IRQ handlers with delivery feedback Message-ID: <20100530200722.GA6243@redhat.com> References: <20100529144641.GF3604@redhat.com> <20100529163709.GJ3604@redhat.com> <20100530060255.GJ5474@redhat.com> <20100530123316.GB24302@redhat.com> <20100530134935.GC24302@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 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. -- Gleb.