Commit 1d1456a
soc: rockchip: opp_select: Fix sleeping inside atomic context
This patch fixes the following warning:
[ 2.226264] BUG: sleeping function called from invalid context at kernel/locking/mutex.c:620
[ 2.226341] in_atomic(): 0, irqs_disabled(): 0, pid: 1, name: swapper/0
[ 2.226366] 4 locks held by swapper/0/1:
[ 2.226385] #0: (&dev->mutex){......}, at: [<ffffff800851c664>] __device_attach+0x3c/0x134
[ 2.226515] #1: (cpu_hotplug.lock){......}, at: [<ffffff800809feb0>] get_online_cpus+0x38/0x9c
[ 2.226594] #2: (subsys mutex#7){......}, at: [<ffffff800851b0e4>] subsys_interface_register+0x54/0xfc
[ 2.226684] #3: (rcu_read_lock){......}, at: [<ffffff800845c764>] rockchip_adjust_power_scale+0x88/0x450
[ 2.226771] CPU: 3 PID: 1 Comm: swapper/0 Not tainted 4.4.132 #600
[ 2.226790] Hardware name: Rockchip PX30 evb ddr3 board (DT)
[ 2.226809] Call trace:
[ 2.226840] [<ffffff800808a0d4>] dump_backtrace+0x0/0x1ec
[ 2.226889] [<ffffff800808a2d4>] show_stack+0x14/0x1c
[ 2.226918] [<ffffff80083c41b4>] dump_stack+0x94/0xbc
[ 2.226946] [<ffffff80080cb708>] ___might_sleep+0x108/0x118
[ 2.226972] [<ffffff80080cb788>] __might_sleep+0x70/0x80
[ 2.227001] [<ffffff8008b6d1d0>] mutex_lock_nested+0x54/0x38c
[ 2.227031] [<ffffff8008858714>] __of_clk_get_from_provider+0x44/0xec
[ 2.227061] [<ffffff8008852814>] __of_clk_get_by_name+0xd4/0x14c
[ 2.227112] [<ffffff80088528a4>] of_clk_get_by_name+0x18/0x28
[ 2.227140] [<ffffff800845c980>] rockchip_adjust_power_scale+0x2a4/0x450
[ 2.227171] [<ffffff800877f630>] cpufreq_init+0x154/0x394
[ 2.227199] [<ffffff8008776ac4>] cpufreq_online+0x1b0/0x68c
[ 2.227225] [<ffffff8008777040>] cpufreq_add_dev+0x3c/0x94
[ 2.227253] [<ffffff800851b168>] subsys_interface_register+0xd8/0xfc
[ 2.227281] [<ffffff80087772d8>] cpufreq_register_driver+0x10c/0x1a8
[ 2.227332] [<ffffff800877f93c>] dt_cpufreq_probe+0xcc/0xe8
[ 2.227360] [<ffffff800851e7b8>] platform_drv_probe+0x54/0xa8
[ 2.227385] [<ffffff800851c924>] driver_probe_device+0x194/0x278
[ 2.227411] [<ffffff800851cb40>] __device_attach_driver+0x60/0x9c
[ 2.227439] [<ffffff800851ae14>] bus_for_each_drv+0x9c/0xbc
[ 2.227464] [<ffffff800851c6f0>] __device_attach+0xc8/0x134
[ 2.227488] [<ffffff800851ccb8>] device_initial_probe+0x10/0x18
[ 2.227514] [<ffffff800851bcec>] bus_probe_device+0x2c/0x90
[ 2.227541] [<ffffff8008519e90>] device_add+0x44c/0x510
[ 2.227570] [<ffffff800851e4d4>] platform_device_add+0xa0/0x1e4
[ 2.227597] [<ffffff800851ef28>] platform_device_register_full+0xa4/0xe4
[ 2.227627] [<ffffff80090f8680>] rockchip_cpufreq_driver_init+0xd4/0x31c
[ 2.227654] [<ffffff8008083468>] do_one_initcall+0x84/0x1a4
[ 2.227682] [<ffffff80090c0e98>] kernel_init_freeable+0x260/0x264
[ 2.227708] [<ffffff8008b6ab68>] kernel_init+0x10/0xf8
[ 2.227734] [<ffffff80080832a0>] ret_from_fork+0x10/0x30
Fixes: 197a2d3 ("soc: rockchip: opp_select: add missing rcu lock")
Change-Id: Ib52b6f7bc77bb207a1c8c6880f7a5e916fa3d2ee
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>1 parent 166cdaf commit 1d1456a
1 file changed
Lines changed: 12 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
590 | 590 | | |
591 | 591 | | |
592 | 592 | | |
593 | | - | |
| 593 | + | |
594 | 594 | | |
595 | 595 | | |
596 | 596 | | |
597 | 597 | | |
598 | 598 | | |
599 | 599 | | |
600 | 600 | | |
601 | | - | |
| 601 | + | |
602 | 602 | | |
603 | 603 | | |
604 | 604 | | |
| |||
621 | 621 | | |
622 | 622 | | |
623 | 623 | | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
624 | 631 | | |
625 | | - | |
| 632 | + | |
| 633 | + | |
626 | 634 | | |
| 635 | + | |
627 | 636 | | |
628 | 637 | | |
629 | 638 | | |
| |||
634 | 643 | | |
635 | 644 | | |
636 | 645 | | |
637 | | - | |
638 | | - | |
639 | | - | |
640 | 646 | | |
641 | 647 | | |
642 | 648 | | |
| |||
0 commit comments