BUG: sleeping function called from invalid context

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

With the following patch appled,

commit d76c74387e1c978b6c5524a146ab0f3f72206f98
Author: Phil Edworthy <phil.edworthy@xxxxxxxxxxx>
Date:   Thu May 10 15:13:56 2018 +0100

    serial: 8250_dw: Fix runtime PM handling

    When using kgdb, you get an abort when accessing the UART registers.
    This is because the driver has already entered runtime PM and so turned
    off the bus clock needed to access the registers.

To fix this, set the capability indicating Runtime PM is active while idle.

    Signed-off-by: Phil Edworthy <phil.edworthy@xxxxxxxxxxx>
    Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>


leading to the following splat:


[   30.419892] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 30.682642] ff180000.serial: ttyS0 at MMIO 0xff180000 (irq = 38, base_baud = 1500000) is a 16550A [ 30.770040] ff1a0000.serial: ttyS2 at MMIO 0xff1a0000 (irq = 39, base_baud = 1500000) is a 16550A
[   30.780849] console [ttyS2] enabled
[   30.780849] console [ttyS2] enabled
[ 30.785492] BUG: sleeping function called from invalid context at drivers/base/power/runtime.c:1034 [ 30.785492] BUG: sleeping function called from invalid context at drivers/base/power/runtime.c:1034
[   30.785554] in_atomic(): 1, irqs_disabled(): 128, pid: 1, name: swapper/0
[   30.785554] in_atomic(): 1, irqs_disabled(): 128, pid: 1, name: swapper/0
[   30.785596] 7 locks held by swapper/0/1:
[   30.785596] 7 locks held by swapper/0/1:
[ 30.785630] #0: (____ptrval____) (&dev->mutex){....}, at: __driver_attach+0x7c/0xf0 [ 30.785630] #0: (____ptrval____) (&dev->mutex){....}, at: __driver_attach+0x7c/0xf0 [ 30.785839] #1: (____ptrval____) (&dev->mutex){....}, at: __driver_attach+0x8c/0xf0 [ 30.785839] #1: (____ptrval____) (&dev->mutex){....}, at: __driver_attach+0x8c/0xf0 [ 30.786042] #2: (____ptrval____) (serial_mutex){+.+.}, at: serial8250_register_8250_port+0x48/0x708 [ 30.786042] #2: (____ptrval____) (serial_mutex){+.+.}, at: serial8250_register_8250_port+0x48/0x708 [ 30.786253] #3: (____ptrval____) (port_mutex){+.+.}, at: uart_add_one_port+0xe0/0x848 [ 30.786253] #3: (____ptrval____) (port_mutex){+.+.}, at: uart_add_one_port+0xe0/0x848 [ 30.786457] #4: (____ptrval____) (&port->mutex){+.+.}, at: uart_add_one_port+0xf4/0x848 [ 30.786457] #4: (____ptrval____) (&port->mutex){+.+.}, at: uart_add_one_port+0xf4/0x848 [ 30.786661] #5: (____ptrval____) (console_lock){+.+.}, at: vprintk_emit+0x284/0x4a0 [ 30.786661] #5: (____ptrval____) (console_lock){+.+.}, at: vprintk_emit+0x284/0x4a0 [ 30.786864] #6: (____ptrval____) (console_owner){....}, at: console_unlock+0x238/0x690 [ 30.786864] #6: (____ptrval____) (console_owner){....}, at: console_unlock+0x238/0x690
[   30.787077] irq event stamp: 577424
[   30.787077] irq event stamp: 577424
[ 30.787136] hardirqs last enabled at (577423): [<ffff20000818988c>] __down_trylock_console_sem+0x6c/0xb0 [ 30.787136] hardirqs last enabled at (577423): [<ffff20000818988c>] __down_trylock_console_sem+0x6c/0xb0 [ 30.787197] hardirqs last disabled at (577424): [<ffff20000818a050>] console_unlock+0x148/0x690 [ 30.787197] hardirqs last disabled at (577424): [<ffff20000818a050>] console_unlock+0x148/0x690 [ 30.787254] softirqs last enabled at (577412): [<ffff20000808215c>] __do_softirq+0x2d4/0x3b4 [ 30.787254] softirqs last enabled at (577412): [<ffff20000808215c>] __do_softirq+0x2d4/0x3b4 [ 30.787309] softirqs last disabled at (577403): [<ffff2000080fe3f8>] irq_exit+0x150/0x160 [ 30.787309] softirqs last disabled at (577403): [<ffff2000080fe3f8>] irq_exit+0x150/0x160 [ 30.787367] Preemption disabled at:[<ffff20000818bcb8>] vprintk_emit+0x280/0x4a0 [ 30.787367] Preemption disabled at:[<ffff20000818bcb8>] vprintk_emit+0x280/0x4a0 [ 30.787457] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.17.0-rc5-next-20180517-00019-gae3b4aa-dirty #358 [ 30.787457] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.17.0-rc5-next-20180517-00019-gae3b4aa-dirty #358
[   30.787502] Hardware name: Excavator-RK3399 Board (DT)
[   30.787502] Hardware name: Excavator-RK3399 Board (DT)
[   30.787538] Call trace:
[   30.787538] Call trace:
[   30.787579]  dump_backtrace+0x0/0x238
[   30.787579]  dump_backtrace+0x0/0x238
[   30.787618]  show_stack+0x14/0x20
[   30.787618]  show_stack+0x14/0x20
[   30.787656]  dump_stack+0xb0/0xec
[   30.787656]  dump_stack+0xb0/0xec
[   30.787695]  ___might_sleep+0x254/0x2a8
[   30.787695]  ___might_sleep+0x254/0x2a8
[   30.787734]  __might_sleep+0x74/0xe0
[   30.787734]  __might_sleep+0x74/0xe0
[   30.787777]  __pm_runtime_resume+0xb0/0xb8
[   30.787777]  __pm_runtime_resume+0xb0/0xb8
[   30.787820]  serial8250_rpm_get.part.2+0x24/0x30
[   30.787820]  serial8250_rpm_get.part.2+0x24/0x30
[   30.787863]  serial8250_console_write+0x3a8/0x3d8
[   30.787863]  serial8250_console_write+0x3a8/0x3d8
[   30.787909]  univ8250_console_write+0x44/0x58
[   30.787909]  univ8250_console_write+0x44/0x58
[   30.787949]  console_unlock+0x56c/0x690
[   30.787949]  console_unlock+0x56c/0x690
[   30.787988]  vprintk_emit+0x28c/0x4a0
[   30.787988]  vprintk_emit+0x28c/0x4a0
[   30.788027]  vprintk_default+0x34/0x40
[   30.788027]  vprintk_default+0x34/0x40
[   30.788067]  vprintk_func+0x1e0/0x2b8
[   30.788067]  vprintk_func+0x1e0/0x2b8
[   30.788105]  printk+0xac/0xd8
[   30.788105]  printk+0xac/0xd8
[   30.788146]  register_console+0x2d0/0x508
[   30.788146]  register_console+0x2d0/0x508
[   30.788187]  uart_add_one_port+0x834/0x848
[   30.788187]  uart_add_one_port+0x834/0x848
[   30.788233]  serial8250_register_8250_port+0x514/0x708
[   30.788233]  serial8250_register_8250_port+0x514/0x708
[   30.788271]  dw8250_probe+0x6bc/0x8f0
[   30.788271]  dw8250_probe+0x6bc/0x8f0
[   30.788312]  platform_drv_probe+0x6c/0xd0
[   30.788312]  platform_drv_probe+0x6c/0xd0
[   30.788353]  driver_probe_device+0x2e0/0x3f8
[   30.788353]  driver_probe_device+0x2e0/0x3f8
[   30.788393]  __driver_attach+0xec/0xf0
[   30.788393]  __driver_attach+0xec/0xf0
[   30.788433]  bus_for_each_dev+0xdc/0x150
[   30.788433]  bus_for_each_dev+0xdc/0x150
[   30.788472]  driver_attach+0x30/0x40
[   30.788472]  driver_attach+0x30/0x40
[   30.788515]  bus_add_driver+0x1c0/0x318
[   30.788515]  bus_add_driver+0x1c0/0x318
[   30.788556]  driver_register+0xb4/0x198
[   30.788556]  driver_register+0xb4/0x198
[   30.788602]  __platform_driver_register+0x7c/0x88
[   30.788602]  __platform_driver_register+0x7c/0x88
[   30.788648]  dw8250_platform_driver_init+0x18/0x20
[   30.788648]  dw8250_platform_driver_init+0x18/0x20
[   30.788688]  do_one_initcall+0xac/0x210
[   30.788688]  do_one_initcall+0xac/0x210
[   30.788729]  kernel_init_freeable+0x294/0x33c
[   30.788729]  kernel_init_freeable+0x294/0x33c
[   30.788768]  kernel_init+0x10/0x118
[   30.788768]  kernel_init+0x10/0x118
[   30.788808]  ret_from_fork+0x10/0x18
[   30.788808]  ret_from_fork+0x10/0x18
[   30.857151] bootconsole [uart8250] disabled
[   30.857151] bootconsole [uart8250] disabled

--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux