qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH] [RESEND2] Qemu unmaintained?


From: Bernhard Kauer
Subject: [Qemu-devel] [PATCH] [RESEND2] Qemu unmaintained?
Date: Wed, 9 Sep 2009 14:18:17 +0200
User-agent: Mutt/1.5.20 (2009-06-14)

Its wednesday again, time to resend a patch to the list.
Until today the following happened in this endless story:

        1. I wrote an RTC driver according to the manual which works on real 
hardware but not on Qemu.
        2. I traced the bug back to the first public version of Bochs. Its 
seems to be also
           present in all derived version: Qemu, KVM, Xen, VBox...
        3. I send a patch to the Qemu list at least 4 times.
        4. I never got a single response to my patch.

Thus I have to assume that device models in Qemu are unmaintained: further 
resending 
does not make any sense in this case.

I still hope somebody will step up and take a stake in this story.  Otherwise 
Qemu
will be more and more unusable.  For me and probably others.


Greetings,

         Bernhard Kauer



On Wed, Sep 02, 2009 at 09:49:05AM +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 does not fix the handling of the other flags.
> 
> 
> Signed-off-by: Bernhard Kauer <address@hidden>
> 
> 
> 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 */
> 
> 
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]