[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20241108122909.763663-1-patryk.wlazlyn@linux.intel.com>
Date: Fri, 8 Nov 2024 13:29:06 +0100
From: Patryk Wlazlyn <patryk.wlazlyn@...ux.intel.com>
To: x86@...nel.org
Cc: linux-kernel@...r.kernel.org,
linux-pm@...r.kernel.org,
rafael.j.wysocki@...el.com,
len.brown@...el.com,
artem.bityutskiy@...ux.intel.com,
dave.hansen@...ux.intel.com,
patryk.wlazlyn@...ux.intel.com
Subject: [PATCH v3 0/3] SRF: Fix offline CPU preventing pc6 entry
Applied suggestions from Dave and Rafael.
Because we now call a smp function, we have to have ifdefs for
CONFIG_SMP or rely on mwait_play_dead_with_hint to return immediatelly
with an error on non-smp builds. I decided to do the later, but maybe we
should return -ENODEV (or other error constant) instead of 1. I am open
for suggestions.
Removing the existing "kexec hack" by bringing all offlined CPUs back
online before proceeding with the kexec would make it even simpler, but
I am not sure we can do that. It looks kind of obvious to me, but for
some reason the hack exist.
Changes since v2:
The whole approach changed, but there main things are below.
* Split mwait_play_dead (old code) into two parts:
1. Computing mwait hint based on cpuid leaf 0x5
2. Entering while(1) mwait loop with "kexec hack" handling
* Prefer cpuidle_play_dead over mwait_play_dead by reordering calls in
native_play_dead.
* Add implementation for enter_dead() handler in intel_idle that calls
executes old mwait_play_dead code, but with the mwait hint from the
cpuidle state table.
Patryk Wlazlyn (3):
x86/smp: Allow calling mwait_play_dead with arbitrary hint
x86/smp native_play_dead: Prefer cpuidle_play_dead() over
mwait_play_dead()
intel_idle: Provide enter_dead() handler for SRF
arch/x86/include/asm/smp.h | 6 ++++++
arch/x86/kernel/smpboot.c | 29 ++++++++++++++++++++---------
drivers/idle/intel_idle.c | 16 ++++++++++++++++
3 files changed, 42 insertions(+), 9 deletions(-)
--
2.47.0
Powered by blists - more mailing lists