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

Re: [PATCH] x86/suspend: unconditionally raise a timer softirq on resume



On Mon, Aug 25, 2025 at 05:25:36PM +0200, Jan Beulich wrote:
> On 25.08.2025 17:15, Roger Pau Monne wrote:
> > The current code to restore the timer state on resume is incomplete.  While
> > the local APIC Initial Count Register is saved and restored across
> > suspension (even if possibly no longer accurate since it's not adjusted to
> > account for the time spent in suspension), the TSC deadline MSR is not
> > saved and restored, hence hosts using the TSC deadline timer will likely
> > get stuck when resuming from suspension.
> > 
> > The lack of restoring of the TSC deadline MSR was mitigated by the raising
> > of a timer softirq in mwait_idle_with_hints() if the timer had expired,
> > previous to commit 3faf0866a33070b926ab78e6298290403f85e76c, which removed
> > that logic.
> > 
> > This patch fixes the usage of the TSC deadline timer with suspension, by
> > unconditionally raising a timer softirq on resume, that will take care of
> > rearming the hardware timer.  Given that a timer softirq will be
> > unconditionally risen, there's no need to save and restore the APIC Initial
> > Count Register anymore either.
> > 
> > Note that secondary processors don't need this special treatment when
> > resuming, since they are offlined before suspension and brought back up
> > during resume, the first timer that gets setup will trigger a timer softirq
> > unconditionally, for example from sched_migrate_timers() that gets called
> > for each secondary processor.
> > 
> > Reported-by: Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx>
> > Fixes: fd1291a826e1 ('X86: Prefer TSC-deadline timer in Xen')
> > Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
> 
> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>

Thanks, I've also added:

Link: https://github.com/QubesOS/qubes-issues/issues/10110

To the tags.

Roger.



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.