Re: Bug in linux omap clock framework?

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

 



Hi Tomi,

nice test case.

On Fri, 5 Dec 2008, Tomi.Valkeinen@xxxxxxxxx wrote:

> 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.

Looks like there's some problem with the DSS driver's usage of 
dss_tv_fclk.  Enabling dss_tv_fclk before entering your test code's 
while-loop makes the problem go away here.  Patch below.

As an aside, your test patch does not actually disable dss1_fclk, since it 
is already enabled by the time the while-loop starts.  So you might also 
want to add a clk_disable(c2) before your while-loop starts, when you 
test.

Based on the traceback that you sent, I'd conjecture that probably some 
part of the DSS subsystem is generating an interrupt via DSS_IRQ; but then 
dss_iclk ends up disabled, and the MPU INTC is not able to communicate 
with the DSS, and the INTC wedges.  (The aborting access is to 0xd8200098, 
the INTCPS_PENDING_IRQ0 register, rather than a DSS register.)  Probably 
some IRQs need to be masked before disabling the dss_iclk.


- Paul



 drivers/video/omap/omapfb_main.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
index a77e3bf..57b9e98 100644
--- a/drivers/video/omap/omapfb_main.c
+++ b/drivers/video/omap/omapfb_main.c
@@ -1808,9 +1808,11 @@ static int omapfb_probe(struct platform_device *pdev)
 	BUG_ON(fbdev_pdev != NULL);
 
 	{
-		struct clk *c1, *c2;
+		struct clk *c1, *c2, *c3;
 		c1 = clk_get(&pdev->dev, "dss_ick");
 		c2 = clk_get(&pdev->dev, "dss1_fck");
+		c3 = clk_get(&pdev->dev, "dss_tv_fck");
+ 		clk_enable(c3);
 		while(1) {
 			clk_enable(c1);
 			clk_enable(c2);
--
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