diff mbox series

clk: qcom: smd-rpm: Fix MSM8936 RPM_SMD_PCNOC_A_CLK

Message ID 20210727092613.23056-1-shawn.guo@linaro.org
State Accepted
Commit 4ee107c514139960682cc0f3623a24e86fda1a13
Headers show
Series clk: qcom: smd-rpm: Fix MSM8936 RPM_SMD_PCNOC_A_CLK | expand

Commit Message

Shawn Guo July 27, 2021, 9:26 a.m. UTC
Commit a0384ecfe2aa ("clk: qcom: smd-rpm: De-duplicate identical
entries") introduces the following regression on MSM8936/MSM8939, as
RPM_SMD_PCNOC_A_CLK gets pointed to pcnoc_clk by mistake.  Fix it by
correcting the clock to pcnoc_a_clk.

[    1.307363] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
[    1.313593] Mem abort info:
[    1.322512]   ESR = 0x96000004
[    1.325132]   EC = 0x25: DABT (current EL), IL = 32 bits
[    1.338872]   SET = 0, FnV = 0
[    1.355483]   EA = 0, S1PTW = 0
[    1.368702]   FSC = 0x04: level 0 translation fault
[    1.383294] Data abort info:
[    1.398292]   ISV = 0, ISS = 0x00000004
[    1.398297]   CM = 0, WnR = 0
[    1.398301] [0000000000000000] user address but active_mm is swapper
[    1.404193] Internal error: Oops: 96000004 [#1] PREEMPT SMP
[    1.420596] Modules linked in:
[    1.420604] CPU: 0 PID: 5 Comm: kworker/0:0 Not tainted 5.14.0-rc3+ #198
[    1.441010] pc : __clk_register+0x48/0x780
[    1.446045] lr : __clk_register+0x3c/0x780
[    1.449953] sp : ffff800010063440
[    1.454031] x29: ffff800010063440 x28: 0000000000000004 x27: 0000000000000066
[    1.457423] x26: 0000000000000001 x25: 000000007fffffff x24: ffff800010f9f388
[    1.464540] x23: ffff00007fc12a90 x22: ffff0000034b2010 x21: 0000000000000000
[    1.471658] x20: ffff800010f9fff8 x19: ffff00000152a700 x18: 0000000000000001
[    1.478778] x17: ffff00007fbd40c8 x16: 0000000000000460 x15: 0000000000000465
[    1.485895] x14: ffffffffffffffff x13: 746e756f635f7265 x12: 696669746f6e5f6b
[    1.493013] x11: 0000000000000006 x10: 0000000000000000 x9 : 0000000000000000
[    1.500131] x8 : ffff00000152a800 x7 : 0000000000000000 x6 : 000000000000003f
[    1.507249] x5 : 0000000000000040 x4 : 0000000000000000 x3 : 0000000000000004
[    1.514367] x2 : 0000000000000000 x1 : 0000000000000cc0 x0 : ffff00000152a700
[    1.521486] Call trace:
[    1.528598]  __clk_register+0x48/0x780
[    1.530855]  clk_hw_register+0x20/0x60
[    1.534674]  devm_clk_hw_register+0x50/0xa8
[    1.538408]  rpm_smd_clk_probe+0x1a4/0x260
[    1.542488]  platform_probe+0x68/0xd8
[    1.546653]  really_probe+0x140/0x2f8
[    1.550386]  __driver_probe_device+0x78/0xe0
[    1.554033]  driver_probe_device+0x80/0x110
[    1.558373]  __device_attach_driver+0x90/0xe0
[    1.562280]  bus_for_each_drv+0x78/0xc8
[    1.566793]  __device_attach+0xf0/0x150
[    1.570438]  device_initial_probe+0x14/0x20
[    1.574259]  bus_probe_device+0x9c/0xa8
[    1.578425]  device_add+0x378/0x870
[    1.582243]  of_device_add+0x44/0x60
[    1.585716]  of_platform_device_create_pdata+0xc0/0x110
[    1.589538]  of_platform_bus_create+0x17c/0x388
[    1.594485]  of_platform_populate+0x50/0xf0
[    1.598998]  qcom_smd_rpm_probe+0xd4/0x128
[    1.603164]  rpmsg_dev_probe+0xbc/0x1a8
[    1.607330]  really_probe+0x140/0x2f8
[    1.611063]  __driver_probe_device+0x78/0xe0
[    1.614883]  driver_probe_device+0x80/0x110
[    1.619224]  __device_attach_driver+0x90/0xe0
[    1.623131]  bus_for_each_drv+0x78/0xc8
[    1.627643]  __device_attach+0xf0/0x150
[    1.631289]  device_initial_probe+0x14/0x20
[    1.635109]  bus_probe_device+0x9c/0xa8
[    1.639275]  device_add+0x378/0x870
[    1.643095]  device_register+0x20/0x30
[    1.646567]  rpmsg_register_device+0x54/0x90
[    1.650387]  qcom_channel_state_worker+0x168/0x288
[    1.654814]  process_one_work+0x1a0/0x328
[    1.659415]  worker_thread+0x4c/0x420
[    1.663494]  kthread+0x150/0x160
[    1.667138]  ret_from_fork+0x10/0x18
[    1.670442] Code: 97f56b92 b40034a0 aa0003f3 52819801 (f94002a0)
[    1.674004] ---[ end trace 412fa6f47384cdfe ]---

Fixes: a0384ecfe2aa ("clk: qcom: smd-rpm: De-duplicate identical entries")
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>

---
 drivers/clk/qcom/clk-smd-rpm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.17.1

Comments

Stephen Boyd July 27, 2021, 6:14 p.m. UTC | #1
Quoting Shawn Guo (2021-07-27 02:26:13)
> Commit a0384ecfe2aa ("clk: qcom: smd-rpm: De-duplicate identical

> entries") introduces the following regression on MSM8936/MSM8939, as

> RPM_SMD_PCNOC_A_CLK gets pointed to pcnoc_clk by mistake.  Fix it by

> correcting the clock to pcnoc_a_clk.

> 

> [    1.307363] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000

> [    1.313593] Mem abort info:

> [    1.322512]   ESR = 0x96000004

> [    1.325132]   EC = 0x25: DABT (current EL), IL = 32 bits

> [    1.338872]   SET = 0, FnV = 0

> [    1.355483]   EA = 0, S1PTW = 0

> [    1.368702]   FSC = 0x04: level 0 translation fault

> [    1.383294] Data abort info:

> [    1.398292]   ISV = 0, ISS = 0x00000004

> [    1.398297]   CM = 0, WnR = 0

> [    1.398301] [0000000000000000] user address but active_mm is swapper

> [    1.404193] Internal error: Oops: 96000004 [#1] PREEMPT SMP

> [    1.420596] Modules linked in:

> [    1.420604] CPU: 0 PID: 5 Comm: kworker/0:0 Not tainted 5.14.0-rc3+ #198

> [    1.441010] pc : __clk_register+0x48/0x780

> [    1.446045] lr : __clk_register+0x3c/0x780

> [    1.449953] sp : ffff800010063440

> [    1.454031] x29: ffff800010063440 x28: 0000000000000004 x27: 0000000000000066

> [    1.457423] x26: 0000000000000001 x25: 000000007fffffff x24: ffff800010f9f388

> [    1.464540] x23: ffff00007fc12a90 x22: ffff0000034b2010 x21: 0000000000000000

> [    1.471658] x20: ffff800010f9fff8 x19: ffff00000152a700 x18: 0000000000000001

> [    1.478778] x17: ffff00007fbd40c8 x16: 0000000000000460 x15: 0000000000000465

> [    1.485895] x14: ffffffffffffffff x13: 746e756f635f7265 x12: 696669746f6e5f6b

> [    1.493013] x11: 0000000000000006 x10: 0000000000000000 x9 : 0000000000000000

> [    1.500131] x8 : ffff00000152a800 x7 : 0000000000000000 x6 : 000000000000003f

> [    1.507249] x5 : 0000000000000040 x4 : 0000000000000000 x3 : 0000000000000004

> [    1.514367] x2 : 0000000000000000 x1 : 0000000000000cc0 x0 : ffff00000152a700

> [    1.521486] Call trace:

> [    1.528598]  __clk_register+0x48/0x780

> [    1.530855]  clk_hw_register+0x20/0x60

> [    1.534674]  devm_clk_hw_register+0x50/0xa8

> [    1.538408]  rpm_smd_clk_probe+0x1a4/0x260

> [    1.542488]  platform_probe+0x68/0xd8

> [    1.546653]  really_probe+0x140/0x2f8

> [    1.550386]  __driver_probe_device+0x78/0xe0

> [    1.554033]  driver_probe_device+0x80/0x110

> [    1.558373]  __device_attach_driver+0x90/0xe0

> [    1.562280]  bus_for_each_drv+0x78/0xc8

> [    1.566793]  __device_attach+0xf0/0x150

> [    1.570438]  device_initial_probe+0x14/0x20

> [    1.574259]  bus_probe_device+0x9c/0xa8

> [    1.578425]  device_add+0x378/0x870

> [    1.582243]  of_device_add+0x44/0x60

> [    1.585716]  of_platform_device_create_pdata+0xc0/0x110

> [    1.589538]  of_platform_bus_create+0x17c/0x388

> [    1.594485]  of_platform_populate+0x50/0xf0

> [    1.598998]  qcom_smd_rpm_probe+0xd4/0x128

> [    1.603164]  rpmsg_dev_probe+0xbc/0x1a8

> [    1.607330]  really_probe+0x140/0x2f8

> [    1.611063]  __driver_probe_device+0x78/0xe0

> [    1.614883]  driver_probe_device+0x80/0x110

> [    1.619224]  __device_attach_driver+0x90/0xe0

> [    1.623131]  bus_for_each_drv+0x78/0xc8

> [    1.627643]  __device_attach+0xf0/0x150

> [    1.631289]  device_initial_probe+0x14/0x20

> [    1.635109]  bus_probe_device+0x9c/0xa8

> [    1.639275]  device_add+0x378/0x870

> [    1.643095]  device_register+0x20/0x30

> [    1.646567]  rpmsg_register_device+0x54/0x90

> [    1.650387]  qcom_channel_state_worker+0x168/0x288

> [    1.654814]  process_one_work+0x1a0/0x328

> [    1.659415]  worker_thread+0x4c/0x420

> [    1.663494]  kthread+0x150/0x160

> [    1.667138]  ret_from_fork+0x10/0x18

> [    1.670442] Code: 97f56b92 b40034a0 aa0003f3 52819801 (f94002a0)

> [    1.674004] ---[ end trace 412fa6f47384cdfe ]---


Applied to clk-fixes
diff mbox series

Patch

diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c
index 800b2fef1887..b2c142f3a649 100644
--- a/drivers/clk/qcom/clk-smd-rpm.c
+++ b/drivers/clk/qcom/clk-smd-rpm.c
@@ -467,7 +467,7 @@  DEFINE_CLK_SMD_RPM(msm8936, sysmmnoc_clk, sysmmnoc_a_clk, QCOM_SMD_RPM_BUS_CLK,
 
 static struct clk_smd_rpm *msm8936_clks[] = {
 	[RPM_SMD_PCNOC_CLK]		= &msm8916_pcnoc_clk,
-	[RPM_SMD_PCNOC_A_CLK]		= &msm8916_pcnoc_clk,
+	[RPM_SMD_PCNOC_A_CLK]		= &msm8916_pcnoc_a_clk,
 	[RPM_SMD_SNOC_CLK]		= &msm8916_snoc_clk,
 	[RPM_SMD_SNOC_A_CLK]		= &msm8916_snoc_a_clk,
 	[RPM_SMD_BIMC_CLK]		= &msm8916_bimc_clk,