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 [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html