Bug in linux omap clock framework?

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

 



Hi,

I have had strange clk_enable() crashes with DSS2, and now I managed to
isolate it. With the included patch, on OMAP3 SDP board, with default
kernel config, I always get the crash below. In this example case it
happens at specific time on boot, but with DSS2 it happens randomly at
runtime, when I enable the DSS clocks.

diff --git a/drivers/video/omap/omapfb_main.c
b/drivers/video/omap/omapfb_main.c
index 3bb4247..2d5ef0d 100644
--- a/drivers/video/omap/omapfb_main.c
+++ b/drivers/video/omap/omapfb_main.c
@@ -27,6 +27,7 @@
 #include <linux/platform_device.h>
 #include <linux/mm.h>
 #include <linux/uaccess.h>
+#include <linux/clk.h>
 
 #include <mach/dma.h>
 #include <mach/omapfb.h>
@@ -1806,6 +1807,18 @@ static int omapfb_probe(struct platform_device
*pdev)
 {
        BUG_ON(fbdev_pdev != NULL);
 
+       {
+               struct clk *c1, *c2;
+               c1 = clk_get(&pdev->dev, "dss_ick");
+               c2 = clk_get(&pdev->dev, "dss1_fck");
+               while(1) {
+                       clk_enable(c1);
+                       clk_enable(c2);
+                       clk_disable(c1);
+                       clk_disable(c2);
+               }
+       }
+
        /* Delay actual initialization until the LCD is registered */
        fbdev_pdev = pdev;
        if (fbdev_panel != NULL)
@@ -1958,7 +1971,7 @@ module_param_named(rotate, def_rotate, uint,
0664);
 module_param_named(mirror, def_mirror, uint, 0664);
 module_param_named(manual_update, manual_update, bool, 0664);
 
-module_init(omapfb_init);
+late_initcall(omapfb_init);
 module_exit(omapfb_cleanup);
 
 MODULE_DESCRIPTION("TI OMAP framebuffer driver");


And the crash:



<1>Unhandled fault: external abort on non-linefetch (0x1028) at
0xd8200098
Unhandled fault: external abort on non-linefetch (0x1028) at 0xd8200098
Internal error: : 1028 [#1]
Internal error: : 1028 [#1]
Modules linked in:Modules linked in:

CPU: 0    Not tainted  (2.6.28-rc6-omap1-05264-g1705711-dirty #6)
CPU: 0    Not tainted  (2.6.28-rc6-omap1-05264-g1705711-dirty #6)
PC is at __irq_svc+0x34/0x80
PC is at __irq_svc+0x34/0x80
LR is at _omap2_clk_enable+0xa0/0xe0
LR is at _omap2_clk_enable+0xa0/0xe0
pc : [<c002c9d4>]    lr : [<c0036314>]    psr: 60000193
sp : c7817d30  ip : c7817d40  fp : c7817d8c
pc : [<c002c9d4>]    lr : [<c0036314>]    psr: 60000193
sp : c7817d30  ip : c7817d40  fp : c7817d8c
r10: c001a210  r9 : 00000000  r8 : c0395048
r10: c001a210  r9 : 00000000  r8 : c0395048
r7 : c03910c0  r6 : c03910c0  r5 : d8200000  r4 : ffffffff
r7 : c03910c0  r6 : c03910c0  r5 : d8200000  r4 : ffffffff
r3 : 60000013  r2 : c003ae80  r1 : c0036314  r0 : c7817d78
r3 : 60000013  r2 : c003ae80  r1 : c0036314  r0 : c7817d78
Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 10c5387f  Table: 80004018  DAC: 00000017
Control: 10c5387f  Table: 80004018  DAC: 00000017
Process swapper (pid: 1, stack limit = 0xc78162e0)
Process swapper (pid: 1, stack limit = 0xc78162e0)
Stack: (0xc7817d30 to 0xc7818000)
Stack: (0xc7817d30 to 0xc7818000)
7d20: 7d20:
00000000 00000000 00000000 00000000 00000010 00000010 00000001 00000001 

7d40: 7d40: 80000013 80000013 c037ac4c c037ac4c c03910c0 c03910c0
c03910c0 c03910c0 c0395048 c0395048 00000000 00000000 c001a210 c001a210
c7817d8c c7817d8c 

7d60: 7d60: c7817d40 c7817d40 c7817d78 c7817d78 c0036314 c0036314
c003ae80 c003ae80 60000013 60000013 ffffffff ffffffff fffffffe fffffffe
c037ac4c c037ac4c 

7d80: 7d80: c7817da4 c7817da4 c7817d90 c7817d90 c018bef4 c018bef4
c003ae48 c003ae48 c037de28 c037de28 c037ded4 c037ded4 c7817db4 c7817db4
c7817da8 c7817da8 

7da0: 7da0: c01afd70 c01afd70 c018beac c018beac c7817dd4 c7817dd4
c7817db8 c7817db8 c01aef90 c01aef90 c01afd5c c01afd5c c037de28 c037de28
c037ded4 c037ded4 

7dc0: 7dc0: c03910c0 c03910c0 c03910c0 c03910c0 c7817df4 c7817df4
c7817dd8 c7817dd8 c01af0a4 c01af0a4 c01aeecc c01aeecc 00000000 00000000
c7817df8 c7817df8 

7de0: 7de0: c01af03c c01af03c c03910c0 c03910c0 c7817e1c c7817e1c
c7817df8 c7817df8 c01ae510 c01ae510 c01af048 c01af048 c78034d8 c78034d8
c037de70 c037de70 

7e00: 7e00: 00000000 00000000 c03910c0 c03910c0 00000000 00000000
c7941b60 c7941b60 c7817e2c c7817e2c c7817e20 c7817e20 c01aedd8 c01aedd8
c01ae4d0 c01ae4d0 

7e20: 7e20: c7817e5c c7817e5c c7817e30 c7817e30 c01ae994 c01ae994
c01aedc4 c01aedc4 c0325184 c0325184 c03910c0 c03910c0 00000000 00000000
c03a0480 c03a0480 

7e40: 7e40: c03910c0 c03910c0 00000000 00000000 00000000 00000000
00000000 00000000 c7817e84 c7817e84 c7817e60 c7817e60 c01af298 c01af298
c01ae8f8 c01ae8f8 

7e60: 7e60: c03a0480 c03a0480 c0024b00 c0024b00 00000000 00000000
00000000 00000000 00000000 00000000 c001a210 c001a210 c7817e94 c7817e94
c7817e88 c7817e88 

7e80: 7e80: c01b0108 c01b0108 c01af20c c01af20c c7817ebc c7817ebc
c7817e98 c7817e98 c001a41c c001a41c c01b009c c01b009c c0019c1c c0019c1c
c01754b0 c01754b0 

7ea0: 7ea0: 00000000 00000000 00000000 00000000 12bdf916 12bdf916
c03a0480 c03a0480 c7817fdc c7817fdc c7817ec0 c7817ec0 c002c2d0 c002c2d0
c001a21c c001a21c 

7ec0: 7ec0: c78035a0 c78035a0 c78035a4 c78035a4 00000000 00000000
0000024e 0000024e c7817f34 c7817f34 c7817ee0 c7817ee0 c016ec10 c016ec10
c0099994 c0099994 

7ee0: 7ee0: 00000000 00000000 c7817f54 c7817f54 000000d0 000000d0
c7811f28 c7811f28 00000000 00000000 c03aa84c c03aa84c 000000d0 000000d0
c03a93a4 c03a93a4 

7f00: 7f00: c7817f2c c7817f2c c7817f10 c7817f10 c016ee24 c016ee24
c783c0a0 c783c0a0 c03859bc c03859bc c783d6e0 c783d6e0 c03a93a4 c03a93a4
00000000 00000000 

7f20: 7f20: 00000000 00000000 00000000 00000000 c7817f44 c7817f44
c7817f38 c7817f38 c016ec44 c016ec44 c016ea7c c016ea7c c7817f74 c7817f74
c7817f48 c7817f48 

7f40: 7f40: c00da818 c00da818 c016ec38 c016ec38 c783d6e0 c783d6e0
c0328032 c0328032 c7817f9e c7817f9e 0000024e 0000024e c783c0a0 c783c0a0
c03859bc c03859bc 

7f60: 7f60: 0000015f 0000015f c03a93a4 c03a93a4 c7817f94 c7817f94
c7817f78 c7817f78 c00daa00 c00daa00 c00da7ec c00da7ec c7817f94 c7817f94
c783d6e0 c783d6e0 

7f80: 7f80: c00dab7c c00dab7c c7817f9e c7817f9e c7817fc4 c7817fc4
c7817f98 c7817f98 c0077f98 c0077f98 c00daa0c c00daa0c c7817fb4 c7817fb4
35337588 35337588 

7fa0: 7fa0: 00000031 00000031 00000000 00000000 00000192 00000192
c03865b0 c03865b0 00000000 00000000 c0024e74 c0024e74 c0024b00 c0024b00
00000000 00000000 

7fc0: 7fc0: 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 c7817ff4 c7817ff4 c7817fe0 c7817fe0 c00088b8 c00088b8
c002c27c c002c27c 

7fe0: 7fe0: 00000000 00000000 00000000 00000000 00000000 00000000
c7817ff8 c7817ff8 c00538a8 c00538a8 c0008854 c0008854 ffff0000 ffff0000
ffff0000 ffff0000 

Backtrace: Backtrace: 

[<c003ae3c>] [<c003ae3c>] (clk_enable+0x0/0x54) (clk_enable+0x0/0x54)
from [<c018bef4>] from [<c018bef4>] (omapfb_probe+0x54/0x7c)
(omapfb_probe+0x54/0x7c)
 r5:c037ac4c r5:c037ac4c r4:fffffffe r4:fffffffe

[<c018bea0>] [<c018bea0>] (omapfb_probe+0x0/0x7c)
(omapfb_probe+0x0/0x7c) from [<c01afd70>] from [<c01afd70>]
(platform_drv_probe+0x20/0x24)
(platform_drv_probe+0x20/0x24)
 r5:c037ded4 r5:c037ded4 r4:c037de28 r4:c037de28

[<c01afd50>] [<c01afd50>] (platform_drv_probe+0x0/0x24)
(platform_drv_probe+0x0/0x24) from [<c01aef90>] from [<c01aef90>]
(driver_probe_device+0xd0/0x17c)
(driver_probe_device+0xd0/0x17c)
[<c01aeec0>] [<c01aeec0>] (driver_probe_device+0x0/0x17c)
(driver_probe_device+0x0/0x17c) from [<c01af0a4>] from [<c01af0a4>]
(__driver_attach+0x68/0x8c)
(__driver_attach+0x68/0x8c)
 r7:c03910c0 r7:c03910c0 r6:c03910c0 r6:c03910c0 r5:c037ded4 r5:c037ded4
r4:c037de28 r4:c037de28

[<c01af03c>] [<c01af03c>] (__driver_attach+0x0/0x8c)
(__driver_attach+0x0/0x8c) from [<c01ae510>] from [<c01ae510>]
(bus_for_each_dev+0x4c/0x84)
(bus_for_each_dev+0x4c/0x84)
 r7:c03910c0 r7:c03910c0 r6:c01af03c r6:c01af03c r5:c7817df8 r5:c7817df8
r4:00000000 r4:00000000

[<c01ae4c4>] [<c01ae4c4>] (bus_for_each_dev+0x0/0x84)
(bus_for_each_dev+0x0/0x84) from [<c01aedd8>] from [<c01aedd8>]
(driver_attach+0x20/0x28)
(driver_attach+0x20/0x28)
 r7:c7941b60 r7:c7941b60 r6:00000000 r6:00000000 r5:c03910c0 r5:c03910c0
r4:00000000 r4:00000000

[<c01aedb8>] [<c01aedb8>] (driver_attach+0x0/0x28)
(driver_attach+0x0/0x28) from [<c01ae994>] from [<c01ae994>]
(bus_add_driver+0xa8/0x214)
(bus_add_driver+0xa8/0x214)
[<c01ae8ec>] [<c01ae8ec>] (bus_add_driver+0x0/0x214)
(bus_add_driver+0x0/0x214) from [<c01af298>] from [<c01af298>]
(driver_register+0x98/0x120)
(driver_register+0x98/0x120)
 r8:00000000 r8:00000000 r7:00000000 r7:00000000 r6:00000000 r6:00000000
r5:c03910c0 r5:c03910c0 r4:c03a0480 r4:c03a0480

[<c01af200>] [<c01af200>] (driver_register+0x0/0x120)
(driver_register+0x0/0x120) from [<c01b0108>] from [<c01b0108>]
(platform_driver_register+0x78/0x94)
(platform_driver_register+0x78/0x94)
[<c01b0090>] [<c01b0090>] (platform_driver_register+0x0/0x94)
(platform_driver_register+0x0/0x94) from [<c001a41c>] from [<c001a41c>]
(omapfb_init+0x20c/0x24c)
(omapfb_init+0x20c/0x24c)
[<c001a210>] [<c001a210>] (omapfb_init+0x0/0x24c)
(omapfb_init+0x0/0x24c) from [<c002c2d0>] from [<c002c2d0>]
(do_one_initcall+0x60/0x18c)
(do_one_initcall+0x60/0x18c)
 r4:c03a0480 r4:c03a0480

[<c002c270>] [<c002c270>] (do_one_initcall+0x0/0x18c)
(do_one_initcall+0x0/0x18c) from [<c00088b8>] from [<c00088b8>]
(kernel_init+0x70/0xdc)
(kernel_init+0x70/0xdc)
[<c0008848>] [<c0008848>] (kernel_init+0x0/0xdc) (kernel_init+0x0/0xdc)
from [<c00538a8>] from [<c00538a8>] (do_exit+0x0/0x6ac)
(do_exit+0x0/0x6ac)
 r5:00000000 r5:00000000 r4:00000000 r4:00000000

Code: Code: e58d1000 e58d1000 e1a0100e e1a0100e e885001f e885001f
e59f503c e59f503c (e5950098) (e5950098) 

<4>---[ end trace 7567be4737bae816 ]---
---[ end trace 7567be4737bae816 ]---
<0>Kernel panic - not syncing: Attempted to kill init!
Kernel panic - not syncing: Attempted to kill init!



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

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux