From patchwork Mon Apr 4 14:52:54 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [1/1] Fix rtc-mc13xxx lockup Date: Mon, 04 Apr 2011 04:52:54 -0000 From: "Arnaud Patard \(Rtp\)" X-Patchwork-Id: 89644 Message-Id: <20110404145306.000134775@rtp-net.org> To: rtc-linux@googlegroups.com Cc: Thomas Gleixner , Alessandro Zummo Fix this lock up while booting : [ 240.159703] INFO: task swapper:1 blocked for more than 120 seconds. [ 240.166030] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. [ 240.173976] swapper D c03e688c 0 1 0 0x00000000 [ 240.180483] Backtrace: [ 240.183066] [] (schedule+0x0/0x2f0) from [] (__mutex_lock_slowpath+0x88/0xb4) [ 240.192086] [] (__mutex_lock_slowpath+0x0/0xb4) from [] (mutex_lock+0x30/0x34) [ 240.201151] r8:00000001 r7:df83fd8c r6:00000000 r5:df83fd8c r4:dfbd1204 [ 240.208091] [] (mutex_lock+0x0/0x34) from [] (mc13xxx_lock+0x28/0x2c) [ 240.216403] r4:dfbd1204 r3:ffffffff [ 240.220181] [] (mc13xxx_lock+0x0/0x2c) from [] (mc13xxx_rtc_read_time+0x24/0xf4) [ 240.229377] r4:dfbabc40 r3:c0284ce4 [ 240.233127] [] (mc13xxx_rtc_read_time+0x0/0xf4) from [] (__rtc_read_time+0x50/0x5c) [ 240.243441] r6:00000000 r5:df83fd8c r4:dfb46c00 [ 240.248211] [] (__rtc_read_time+0x0/0x5c) from [] (rtc_read_time+0x34/0x48) [ 240.257020] r5:dfb46c00 r4:dfb46ce0 [ 240.260763] [] (rtc_read_time+0x0/0x48) from [] (__rtc_read_alarm+0x24/0x27c) [ 240.269740] r7:dfb46c00 r6:dfbdcbd8 r5:dfb46c00 r4:df83fdec [ 240.275582] [] (__rtc_read_alarm+0x0/0x27c) from [] (rtc_device_register+0x160/0x284) [ 240.285320] [] (rtc_device_register+0x0/0x284) from [] (mc13xxx_rtc_probe+0x104/0x18c) [ 240.295150] [] (mc13xxx_rtc_probe+0x0/0x18c) from [] (platform_drv_probe+0x1c/0x20) [ 240.304651] r8:00000000 r7:c0540db4 r6:c0540db4 r5:dfbdcb08 r4:dfbdcb08 [ 240.311620] [] (platform_drv_probe+0x0/0x20) from [] (really_probe+0xa0/0x150) [ 240.320730] [] (really_probe+0x0/0x150) from [] (driver_probe_device+0x28/0x34) [ 240.329878] r7:00000000 r6:c0540db4 r5:dfbdcb3c r4:dfbdcb08 [ 240.335725] [] (driver_probe_device+0x0/0x34) from [] (__driver_attach+0x68/0x8c) [ 240.345907] [] (__driver_attach+0x0/0x8c) from [] (bus_for_each_dev+0x58/0x88) [ 240.354976] r6:c01fc5dc r5:df83fee0 r4:c0540db4 r3:df80d4b4 [ 240.360870] [] (bus_for_each_dev+0x0/0x88) from [] (driver_attach+0x20/0x28) [ 240.369758] r7:00000000 r6:c0539c20 r5:dfba9180 r4:c0540db4 [ 240.375604] [] (driver_attach+0x0/0x28) from [] (bus_add_driver+0xb4/0x230) [ 240.384453] [] (bus_add_driver+0x0/0x230) from [] (driver_register+0xa8/0x128) [ 240.393568] [] (driver_register+0x0/0x128) from [] (platform_driver_register+0x4c/0x60) [ 240.403469] [] (platform_driver_register+0x0/0x60) from [] (platform_driver_probe+0x20/0x70) [ 240.413816] [] (platform_driver_probe+0x0/0x70) from [] (mc13xxx_rtc_init+0x18/0x24) [ 240.423406] r5:c002691c r4:c00267e4 [ 240.427110] [] (mc13xxx_rtc_init+0x0/0x24) from [] (do_one_initcall+0xa4/0x174) [ 240.436302] [] (do_one_initcall+0x0/0x174) from [] (kernel_init+0xa4/0x154) [ 240.445916] [] (kernel_init+0x0/0x154) from [] (do_exit+0x0/0x250) [ 240.453936] r5:c0008930 r4:00000000 Signed-off-by: Arnaud Patard Index: imx-test/drivers/rtc/rtc-mc13xxx.c =================================================================== --- imx-test.orig/drivers/rtc/rtc-mc13xxx.c +++ imx-test/drivers/rtc/rtc-mc13xxx.c @@ -349,8 +349,13 @@ static int __devinit mc13xxx_rtc_probe(s if (ret) goto err_alarm_irq_request; + mc13xxx_unlock(mc13xxx); + priv->rtc = rtc_device_register(pdev->name, &pdev->dev, &mc13xxx_rtc_ops, THIS_MODULE); + + mc13xxx_lock(mc13xxx); + if (IS_ERR(priv->rtc)) { ret = PTR_ERR(priv->rtc);