[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 08/16] xen/arm: add watchdog domain suspend/resume helpers
Hi, On Thu, Mar 20, 2025 at 1:25 PM Grygorii Strashko <grygorii_strashko@xxxxxxxx> wrote: > > > > On 05.03.25 11:11, Mykola Kvach wrote: > > From: Mykola Kvach <mykola_kvach@xxxxxxxx> > > > > This patch implements suspend/resume helpers for the watchdog. > > While a domain is suspended its watchdogs must be paused. Otherwise, > > if the domain stays in the suspend state for a longer period of time > > compared to the watchdog period, the domain would be shutdown on resume. > > Proper solution to this problem is to stop (suspend) the watchdog timers > > after the domain suspends and to restart (resume) the watchdog timers > > before the domain resumes. The suspend/resume of watchdog timers is done > > in Xen and is invisible to the guests. > > > > Signed-off-by: Mirela Simonovic <mirela.simonovic@xxxxxxxxxx> > > Signed-off-by: Saeed Nowshadi <saeed.nowshadi@xxxxxxxxxx> > > Signed-off-by: Mykyta Poturai <mykyta_poturai@xxxxxxxx> > > Signed-off-by: Mykola Kvach <mykola_kvach@xxxxxxxx> > > --- > > Changes in v3: > > - cover the code with CONFIG_SYSTEM_SUSPEND > > > > Changes in v2: > > - drop suspended field from timer structure > > - drop the call of watchdog_domain_resume from ctxt_switch_to > > --- > > xen/common/sched/core.c | 39 +++++++++++++++++++++++++++++++++++++++ > > xen/include/xen/sched.h | 9 +++++++++ > > 2 files changed, 48 insertions(+) > > > > diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c > > index b1c6b6b9fa..6c2231826a 100644 > > --- a/xen/common/sched/core.c > > +++ b/xen/common/sched/core.c > > @@ -1605,6 +1605,45 @@ void watchdog_domain_destroy(struct domain *d) > > kill_timer(&d->watchdog_timer[i].timer); > > } > > > > +#ifdef CONFIG_SYSTEM_SUSPEND > > + > > +void watchdog_domain_suspend(struct domain *d) > > +{ > > + unsigned int i; > > + > > + spin_lock(&d->watchdog_lock); > > + > > + for ( i = 0; i < NR_DOMAIN_WATCHDOG_TIMERS; i++ ) > > + { > > + if ( test_bit(i, &d->watchdog_inuse_map) ) > > + { > > + stop_timer(&d->watchdog_timer[i].timer); > > + } > > + } > > + > > + spin_unlock(&d->watchdog_lock); > > +} > > + > > +void watchdog_domain_resume(struct domain *d) > > +{ > > + unsigned int i; > > + > > + spin_lock(&d->watchdog_lock); > > + > > + for ( i = 0; i < NR_DOMAIN_WATCHDOG_TIMERS; i++ ) > > + { > > + if ( test_bit(i, &d->watchdog_inuse_map) ) > > + { > > + set_timer(&d->watchdog_timer[i].timer, > > + NOW() + SECONDS(d->watchdog_timer[i].timeout)); > > + } > > + } > > + > > + spin_unlock(&d->watchdog_lock); > > +} > > + > > +#endif /* CONFIG_SYSTEM_SUSPEND */ > > My understanding is that domain's watchdogs support are not mandatory > requirement > for enabling basic System suspend2ram feature, as they are not enabled > automatically. > So, domain's watchdog patches can be separated and posted after basic > functionality > is in place. AFAIK, the hardware domain always has the watchdog enabled, at least for now. > > [...] > > -- > Best regards, > -grygorii Best regards, Mykola
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |