kernel_samsung_a53x/arch/powerpc/platforms
Michael Ellerman 40fe1917ea powerpc/pseries: Fix dtl_access_lock to be a rw_semaphore
[ Upstream commit cadae3a45d23aa4f6485938a67cbc47aaaa25e38 ]

The dtl_access_lock needs to be a rw_sempahore, a sleeping lock, because
the code calls kmalloc() while holding it, which can sleep:

  # echo 1 > /proc/powerpc/vcpudispatch_stats
  BUG: sleeping function called from invalid context at include/linux/sched/mm.h:337
  in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 199, name: sh
  preempt_count: 1, expected: 0
  3 locks held by sh/199:
   #0: c00000000a0743f8 (sb_writers#3){.+.+}-{0:0}, at: vfs_write+0x324/0x438
   #1: c0000000028c7058 (dtl_enable_mutex){+.+.}-{3:3}, at: vcpudispatch_stats_write+0xd4/0x5f4
   #2: c0000000028c70b8 (dtl_access_lock){+.+.}-{2:2}, at: vcpudispatch_stats_write+0x220/0x5f4
  CPU: 0 PID: 199 Comm: sh Not tainted 6.10.0-rc4 #152
  Hardware name: IBM pSeries (emulated by qemu) POWER9 (raw) 0x4e1202 0xf000005 of:SLOF,HEAD hv:linux,kvm pSeries
  Call Trace:
    dump_stack_lvl+0x130/0x148 (unreliable)
    __might_resched+0x174/0x410
    kmem_cache_alloc_noprof+0x340/0x3d0
    alloc_dtl_buffers+0x124/0x1ac
    vcpudispatch_stats_write+0x2a8/0x5f4
    proc_reg_write+0xf4/0x150
    vfs_write+0xfc/0x438
    ksys_write+0x88/0x148
    system_call_exception+0x1c4/0x5a0
    system_call_common+0xf4/0x258

Fixes: 06220d78f24a ("powerpc/pseries: Introduce rwlock to gatekeep DTLB usage")
Tested-by: Kajol Jain <kjain@linux.ibm.com>
Reviewed-by: Nysal Jan K.A <nysal@linux.ibm.com>
Reviewed-by: Kajol Jain <kjain@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://patch.msgid.link/20240819122401.513203-1-mpe@ellerman.id.au
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-17 13:24:08 +01:00
..
4xx Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
8xx Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
40x Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
44x powerpc/44x: select I2C for CURRITUCK 2024-11-18 12:12:19 +01:00
52xx Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
82xx Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
83xx Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
85xx Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
86xx Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
512x Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
amigaone Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cell file: Rename fcheck lookup_fd_rcu 2024-11-19 12:27:27 +01:00
chrp Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
embedded6xx powerpc/embedded6xx: Fix no previous prototype for avr_uart_send() etc. 2024-11-19 08:44:55 +01:00
maple Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pasemi Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
powermac Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
powernv powerpc/powernv: Free name on error in opal_event_init() 2024-11-30 02:33:27 +01:00
ps3 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pseries powerpc/pseries: Fix dtl_access_lock to be a rw_semaphore 2024-12-17 13:24:08 +01:00
fsl_uli1575.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig.cputype Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00