linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] x86/fpu: Make AMX state ready for CPU idle
@ 2021-11-04 22:52 Chang S. Bae
  2021-11-04 22:52 ` [PATCH 1/4] x86/insn/amx: Add TILERELEASE instruction to the opcode map Chang S. Bae
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Chang S. Bae @ 2021-11-04 22:52 UTC (permalink / raw)
  To: linux-kernel; +Cc: x86, tglx, dave.hansen, peterz, bp, mingo, chang.seok.bae

AMX state is a large state (at least 8KB or more). Entering CPU idle with
this non-initialized large state may result in shallow states while a
deeper low-power state is available, [1].

This series ensures AMX states are initialized before entering CPU idle.

PATCH1 update the opcode table for TILERELEASE. PATCH2 introduces a helper
to make the state ready for CPU idle. But then this function can be located
in two different places:

  (a) Under arch_cpu_idle_enter(), which is called before 
      cpuidle_idle_call() or cpu_idle_poll() [2].
  (b) In drivers/idle/intel_idle.c, call this along with other idle code 
      such as intel_idle() or intel_idle_s2idle(), as per peterz's 
      suggestion [3].
 
The approach (a) may decouple the architecture-specific idle code from the
chip-specific code in the intel_idle driver. (b) tends to put them together
in one place.

Both approaches are included now -- PATCH3 has the approach (a) and so does
PATCH4 for (b). But it shouldn't be an issue to pick one of them
exclusively from this series.

The patchset is based on 30d02551ba4f ("x86/fpu: Optimize out sigframe
xfeatures when in init state") in the tip's x86/urgent branch, as calling
xgetbv(1) via xfeatures_in_use().

Thanks,
Chang

[1]: Intel Architecture Instruction Set Extension Programming Reference
     May 2021, https://software.intel.com/content/dam/develop/external/us/en/documents-tps/architecture-instruction-set-extensions-programming-reference.pdf
[2]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/sched/idle.c
[3]: https://lore.kernel.org/lkml/YK+I8YEEnhWjuVAd@hirez.programming.kicks-ass.net/

Chang S. Bae (4):
  x86/insn/amx: Add TILERELEASE instruction to the opcode map
  x86/fpu: Add a helper to prepare AMX registers for CPU idle
  x86/fpu: Prepare AMX state for CPU idle
  intel_idle/amx: Add SPR support with XSTATE idle

 arch/x86/include/asm/fpu/api.h        |  2 +
 arch/x86/include/asm/special_insns.h  |  9 ++++
 arch/x86/kernel/fpu/core.c            | 21 +++++++++
 arch/x86/kernel/process.c             |  1 +
 arch/x86/lib/x86-opcode-map.txt       |  8 +++-
 drivers/idle/intel_idle.c             | 62 +++++++++++++++++++++++++++
 tools/arch/x86/lib/x86-opcode-map.txt |  8 +++-
 7 files changed, 109 insertions(+), 2 deletions(-)


base-commit: 30d02551ba4f681cfa605cedacf231b8641169f0
-- 
2.17.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2022-03-09 22:44 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-04 22:52 [PATCH 0/4] x86/fpu: Make AMX state ready for CPU idle Chang S. Bae
2021-11-04 22:52 ` [PATCH 1/4] x86/insn/amx: Add TILERELEASE instruction to the opcode map Chang S. Bae
2021-11-04 22:52 ` [PATCH 2/4] x86/fpu: Add a helper to prepare AMX state for CPU idle Chang S. Bae
2021-11-04 22:52 ` [PATCH 3/4] x86/fpu: Prepare " Chang S. Bae
2021-11-04 22:52 ` [PATCH 4/4] intel_idle: Add SPR support with AMX INIT-state Chang S. Bae
2021-11-05 14:33   ` Thomas Gleixner
2021-11-05 16:03     ` Bae, Chang Seok
2021-11-05 17:26       ` Thomas Gleixner
2022-03-09 22:44         ` Chang S. Bae

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).