[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAJZ5v0hWjbp5ALCkiPP0=7CmDmWJzWE-zh2CP6EFLSbShTnVcQ@mail.gmail.com>
Date: Fri, 11 Aug 2023 19:41:48 +0200
From: "Rafael J. Wysocki" <rafael@...nel.org>
To: Frederic Weisbecker <frederic@...nel.org>
Cc: LKML <linux-kernel@...r.kernel.org>, Len Brown <lenb@...nel.org>,
Peter Zijlstra <peterz@...radead.org>,
"Rafael J . Wysocki" <rafael@...nel.org>,
Daniel Lezcano <daniel.lezcano@...aro.org>,
Thomas Gleixner <tglx@...utronix.de>,
Anna-Maria Behnsen <anna-maria@...utronix.de>
Subject: Re: [PATCH 09/10] x86: Remove the current_clr_polling() call upon
mwait exit
On Fri, Aug 11, 2023 at 7:01 PM Frederic Weisbecker <frederic@...nel.org> wrote:
>
> mwait_idle_with_hints() is mostly called from cpuidle which already sets
> back TIF_NR_POLLING and fold TIF_NEED_RESCHED if necessary.
>
> The only non-cpuidle caller is power_saving_thread() which acts as an idle
> loop and is the only reason why mwait_idle_with_hints() carries a costly
> fully ordered atomic operation upon idle exit.
>
> Make this overhead proper to power_saving_thread() instead which already
> duplicates quite some cpuidle code.
>
> Signed-off-by: Frederic Weisbecker <frederic@...nel.org>
Acked-by: Rafael J. Wysocki <rafael@...nel.org>
> ---
> arch/x86/include/asm/mwait.h | 1 -
> drivers/acpi/acpi_pad.c | 1 +
> 2 files changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/include/asm/mwait.h b/arch/x86/include/asm/mwait.h
> index 920426d691ce..c1be3775b94a 100644
> --- a/arch/x86/include/asm/mwait.h
> +++ b/arch/x86/include/asm/mwait.h
> @@ -134,7 +134,6 @@ static __always_inline void mwait_idle_with_hints(unsigned long eax, unsigned lo
> }
> }
> }
> - current_clr_polling();
> }
>
> /*
> diff --git a/drivers/acpi/acpi_pad.c b/drivers/acpi/acpi_pad.c
> index 7a453c5ff303..5a44afafe185 100644
> --- a/drivers/acpi/acpi_pad.c
> +++ b/drivers/acpi/acpi_pad.c
> @@ -174,6 +174,7 @@ static int power_saving_thread(void *data)
> stop_critical_timings();
>
> mwait_idle_with_hints(power_saving_mwait_eax, 1);
> + current_clr_polling();
>
> start_critical_timings();
> tick_broadcast_exit();
> --
> 2.34.1
>
Powered by blists - more mailing lists