On 3/3/26 10:25 AM, Igor Mammedov wrote: > Signed-off-by: Igor Mammedov <[email protected]> Reviewed-by: Eric Auger <[email protected]> Eric > --- > hw/watchdog/sbsa_gwdt.c | 38 ++++++++++++++++++++------------------ > 1 file changed, 20 insertions(+), 18 deletions(-) > > diff --git a/hw/watchdog/sbsa_gwdt.c b/hw/watchdog/sbsa_gwdt.c > index 40d80f7f2b..91f9a4202c 100644 > --- a/hw/watchdog/sbsa_gwdt.c > +++ b/hw/watchdog/sbsa_gwdt.c > @@ -105,25 +105,27 @@ static void sbsa_gwdt_update_timer(SBSA_GWDTState *s, > WdtRefreshType rtype) > > timer_del(s->timer); > > - if (s->wcs & SBSA_GWDT_WCS_EN) { > - /* > - * Extract the upper 16 bits from woru & 32 bits from worl > - * registers to construct the 48 bit offset value > - */ > - timeout = s->woru; > - timeout <<= 32; > - timeout |= s->worl; > - timeout = muldiv64(timeout, NANOSECONDS_PER_SECOND, s->freq); > - timeout += qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); > - > - if ((rtype == EXPLICIT_REFRESH) || ((rtype == TIMEOUT_REFRESH) && > - (!(s->wcs & SBSA_GWDT_WCS_WS0)))) { > - /* store the current timeout value into compare registers */ > - s->wcvu = timeout >> 32; > - s->wcvl = timeout; > - } > - timer_mod(s->timer, timeout); > + if (!(s->wcs & SBSA_GWDT_WCS_EN)) { > + return; > + } > + > + /* > + * Extract the upper 16 bits from woru & 32 bits from worl > + * registers to construct the 48 bit offset value > + */ > + timeout = s->woru; > + timeout <<= 32; > + timeout |= s->worl; > + timeout = muldiv64(timeout, NANOSECONDS_PER_SECOND, s->freq); > + timeout += qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); > + > + if ((rtype == EXPLICIT_REFRESH) || ((rtype == TIMEOUT_REFRESH) && > + (!(s->wcs & SBSA_GWDT_WCS_WS0)))) { > + /* store the current timeout value into compare registers */ > + s->wcvu = timeout >> 32; > + s->wcvl = timeout; > } > + timer_mod(s->timer, timeout); > } > > static void sbsa_gwdt_rwrite(void *opaque, hwaddr offset, uint64_t data,
