2022-10-12 07:17:08

by Naresh Kamboju

[permalink] [raw]
Subject: BUG: sleeping function called from invalid context at kernel/locking/mutex.c:580

Following kernel deadlock warnings and BUG noticed on arm64 Qcom db845c device
While booting Linux next 20221012 tag kernel Image and kselftest configs.

Reported-by: Linux Kernel Functional Testing <[email protected]>

[ 18.690573] ============================================
[ 18.695938] WARNING: possible recursive locking detected
[ 18.701307] 6.0.0-next-20221012 #1 Not tainted
[ 18.705804] --------------------------------------------
[ 18.711168] kworker/u16:5/256 is trying to acquire lock:
[ 18.716544] ffff58730911e4f8 (&irq_desc_lock_class){-.-.}-{2:2},
at: __irq_get_desc_lock+0x64/0xa4
[ 18.725629]
[ 18.725629] but task is already holding lock:
[ 18.731519] ffff5873071c64f8 (&irq_desc_lock_class){-.-.}-{2:2},
at: __irq_get_desc_lock+0x64/0xa4
[ 18.733233] remoteproc remoteproc0: remote processor
remoteproc-adsp is now up
[ 18.740563]
[ 18.740563] other info that might help us debug this:
[ 18.740566] Possible unsafe locking scenario:
[ 18.740566]
[ 18.740569] CPU0
[ 18.740571] ----
[ 18.740573] lock(&irq_desc_lock_class);
[ 18.740579] lock(&irq_desc_lock_class);
[ 18.740585]
[ 18.740585] *** DEADLOCK ***
[ 18.740585]
[ 18.740587] May be due to missing lock nesting notation
[ 18.740587]
[ 18.757926] cfg80211: Loading compiled-in X.509 certificates for
regulatory database
[ 18.760420] 6 locks held by kworker/u16:5/256:
[ 18.760424] #0: ffff587300032938
((wq_completion)events_unbound){+.+.}-{0:0}, at:
process_one_work+0x1e8/0x6d4
[ 18.793798] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 18.794138] #1: ffff800009a1bdd0
(deferred_probe_work){+.+.}-{0:0}, at: process_one_work+0x1e8/0x6d4
[ 18.815528] #2: ffff5873019e68f8 (&dev->mutex){....}-{3:3}, at:
__device_attach+0x44/0x200
[ 18.833287] #3: ffffdd47e98f1cf0 (cpu_hotplug_lock){++++}-{0:0},
at: cpus_read_lock+0x18/0x24
M[K[ *** ] (2 of 2) A start j[ 18.842012] #4: ffff587301248518
(subsys mutex#8){+.ob is running for…n to /usr/lib/rfsa (9s / no
limit)
[ 18.857511] #5: ffff5873071c64f8
(&irq_desc_lock_class){-.-.}-{2:2}, at: __irq_get_desc_lock+0x64/0xa4
[ 18.871877]
[ 18.871877] stack backtrace:
[ 18.876286] CPU: 4 PID: 256 Comm: kworker/u16:5 Not tainted
6.0.0-next-20221012 #1
[ 18.883936] Hardware name: Thundercomm Dragonboard 845c (DT)
[ 18.889655] Workqueue: events_unbound deferred_probe_work_func
[ 18.895566] Call trace:
[ 18.898046] dump_backtrace+0xe4/0x140
[ 18.901847] show_stack+0x30/0x60
[ 18.905203] dump_stack_lvl+0x8c/0xb8
[ 18.908918] dump_stack+0x18/0x34
[ 18.912274] __lock_acquire+0x1154/0x2040
[ 18.916330] lock_acquire.part.0+0xe8/0x24c
[ 18.920568] lock_acquire+0x84/0xa0
[ 18.924102] _raw_spin_lock_irqsave+0x70/0xb0
[ 18.928523] __irq_get_desc_lock+0x64/0xa4
[ 18.928532] enable_irq+0x40/0xb0
[ 18.928542] lmh_enable_interrupt+0x3c/0x50 [lmh]
Coldplug All udev De[ 18.94080vices.
[ 18.952775] __irq_startup+0x88/0xbc
[K[ 18.957451] irq_startup+0x84/0x180
[ 18.961243] __enable_irq+0x88/0xa0
[ 18.964776] enable_irq+0x54/0xb0
[ 18.968140] qcom_cpufreq_ready+0x2c/0x3c
[ 18.972200] cpufreq_online+0x2f4/0xb24
[ 18.976083] cpufreq_add_dev+0xdc/0x100
[ 18.979964] subsys_interface_register+0x134/0x14c
[ 18.984819] cpufreq_register_driver+0x16c/0x2e0
[ 18.989488] qcom_cpufreq_hw_driver_probe+0xdc/0x150
[ 18.994510] platform_probe+0x70/0x100
[ 18.998311] really_probe+0xd4/0x3f4
[ 19.001936] __driver_probe_device+0x8c/0x1a0
[ 19.006347] driver_probe_device+0x4c/0x13c
[ 19.010584] __device_attach_driver+0xd8/0x180
[ 19.015081] bus_for_each_drv+0x88/0xe0
[ 19.018966] __device_attach+0xb4/0x200
[ 19.022845] device_initial_probe+0x28/0x40
[ 19.027081] bus_probe_device+0xa8/0xb0
[ 19.030965] deferred_probe_work_func+0xc0/0x120
[ 19.035637] process_one_work+0x280/0x6d4
[ 19.039695] worker_thread+0x7c/0x430
[ 19.043407] kthread+0x110/0x114
[ 19.046677] ret_from_fork+0x10/0x20
[ 19.108471] cpu cpu4: EM: created perf domain
Starting Wait for udev To …plete Device Initialization.
[ 19.125768] remoteproc remoteproc1: remote processor
remoteproc-cdsp is now up
[ 19.138140] xhci_hcd 0000:01:00.0: Adding to iommu group 6
[ 19.150419] coresight stm0: STM32 initialized
[ 19.254272] ath10k_snoc 18800000.wifi: Adding to iommu group 10
[ 19.372948] ath10k_snoc 18800000.wifi: supply vdd-3.3-ch1 not
found, using dummy regulator
[ 19.472640] geni_spi 880000.spi: FIFO mode disabled, but couldn't
get DMA, fall back to FIFO mode
[ 19.485178] gpi 800000.dma-controller: Adding to iommu group 11
[ OK ] Reached target [0;1;39mHardware activated USB gadget.
[ 19.528153] i2c 16-0010: Fixing up cyclic dependency with acb3000.camss
[ 19.559810] i2c 10-003b: Fixing up cyclic dependency with hdmi-out
[ 19.575396] gpi a00000.dma-controller: Adding to iommu group 12
[ 19.590779] qcom-venus aa00000.video-codec: Adding to iommu group 13
[ 19.608167] qcom-venus aa00000.video-codec: non legacy binding
[ 19.618073] remoteproc remoteproc2: 4080000.remoteproc is available
[ 19.629950] qcom-camss acb3000.camss: Adding to iommu group 14
[ 19.630180] Bluetooth: Core ver 2.22
[ 19.639713] NET: Registered PF_BLUETOOTH protocol family
[ 19.645247] Bluetooth: HCI device and connection manager initialized
[ 19.651711] Bluetooth: HCI socket layer initialized
[ 19.656813] Bluetooth: L2CAP socket layer initialized
[ 19.661960] Bluetooth: SCO socket layer initialized
[ 19.743786] adreno 5000000.gpu: Adding to iommu group 15
[ 19.764896] Bluetooth: HCI UART driver ver 2.3
[ 19.769470] Bluetooth: HCI UART protocol H4 registered
[ 19.778004] msm-mdss ae00000.mdss: Adding to iommu group 16
[ 19.783005] Bluetooth: HCI UART protocol LL registered
[ 19.809993] Bluetooth: HCI UART protocol Broadcom registered
[ 19.819508] Bluetooth: HCI UART protocol QCA registered
[ 19.829474] Bluetooth: HCI UART protocol Marvell registered
[ 19.858355] EXT4-fs (sde9): mounted filesystem with ordered data
mode. Quota mode: none.
[ 19.893331] platform ae94000.dsi: Fixing up cyclic dependency with 10-003b
[ OK ] Finished Mount DSP partition to /usr/lib/rfsa.
[ 19.917937] platform ae94000.dsi: Fixing up cyclic dependency with
ae01000.display-controller
[ OK ] Reached target Local File Systems.
[ OK ] Listening on Load/Save RF …itch Status /dev/rfkill Watch.
[ 19.950987] BUG: sleeping function called from invalid context at
kernel/locking/mutex.c:580
[ 19.959591] in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid:
258, name: kworker/u16:7
[ 19.968096] preempt_count: 100, expected: 0
[ 19.972374] RCU nest depth: 0, expected: 0
[ 19.976562] INFO: lockdep is turned off.
[ 19.980574] CPU: 0 PID: 258 Comm: kworker/u16:7 Not tainted
6.0.0-next-20221012 #1
[ 19.988245] Hardware name: Thundercomm Dragonboard 845c (DT)
[ 19.993986] Workqueue: events_unbound async_run_entry_fn
[ 19.999395] Call trace:
[ 20.001886] dump_backtrace+0xe4/0x140
[ 20.005700] show_stack+0x30/0x60
[ 20.009069] dump_stack_lvl+0x8c/0xb8
[ 20.012798] dump_stack+0x18/0x34
[ 20.016169] __might_resched+0x1c4/0x240
[ 20.020155] __might_sleep+0x58/0xb0
[ 20.020802] rtc-pm8xxx c440000.spmi:pmic@0:rtc@6000: registered as rtc0
[ 20.023766] __mutex_lock+0x54/0x424
[ 20.023778] mutex_lock_nested+0x50/0x6c
[ 20.030501] rtc-pm8xxx c440000.spmi:pmic@0:rtc@6000: setting system
clock to 1970-01-01T00:00:30 UTC (30)
[ 20.033086] input: pm8941_pwrkey as
/devices/platform/soc@0/c440000.spmi/spmi-0/0-00/c440000.spmi:pmic@0:pon@800/c440000.spmi:pmic@0:pon@800:pwrkey/input/input1
[ 20.034047] lpg_brightness_single_set+0x48/0x9c [leds_qcom_lpg]
[ 20.034132] systemd-journald[295]: Time jumped backwards, rotating.
[ 20.074723] led_set_brightness_nosleep+0x54/0x80
[ 20.079509] led_heartbeat_function+0x88/0x180
[ 20.084024] call_timer_fn+0xc0/0x3c4
[ 20.087751] __run_timers.part.0+0x220/0x27c
[ 20.092085] run_timer_softirq+0x44/0x80
[ 20.096073] __do_softirq+0x1e4/0x62c
[ 20.099793] ____do_softirq+0x18/0x24
[ 20.103520] call_on_irq_stack+0x2c/0x58
[ 20.107511] do_softirq_own_stack+0x24/0x3c
[ 20.111757] __irq_exit_rcu+0x168/0x1a0
[ 20.115661] irq_exit_rcu+0x18/0x40
[ 20.119203] el1_interrupt+0x38/0x64
[ 20.122838] el1h_64_irq_handler+0x18/0x2c
[ 20.127002] el1h_64_irq+0x64/0x68
[ 20.130465] arch_counter_get_cntvct+0x14/0x30
[ 20.134979] __delay+0xa4/0x110
[ 20.138179] __const_udelay+0x34/0x44
[ 20.141900] qcom_geni_serial_poll_bit+0xc4/0x104
[ 20.146675] qcom_geni_serial_stop_rx+0xc0/0x190
[ 20.151367] qcom_geni_serial_set_termios+0x4c/0x360
[ 20.156410] uart_change_speed+0x60/0x130
[ 20.160479] uart_set_termios+0x90/0x190
[ 20.164460] tty_set_termios+0x194/0x240
[ 20.168447] ttyport_open+0x144/0x180
[ 20.172169] serdev_device_open+0x38/0xe4
[ 20.176248] hci_uart_register_device+0x68/0x3ac [hci_uart]
[ 20.181957] qca_serdev_probe+0x2f4/0x530 [hci_uart]
[ 20.186753] input: pm8941_resin as
/devices/platform/soc@0/c440000.spmi/spmi-0/0-00/c440000.spmi:pmic@0:pon@800/c440000.spmi:pmic@0:pon@800:resin/input/input2
[ 20.187003] serdev_drv_probe+0x44/0x90
[ 20.187016] really_probe+0xd4/0x3f4
[ 20.208885] __driver_probe_device+0x8c/0x1a0
[ 20.213311] driver_probe_device+0x4c/0x13c
[ 20.217555] __driver_attach_async_helper+0x64/0x110
[ 20.222594] async_run_entry_fn+0x40/0x180
[ 20.226759] process_one_work+0x280/0x6d4
[ 20.230837] worker_thread+0x7c/0x430
[ 20.234557] kthread+0x110/0x114
[ 20.237849] ret_from_fork+0x10/0x20

Full boot log link,
- https://qa-reports.linaro.org/lkft/linux-next-master/build/next-20221012/testrun/12361480/suite/log-parser-boot/test/check-kernel-bug/log
- https://lkft.validation.linaro.org/scheduler/job/5660839#L3720


metadata:
git_ref: master
git_repo: https://gitlab.com/Linaro/lkft/mirrors/next/linux-next
git_sha: f843795727e4f5612c612cd178db1557978da742
git_describe: next-20221012
kernel_version: 6.0.0
kernel-config: https://builds.tuxbuild.com/2G10hEBW0Cdgh2jzrxvNzlRXdec/config
build-url: https://gitlab.com/Linaro/lkft/mirrors/next/linux-next/-/pipelines/664367901
artifact-location: https://builds.tuxbuild.com/2G10hEBW0Cdgh2jzrxvNzlRXdec
toolchain: gcc-11
System.map: https://builds.tuxbuild.com/2G10hEBW0Cdgh2jzrxvNzlRXdec/System.map
vmlinux.xz: https://builds.tuxbuild.com/2G10hEBW0Cdgh2jzrxvNzlRXdec/vmlinux.xz


--
Linaro LKFT
https://lkft.linaro.org