From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MGeIq-0005gf-FW for qemu-devel@nongnu.org; Tue, 16 Jun 2009 15:26:40 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MGeIl-0005ao-ND for qemu-devel@nongnu.org; Tue, 16 Jun 2009 15:26:39 -0400 Received: from [199.232.76.173] (port=50550 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MGeIl-0005aZ-DQ for qemu-devel@nongnu.org; Tue, 16 Jun 2009 15:26:35 -0400 Received: from mx2.redhat.com ([66.187.237.31]:43278) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MGeIk-0001sb-Ro for qemu-devel@nongnu.org; Tue, 16 Jun 2009 15:26:35 -0400 Date: Tue, 16 Jun 2009 22:26:31 +0300 From: Gleb Natapov Subject: Re: [Qemu-devel] [PATCH] Register usb-uhci reset function. Message-ID: <20090616192631.GK782@redhat.com> References: <20090616124702.GS19508@redhat.com> <4A37F050.4070303@us.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4A37F050.4070303@us.ibm.com> List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: qemu-devel@nongnu.org On Tue, Jun 16, 2009 at 02:19:44PM -0500, Anthony Liguori wrote: > Gleb Natapov wrote: >> Update irq line on reset. Reseting irq line is required because >> racing irq from pci device will call piix3_set_irq(). piix3_set_irq() >> will remember current level in pci_irq_levels[]. The PIC line will be >> triggered if one of pci_irq_levels[] is set (depends on piix3 config). >> If for instance pci_irq_levels[0] and pci_irq_levels[1] are mapped to >> the same PIC irq and during reset pci_irq_levels[1] == 1, but device >> that drives pci_irq_levels[0] is initialized first the device driver >> will not be able to lower irq line. >> >> Without this patch RHEL4.8 hangs after reboot because usb interrupt >> does not go away. >> > > This breaks the build because... > >> @@ -346,6 +346,7 @@ static void uhci_reset(UHCIState *s) >> + qemu_register_reset(uhci_reset, 0, s); >> > qemu_register_reset takes void (*)(void *) and you're passing void > (*)(UHCIState *). > Tested it before -Werror :) -- Gleb.