[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1324324914-14584-1-git-send-email-felipe.contreras@nokia.com>
Date: Mon, 19 Dec 2011 22:01:54 +0200
From: Felipe Contreras <felipe.contreras@...ia.com>
To: linux-usb@...r.kernel.org
Cc: linux-kernel@...r.kernel.org,
linux-omap <linux-omap@...r.kernel.org>,
Felipe Balbi <balbi@...com>,
Greg Kroah-Hartman <gregkh@...e.de>,
Jarkko Nikula <jarkko.nikula@...mer.com>,
Felipe Contreras <felipe.contreras@...il.com>,
stable@...r.kernel.org, Hema HK <hemahk@...com>
Subject: [PATCH v2] usb: musb: fix pm_runtime mismatch
From: Felipe Contreras <felipe.contreras@...il.com>
In musb_init_controller() there's a pm_runtime_put(), but there's no
pm_runtime_get(), which creates a mismatch that causes the driver to
sleep when it shouldn't.
This was introduced in 7acc619[1], but it wasn't triggered in my setup
until 18a2689[2] was merged to Linus' branch at point df0914[3]. IOW;
when PM is working as it was supposed to.
However, it seems most of the time this is used in a way that keeps the
counter above 0, so nobody noticed. Also, it seems to depend on the
configuration used in versions before 3.1, but not later (or in it).
I found the problem by loading isp1704_charger before any usb gadgets:
http://article.gmane.org/gmane.linux.kernel/1226122
All versions after 2.6.39 are affected.
[1] usb: musb: Idle path retention and offmode support for OMAP3
[2] OMAP2+: musb: hwmod adaptation for musb registration
[3] Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6
Cc: stable@...r.kernel.org
Cc: Hema HK <hemahk@...com>
Signed-off-by: Felipe Contreras <felipe.contreras@...il.com>
---
drivers/usb/musb/musb_core.c | 2 --
1 files changed, 0 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
index b63ab15..920f04e 100644
--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
@@ -2012,8 +2012,6 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
if (status < 0)
goto fail3;
- pm_runtime_put(musb->controller);
-
status = musb_init_debugfs(musb);
if (status < 0)
goto fail4;
--
1.7.8
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists