public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 6.1 0/6] fix invalid sleeping in detect_cache_attributes()
@ 2025-09-30 17:27 Wen Yang
  2025-09-30 17:27 ` [PATCH 6.1 1/6] cacheinfo: Use RISC-V's init_cache_level() as generic OF implementation Wen Yang
                   ` (6 more replies)
  0 siblings, 7 replies; 10+ messages in thread
From: Wen Yang @ 2025-09-30 17:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: stable, linux-kernel, Wen Yang

commit 3fcbf1c77d08 ("arch_topology: Fix cache attributes detection
in the CPU hotplug path")
adds a call to detect_cache_attributes() to populate the cacheinfo
before updating the siblings mask. detect_cache_attributes() allocates
memory and can take the PPTT mutex (on ACPI platforms). On PREEMPT_RT
kernels, on secondary CPUs, this triggers a:
  'BUG: sleeping function called from invalid context'
as the code is executed with preemption and interrupts disabled:

 | BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:46
 | in_atomic(): 1, irqs_disabled(): 128, non_block: 0, pid: 0, name: swapper/111
 | preempt_count: 1, expected: 0
 | RCU nest depth: 1, expected: 1
 | 3 locks held by swapper/111/0:
 |  #0:  (&pcp->lock){+.+.}-{3:3}, at: get_page_from_freelist+0x218/0x12c8
 |  #1:  (rcu_read_lock){....}-{1:3}, at: rt_spin_trylock+0x48/0xf0
 |  #2:  (&zone->lock){+.+.}-{3:3}, at: rmqueue_bulk+0x64/0xa80
 | irq event stamp: 0
 | hardirqs last  enabled at (0):  0x0
 | hardirqs last disabled at (0):  copy_process+0x5dc/0x1ab8
 | softirqs last  enabled at (0):  copy_process+0x5dc/0x1ab8
 | softirqs last disabled at (0):  0x0
 | Preemption disabled at:
 |  migrate_enable+0x30/0x130
 | CPU: 111 PID: 0 Comm: swapper/111 Tainted: G        W          6.0.0-rc4-rt6-[...]
 | Call trace:
 |  __kmalloc+0xbc/0x1e8
 |  detect_cache_attributes+0x2d4/0x5f0
 |  update_siblings_masks+0x30/0x368
 |  store_cpu_topology+0x78/0xb8
 |  secondary_start_kernel+0xd0/0x198
 |  __secondary_switched+0xb0/0xb4


Pierre fixed this issue in the upstream 6.3 and the original series is follows:
https://lore.kernel.org/all/167404285593.885445.6219705651301997538.b4-ty@arm.com/

We also encountered the same issue on 6.1 stable branch,  and need to backport this series.

Pierre Gondois (6):
  cacheinfo: Use RISC-V's init_cache_level() as generic OF
    implementation
  cacheinfo: Return error code in init_of_cache_level()
  cacheinfo: Check 'cache-unified' property to count cache leaves
  ACPI: PPTT: Remove acpi_find_cache_levels()
  ACPI: PPTT: Update acpi_find_last_cache_level() to
    acpi_get_cache_info()
  arch_topology: Build cacheinfo from primary CPU

 arch/arm64/kernel/cacheinfo.c |  11 ++-
 arch/riscv/kernel/cacheinfo.c |  42 -----------
 drivers/acpi/pptt.c           |  93 +++++++++++++----------
 drivers/base/arch_topology.c  |  12 ++-
 drivers/base/cacheinfo.c      | 134 +++++++++++++++++++++++++++++-----
 include/linux/cacheinfo.h     |  11 ++-
 6 files changed, 196 insertions(+), 107 deletions(-)

-- 
2.25.1


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

end of thread, other threads:[~2025-10-15 17:23 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-30 17:27 [PATCH 6.1 0/6] fix invalid sleeping in detect_cache_attributes() Wen Yang
2025-09-30 17:27 ` [PATCH 6.1 1/6] cacheinfo: Use RISC-V's init_cache_level() as generic OF implementation Wen Yang
2025-09-30 17:27 ` [PATCH 6.1 2/6] cacheinfo: Return error code in init_of_cache_level() Wen Yang
2025-09-30 17:27 ` [PATCH 6.1 3/6] cacheinfo: Check 'cache-unified' property to count cache leaves Wen Yang
2025-09-30 17:27 ` [PATCH 6.1 4/6] ACPI: PPTT: Remove acpi_find_cache_levels() Wen Yang
2025-09-30 17:27 ` [PATCH 6.1 5/6] ACPI: PPTT: Update acpi_find_last_cache_level() to acpi_get_cache_info() Wen Yang
2025-09-30 17:27 ` [PATCH 6.1 6/6] arch_topology: Build cacheinfo from primary CPU Wen Yang
2025-10-15  8:43 ` [PATCH 6.1 0/6] fix invalid sleeping in detect_cache_attributes() Greg Kroah-Hartman
2025-10-15  8:45   ` Greg Kroah-Hartman
2025-10-15 17:23   ` Wen Yang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox