qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH for-8.0] hw/rtc/mc146818rtc: Make this rtc device target inde


From: Thomas Huth
Subject: Re: [PATCH for-8.0] hw/rtc/mc146818rtc: Make this rtc device target independent
Date: Wed, 7 Dec 2022 09:58:56 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.13.0

On 07/12/2022 00.12, BALATON Zoltan wrote:
On Tue, 6 Dec 2022, Thomas Huth wrote:
The only code that is really, really target dependent is the apic-related
code in rtc_policy_slew_deliver_irq(). By moving this code into the hw/i386/
folder (renamed to rtc_apic_policy_slew_deliver_irq()) and passing this
function as parameter to mc146818_rtc_init(), we can make the RTC completely
target-independent.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
...
@@ -124,9 +118,8 @@ void qmp_rtc_reset_reinjection(Error **errp)

static bool rtc_policy_slew_deliver_irq(RTCState *s)
{
-    apic_reset_irq_delivered();
-    qemu_irq_raise(s->irq);
-    return apic_get_irq_delivered();
+    assert(s->policy_slew_deliver_irq);

Is this assert necessary here? Since it seems that creating the timer that would call this is testing for s->policy_slew_deliver_irq being non-NULL there should be no way to call this without policy_slew_deliver_irq set.

There was an assert(0) in the original code on non-x86 targets, too, see below. I would like to keep that logic here.

If you drop the assert then this function also become redundant and s->policy_slew_deliver_irq() can be used directly instead simplifying this a bit more.

I'd agree, but I really would like to keep the assert(). (additionally, the patch stays smaller this way)

+    return s->policy_slew_deliver_irq(s);
}

static void rtc_coalesced_timer(void *opaque)
@@ -145,13 +138,6 @@ static void rtc_coalesced_timer(void *opaque)

    rtc_coalesced_timer_update(s);
}
-#else
-static bool rtc_policy_slew_deliver_irq(RTCState *s)
-{
-    assert(0);

This ----^ is the assert() I was talking about.

-    return false;
-}
-#endif

 Thomas




reply via email to

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