Re: [PATCH v5 4/4] intel_idle: Add ibrs_off module parameter to force disable IBRS

From: Peter Zijlstra
Date: Wed Jul 26 2023 - 15:55:37 EST


On Tue, Jul 25, 2023 at 04:45:49PM -0400, Waiman Long wrote:
> On 7/10/23 15:48, Waiman Long wrote:
> > Commit bf5835bcdb96 ("intel_idle: Disable IBRS during long idle")
> > disables IBRS when the cstate is 6 or lower. However, there are
> > some use cases where a customer may want to use max_cstate=1 to
> > lower latency. Such use cases will suffer from the performance
> > degradation caused by the enabling of IBRS in the sibling idle thread.
> > Add a "ibrs_off" module parameter to force disable IBRS and the
> > CPUIDLE_FLAG_IRQ_ENABLE flag if set.
> >
> > In the case of a Skylake server with max_cstate=1, this new ibrs_off
> > option will likely increase the IRQ response latency as IRQ will now
> > be disabled.
> >
> > When running SPECjbb2015 with cstates set to C1 on a Skylake system.
> >
> > First test when the kernel is booted with: "intel_idle.ibrs_off"
> > max-jOPS = 117828, critical-jOPS = 66047
> >
> > Then retest when the kernel is booted without the "intel_idle.ibrs_off"
> > added.
> > max-jOPS = 116408, critical-jOPS = 58958
> >
> > That means booting with "intel_idle.ibrs_off" improves performance by:
> > max-jOPS: 1.2%, which could be considered noise range.
> > critical-jOPS: 12%, which is definitely a solid improvement.
> >
> > The admin-guide/pm/intel_idle.rst file is updated to add a description
> > about the new "ibrs_off" module parameter.
> >
> > Signed-off-by: Waiman Long <longman@xxxxxxxxxx>
> > Acked-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
> > ---
> > Documentation/admin-guide/pm/intel_idle.rst | 17 ++++++++++++++++-
> > drivers/idle/intel_idle.c | 11 ++++++++++-
> > 2 files changed, 26 insertions(+), 2 deletions(-)
>
> Ping! Is there further suggested changes for this patch series or is it good
> enough to be merged?

I suppose I'll go stick it in x86/core unless someone objects.