From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Mgcwp-0005fz-RJ for qemu-devel@nongnu.org; Thu, 27 Aug 2009 07:15:19 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Mgcwi-0005Xe-CH for qemu-devel@nongnu.org; Thu, 27 Aug 2009 07:15:18 -0400 Received: from [199.232.76.173] (port=57721 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Mgcwi-0005XU-4u for qemu-devel@nongnu.org; Thu, 27 Aug 2009 07:15:12 -0400 Received: from os.inf.tu-dresden.de ([141.76.48.99]:51834) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Mgcwh-0001Os-Qz for qemu-devel@nongnu.org; Thu, 27 Aug 2009 07:15:12 -0400 Received: from erwin.inf.tu-dresden.de ([141.76.48.80] helo=chrom.inf.tu-dresden.de) by os.inf.tu-dresden.de with esmtps (TLSv1:AES256-SHA:256) (Exim 4.69) id 1Mgcwc-00047B-B0 for qemu-devel@nongnu.org; Thu, 27 Aug 2009 13:15:06 +0200 Received: from kauer by chrom.inf.tu-dresden.de with local (Exim 4.69) (envelope-from ) id 1MgczT-0002I7-9c for qemu-devel@nongnu.org; Thu, 27 Aug 2009 13:18:03 +0200 Date: Thu, 27 Aug 2009 13:18:03 +0200 From: Bernhard Kauer Subject: Re: [Qemu-devel] RTC polling mode broken Message-ID: <20090827111803.GA7329@ramdisk> References: <20090715105043.GA26311@chrom.inf.tu-dresden.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090715105043.GA26311@chrom.inf.tu-dresden.de> List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Suppose I have some software that does not run with Qemu and I have done the following steps: 1. found that it is bug in Qemu and not in my software 2. produced a patch that fixed the problem for my test-case 3. send the patch with an explanation to the mailinglist 4. waited 6 weeks for comments or inclusion in Qemu Now what should I do, to get the bug fixed? Thanks, Bernhard On Wed, Jul 15, 2009 at 12:50:43PM +0200, Bernhard Kauer wrote: > The RTC emulation does not set the IRQ flags independent of the IRQ enable bits. > > The original MC146818A datasheet from 1984 notes: > "flag bits in Register C [...] are set independent of the > state of the corresponding enable bits in Register B" > Similar sections can be found in newer documentation e.g. in rtc82885. > > Qemu and Bochs set the IRQ flags only if they are enabled, > which breaks drivers polling on them. > > The following patch corrects this for the update-ended-flag in Qemu only. > It currently does not fix the handling of the other flags. > > > Signed-off-by: Bernhard Kauer > > > diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c > index 2022548..2b040a7 100644 > --- a/hw/mc146818rtc.c > +++ b/hw/mc146818rtc.c > @@ -421,9 +421,10 @@ static void rtc_update_second2(void *opaque) > } > > /* update ended interrupt */ > + s->cmos_data[RTC_REG_C] |= REG_C_UF; > if (s->cmos_data[RTC_REG_B] & REG_B_UIE) { > - s->cmos_data[RTC_REG_C] |= 0x90; > - rtc_irq_raise(s->irq); > + s->cmos_data[RTC_REG_C] |= REG_C_IRQF; > + rtc_irq_raise(s->irq); > } > > /* clear update in progress bit */