From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NXbzO-0001Zn-C4 for qemu-devel@nongnu.org; Wed, 20 Jan 2010 09:56:58 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NXbzJ-0001SC-KP for qemu-devel@nongnu.org; Wed, 20 Jan 2010 09:56:57 -0500 Received: from [199.232.76.173] (port=54381 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NXbzJ-0001Rz-E6 for qemu-devel@nongnu.org; Wed, 20 Jan 2010 09:56:53 -0500 Received: from mail-qy0-f199.google.com ([209.85.221.199]:39291) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NXbzJ-0004JH-0F for qemu-devel@nongnu.org; Wed, 20 Jan 2010 09:56:53 -0500 Received: by qyk37 with SMTP id 37so2904124qyk.18 for ; Wed, 20 Jan 2010 06:56:52 -0800 (PST) Message-ID: <4B5719AF.90604@codemonkey.ws> Date: Wed, 20 Jan 2010 08:56:47 -0600 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH][rtc hack]: reduce number of reinjects on ACK References: <20100120133733.GI5238@redhat.com> In-Reply-To: <20100120133733.GI5238@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Gleb Natapov Cc: qemu-devel@nongnu.org On 01/20/2010 07:37 AM, Gleb Natapov wrote: > Windows 7 BSODs under load with HAL_RTC_IRQF_WILL_NOT_CLEAR error. > > It happens here: > hal!HalpRtcUnmaskClock: > 8281b93a 8bff mov edi,edi > 8281b93c 56 push esi > 8281b93d 33f6 xor esi,esi > 8281b93f 6a0c push 0Ch > 8281b941 e8b2ffffff call hal!CMOS_READ (8281b8f8) > 8281b946 84c0 test al,al > 8281b948 7920 jns hal!HalpRtcUnmaskClock+0x30 (8281b96a) > 8281b94a 6a0a push 0Ah > 8281b94c 46 inc esi > 8281b94d e854c8ffff call hal!KeStallExecutionProcessor (828181a6) > 8281b952 83fe64 cmp esi,64h > 8281b955 72e8 jb hal!HalpRtcUnmaskClock+0x5 (8281b93f) > 8281b957 6a00 push 0 > 8281b959 6a00 push 0 > 8281b95b 6a00 push 0 > 8281b95d 680a010000 push 10Ah > 8281b962 6a5c push 5Ch > 8281b964 ff1500c38082 call dword ptr [hal!_imp__KeBugCheckEx (8280c300)] > 8281b96a 5e pop esi > 8281b96b c3 ret > > So it loops for 100(64h) times reading register C before BSOD. Lets > reduce number of immediate reinjection well under this limit. > > Signed-off-by: Gleb Natapov > Applied. Thanks. Regards, Anthony Liguori > diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c > index e4d55c7..2616d0d 100644 > --- a/hw/mc146818rtc.c > +++ b/hw/mc146818rtc.c > @@ -30,7 +30,7 @@ > > //#define DEBUG_CMOS > > -#define RTC_REINJECT_ON_ACK_COUNT 1000 > +#define RTC_REINJECT_ON_ACK_COUNT 20 > > #define RTC_SECONDS 0 > #define RTC_SECONDS_ALARM 1 > -- > Gleb. > > > >