[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2] x86/intel: workaround several MONITOR/MWAIT errata
On Wed, Apr 23, 2025 at 02:13:01PM +0100, Andrew Cooper wrote: > On 23/04/2025 12:32 pm, Roger Pau Monne wrote: > > There are several errata on Intel regarding the usage of the MONITOR/MWAIT > > instructions, all having in common that stores to the monitored region > > might not wake up the CPU. > > > > Fix them by forcing the sending of an IPI for the affected models. > > > > The Ice Lake issue has been reproduced internally on XenServer hardware, > > and the fix does seem to prevent it. The symptom was APs getting stuck in > > the idle loop immediately after bring up, which in turn prevented the BSP > > from making progress. This would happen before the watchdog was > > initialized, and hence the whole system would get stuck. > > > > Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> > > --- > > Apollo and Lunar Lake fixes have not been tested, due to lack of hardware. > > Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > > > diff --git a/xen/arch/x86/acpi/cpu_idle.c b/xen/arch/x86/acpi/cpu_idle.c > > index 420198406def..1dbf15b01ed7 100644 > > --- a/xen/arch/x86/acpi/cpu_idle.c > > +++ b/xen/arch/x86/acpi/cpu_idle.c > > @@ -441,8 +441,14 @@ void cpuidle_wakeup_mwait(cpumask_t *mask) > > cpumask_andnot(mask, mask, &target); > > } > > > > +/* Force sending of a wakeup IPI regardless of mwait usage. */ > > +bool __ro_after_init force_mwait_ipi_wakeup; > > + > > bool arch_skip_send_event_check(unsigned int cpu) > > { > > + if ( force_mwait_ipi_wakeup ) > > + return false; > > + > > I don't especially like this. The callers are a loop over all CPUs, and > this can't be inlined/simplified automatically. Hm, I can look into this later, I can make maybe turn arch_skip_send_event_check into an inline. Let me get this committed first. Thanks, Roger.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |