Messages in this thread | | | From | "Rafael J. Wysocki" <> | Date | Wed, 7 Dec 2022 15:37:43 +0100 | Subject | Re: [PATCH 1/2][v2] cpuidle-haltpoll: Replace default_idle with arch_cpu_idle |
| |
On Wed, Dec 7, 2022 at 1:42 PM <lirongqing@baidu.com> wrote: > > From: Li RongQing <lirongqing@baidu.com> > > When KVM guest has MWAIT and mwait_idle is used as default idle function, > but once cpuidle-haltpoll is loaded, default_idle in default_enter_idle is > used, which is using HLT, and cause a performance regression. As the commit > aebef63cf7ff ("x86: Remove vendor checks from prefer_mwait_c1_over_halt") > explains that mwait is preferred > > so replace default_idle with arch_cpu_idle which can using MWAIT > optimization. > > latency of sockperf ping-pong localhost test is reduced by more 20% > unixbench has 5% performance improvements for single core > > Suggested-by: Thomas Gleixner <tglx@linutronix.de> > Suggested-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > Signed-off-by: Li RongQing <lirongqing@baidu.com> > --- > arch/x86/kernel/process.c | 1 + > drivers/cpuidle/cpuidle-haltpoll.c | 2 +- > 2 files changed, 2 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c > index c21b734..303afad 100644 > --- a/arch/x86/kernel/process.c > +++ b/arch/x86/kernel/process.c > @@ -721,6 +721,7 @@ void arch_cpu_idle(void) > { > x86_idle(); > } > +EXPORT_SYMBOL(arch_cpu_idle);
Why do you need this export at all?
> > /* > * We use this if we don't have any better idle routine.. > diff --git a/drivers/cpuidle/cpuidle-haltpoll.c b/drivers/cpuidle/cpuidle-haltpoll.c > index 3a39a7f..e66df22 100644 > --- a/drivers/cpuidle/cpuidle-haltpoll.c > +++ b/drivers/cpuidle/cpuidle-haltpoll.c > @@ -32,7 +32,7 @@ static int default_enter_idle(struct cpuidle_device *dev, > local_irq_enable(); > return index; > } > - default_idle(); > + arch_cpu_idle(); > return index; > } > > -- > 2.9.4 >
| |