[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH for-4.19] x86/mtrr: avoid system wide rendezvous when setting AP MTRRs
On Mon, 2024-05-13 at 10:59 +0200, Roger Pau Monne wrote: > There's no point in forcing a system wide update of the MTRRs on all > processors > when there are no changes to be propagated. On AP startup it's only > the AP > that needs to write the system wide MTRR values in order to match the > rest of > the already online CPUs. > > We have occasionally seen the watchdog trigger during `xen-hptool > cpu-online` > in one Intel Cascade Lake box with 448 CPUs due to the re-setting of > the MTRRs > on all the CPUs in the system. > > While there adjust the comment to clarify why the system-wide > resetting of the > MTRR registers is not needed for the purposes of mtrr_ap_init(). > > Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> > --- > For consideration for 4.19: it's a bugfix of a rare instance of the > watchdog > triggering, but it's also a good performance improvement when > performing > cpu-online. > > Hopefully runtime changes to MTRR will affect a single MSR at a time, > lowering > the chance of the watchdog triggering due to the system-wide > resetting of the > range. Considering it as a bugfix it will be good to have it in 4.19 release: Release-acked-by: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx> ~ Oleksii > --- > xen/arch/x86/cpu/mtrr/main.c | 15 ++++++++------- > 1 file changed, 8 insertions(+), 7 deletions(-) > > diff --git a/xen/arch/x86/cpu/mtrr/main.c > b/xen/arch/x86/cpu/mtrr/main.c > index 90b235f57e68..0a44ebbcb04f 100644 > --- a/xen/arch/x86/cpu/mtrr/main.c > +++ b/xen/arch/x86/cpu/mtrr/main.c > @@ -573,14 +573,15 @@ void mtrr_ap_init(void) > if (!mtrr_if || hold_mtrr_updates_on_aps) > return; > /* > - * Ideally we should hold mtrr_mutex here to avoid mtrr > entries changed, > - * but this routine will be called in cpu boot time, holding > the lock > - * breaks it. This routine is called in two cases: 1.very > earily time > - * of software resume, when there absolutely isn't mtrr > entry changes; > - * 2.cpu hotadd time. We let mtrr_add/del_page hold > cpuhotplug lock to > - * prevent mtrr entry changes > + * hold_mtrr_updates_on_aps takes care of preventing > unnecessary MTRR > + * updates when batch starting the CPUs (see > + * mtrr_aps_sync_{begin,end}()). > + * > + * Otherwise just apply the current system wide MTRR values > to this AP. > + * Note this doesn't require synchronization with the other > CPUs, as > + * there are strictly no modifications of the current MTRR > values. > */ > - set_mtrr(~0U, 0, 0, 0); > + mtrr_set_all(); > } > > /**
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |