Hi,
I am using r20p0 midgard drivers with kernel 4.14 (rc4) on an odroid xu4 board.
I have enabled DEVFREQ, and have simple_ondemand and performance governors available (default set to performance).
I get this kernel error when mali device is probed:
[ 4.492991] mali 11800000.mali: Continuing without Mali regulator control [ 4.503602] mali 11800000.mali: GPU identified as 0x0620 r0p1 status 0 [ 4.511482] mali 11800000.mali: Protected mode not available [ 4.518109] BUG: sleeping function called from invalid context at kernel/locking/mutex.c:747 [ 4.525520] in_atomic(): 0, irqs_disabled(): 0, pid: 1, name: swapper/0 [ 4.532000] 3 locks held by swapper/0/1: [ 4.535675] #0: (&dev->mutex){....}, at: [<c04b69f8>] __driver_attach+0x78/0x120 [ 4.543424] #1: (&dev->mutex){....}, at: [<c04b6a08>] __driver_attach+0x88/0x120 [ 4.550960] #2: (rcu_read_lock){....}, at: [<c04af8a8>] kbase_devfreq_init+0x18/0x6e0 [ 4.558938] Preemption disabled at: [ 4.559007] [<c0122e58>] irq_enter+0x44/0x88 [ 4.566504] CPU: 2 PID: 1 Comm: swapper/0 Not tainted 4.14.0-rc4-02 #2 [ 4.572971] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree) [ 4.579044] [<c01102c8>] (unwind_backtrace) from [<c010cabc>] (show_stack+0x10/0x14) [ 4.586781] [<c010cabc>] (show_stack) from [<c0821484>] (dump_stack+0x98/0xc4) [ 4.593969] [<c0821484>] (dump_stack) from [<c0144bcc>] (___might_sleep+0x264/0x2cc) [ 4.601690] [<c0144bcc>] (___might_sleep) from [<c0837200>] (__mutex_lock+0x2c/0xa38) [ 4.609484] [<c0837200>] (__mutex_lock) from [<c0837c28>] (mutex_lock_nested+0x1c/0x24) [ 4.617459] [<c0837c28>] (mutex_lock_nested) from [<c04c6a88>] (_find_opp_table+0x20/0x5c) [ 4.625692] [<c04c6a88>] (_find_opp_table) from [<c04c6cac>] (dev_pm_opp_get_opp_count+0xc/0x90) [ 4.634451] [<c04c6cac>] (dev_pm_opp_get_opp_count) from [<c04af934>] (kbase_devfreq_init+0xa4/0x6e0) [ 4.643648] [<c04af934>] (kbase_devfreq_init) from [<c049b008>] (kbase_platform_device_probe+0x5ec/0xc98) [ 4.653182] [<c049b008>] (kbase_platform_device_probe) from [<c04b83f4>] (platform_drv_probe+0x4c/0xb0) [ 4.662538] [<c04b83f4>] (platform_drv_probe) from [<c04b67d8>] (driver_probe_device+0x2d0/0x478) [ 4.671370] [<c04b67d8>] (driver_probe_device) from [<c04b6a84>] (__driver_attach+0x104/0x120) [ 4.679944] [<c04b6a84>] (__driver_attach) from [<c04b48a4>] (bus_for_each_dev+0x68/0x9c) [ 4.688083] [<c04b48a4>] (bus_for_each_dev) from [<c04b5a84>] (bus_add_driver+0x1cc/0x264) [ 4.696315] [<c04b5a84>] (bus_add_driver) from [<c04b7400>] (driver_register+0x78/0xf8) [ 4.704284] [<c04b7400>] (driver_register) from [<c0101b64>] (do_one_initcall+0x44/0x170) [ 4.712435] [<c0101b64>] (do_one_initcall) from [<c0c00df4>] (kernel_init_freeable+0x144/0x1d0) [ 4.721105] [<c0c00df4>] (kernel_init_freeable) from [<c0834dd0>] (kernel_init+0x8/0x110) [ 4.729247] [<c0834dd0>] (kernel_init) from [<c01088c8>] (ret_from_fork+0x14/0x2c) [ 4.740536] devfreq devfreq0: Couldn't update frequency transition information. [ 4.752374] mali 11800000.mali: Probed as mali0
Afterwards, if I change devfreq governor to simple_ondemand, I get the same error every second in syslog:
[ 1021.940152] BUG: sleeping function called from invalid context at kernel/locking/mutex.c:747 [ 1021.947111] in_atomic(): 0, irqs_disabled(): 0, pid: 120, name: kworker/u16:1 [ 1021.954278] INFO: lockdep is turned off. [ 1021.958110] Preemption disabled at: [ 1021.958119] [< (null)>] (null) [ 1021.964879] CPU: 3 PID: 120 Comm: kworker/u16:1 Tainted: G W 4.14.0-rc4-02 #2 [ 1021.973101] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree) [ 1021.979175] Workqueue: devfreq_wq devfreq_monitor [ 1021.983863] [<c01102c8>] (unwind_backtrace) from [<c010cabc>] (show_stack+0x10/0x14) [ 1021.991568] [<c010cabc>] (show_stack) from [<c0821484>] (dump_stack+0x98/0xc4) [ 1021.998762] [<c0821484>] (dump_stack) from [<c0144bcc>] (___might_sleep+0x264/0x2cc) [ 1022.006475] [<c0144bcc>] (___might_sleep) from [<c0837200>] (__mutex_lock+0x2c/0xa38) [ 1022.014269] [<c0837200>] (__mutex_lock) from [<c0837c28>] (mutex_lock_nested+0x1c/0x24) [ 1022.022241] [<c0837c28>] (mutex_lock_nested) from [<c04c6a88>] (_find_opp_table+0x20/0x5c) [ 1022.030472] [<c04c6a88>] (_find_opp_table) from [<c04c6e10>] (dev_pm_opp_find_freq_ceil+0x18/0x64) [ 1022.039398] [<c04c6e10>] (dev_pm_opp_find_freq_ceil) from [<c0672b28>] (devfreq_recommended_opp+0x34/0x4c) [ 1022.049018] [<c0672b28>] (devfreq_recommended_opp) from [<c04af4ec>] (kbase_devfreq_target+0x7c/0x408) [ 1022.058287] [<c04af4ec>] (kbase_devfreq_target) from [<c0671214>] (update_devfreq+0xd4/0x1c4) [ 1022.066778] [<c0671214>] (update_devfreq) from [<c0671400>] (devfreq_monitor+0x24/0x78) [ 1022.074752] [<c0671400>] (devfreq_monitor) from [<c013827c>] (process_one_work+0x19c/0x504) [ 1022.083070] [<c013827c>] (process_one_work) from [<c013861c>] (worker_thread+0x38/0x568) [ 1022.091132] [<c013861c>] (worker_thread) from [<c013ed04>] (kthread+0x160/0x19c) [ 1022.098500] [<c013ed04>] (kthread) from [<c01088c8>] (ret_from_fork+0x14/0x2c) [ 1037.896456] BUG: sleeping function called from invalid context at kernel/locking/mutex.c:747 [ 1037.903447] in_atomic(): 0, irqs_disabled(): 0, pid: 818, name: bash [ 1037.909732] INFO: lockdep is turned off. [ 1037.913667] Preemption disabled at: [ 1037.913683] [<c0837208>] __mutex_lock+0x34/0xa38 [ 1037.921730] CPU: 4 PID: 818 Comm: bash Tainted: G W 4.14.0-rc4-02 #2 [ 1037.929143] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree) [ 1037.935217] [<c01102c8>] (unwind_backtrace) from [<c010cabc>] (show_stack+0x10/0x14) [ 1037.942925] [<c010cabc>] (show_stack) from [<c0821484>] (dump_stack+0x98/0xc4) [ 1037.950118] [<c0821484>] (dump_stack) from [<c0144bcc>] (___might_sleep+0x264/0x2cc) [ 1037.957829] [<c0144bcc>] (___might_sleep) from [<c0837200>] (__mutex_lock+0x2c/0xa38) [ 1037.965627] [<c0837200>] (__mutex_lock) from [<c0837c28>] (mutex_lock_nested+0x1c/0x24) [ 1037.973600] [<c0837c28>] (mutex_lock_nested) from [<c04c6a88>] (_find_opp_table+0x20/0x5c) [ 1037.981830] [<c04c6a88>] (_find_opp_table) from [<c04c6e10>] (dev_pm_opp_find_freq_ceil+0x18/0x64) [ 1037.990758] [<c04c6e10>] (dev_pm_opp_find_freq_ceil) from [<c0672b28>] (devfreq_recommended_opp+0x34/0x4c) [ 1038.000377] [<c0672b28>] (devfreq_recommended_opp) from [<c04af4ec>] (kbase_devfreq_target+0x7c/0x408) [ 1038.009646] [<c04af4ec>] (kbase_devfreq_target) from [<c0671214>] (update_devfreq+0xd4/0x1c4) [ 1038.018138] [<c0671214>] (update_devfreq) from [<c067357c>] (devfreq_performance_handler+0x34/0x48) [ 1038.027150] [<c067357c>] (devfreq_performance_handler) from [<c0672578>] (governor_store+0xe0/0x168) [ 1038.036250] [<c0672578>] (governor_store) from [<c0284254>] (kernfs_fop_write+0x104/0x208) [ 1038.044482] [<c0284254>] (kernfs_fop_write) from [<c02144ec>] (__vfs_write+0x1c/0x128) [ 1038.052367] [<c02144ec>] (__vfs_write) from [<c021476c>] (vfs_write+0xa4/0x168) [ 1038.059646] [<c021476c>] (vfs_write) from [<c0214930>] (SyS_write+0x3c/0x90) [ 1038.066666] [<c0214930>] (SyS_write) from [<c0108820>] (ret_fast_syscall+0x0/0x28)
After going back to performance governor, it stops showing up.
Any resolutions?
Thanks.
Hi marianmi,
Thanks for the report, I will ask someone from our driver team to have a look at the issue.
Regards,
Daniele