From: Rajendra Nayak <rnayak@ti.com> To: balbi@ti.com Cc: Tony Lindgren <tony@atomide.com>, Kevin Hilman <khilman@linaro.org>, "Bedia, Vaibhav" <vaibhav.bedia@ti.com>, "linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>, "linux-arm-kernel@lists.infradead.org" <linux-arm-kernel@lists.infradead.org>, Mark Jackson <mpfj-list@newflow.co.uk>, Sourav Poddar <sourav.poddar@ti.com>, Paul Walmsley <paul@pwsan.com> Subject: Re: Boot hang regression 3.10.0-rc4 -> 3.10.0 Date: Thu, 11 Jul 2013 14:47:00 +0530 [thread overview] Message-ID: <51DE780C.2070701@ti.com> (raw) In-Reply-To: <20130710160704.GH18966@arwen.pp.htv.fi> On Wednesday 10 July 2013 09:37 PM, Felipe Balbi wrote: > how about something like below ? It makes omap_device/hwmod and > pm_runtime agree on the initial state of the device and will prevent > ->runtime_resume() from being called on first pm_runtime_get*() done > during probe. > > This is similar to what PCI bus does (if you look at pci_pm_init()). I tried something similar [1] but what I found is that the serial runtime resume was called despite it being marked as active using pm_runtime_set_active(). That seems to be because of the pm_runtime_set_autosuspend_delay() because we have the autosuspend_delay = -1 ----- static void update_autosuspend(struct device *dev, int old_delay, int old_use) { int delay = dev->power.autosuspend_delay; /* Should runtime suspend be prevented now? */ if (dev->power.use_autosuspend && delay < 0) { /* If it used to be allowed then prevent it. */ if (!old_use || old_delay >= 0) { atomic_inc(&dev->power.usage_count); rpm_resume(dev, 0); <------------------------------- calls serial runtime resume. } } ----- So we end up with the same issue with serial resume being called before set_termios() [1] diff --git a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c index 5cc9287..c71d47d 100644 --- a/arch/arm/mach-omap2/omap_device.c +++ b/arch/arm/mach-omap2/omap_device.c @@ -129,6 +129,7 @@ static int omap_device_build_from_dt(struct platform_device *pdev) struct device_node *node = pdev->dev.of_node; const char *oh_name; int oh_cnt, i, ret = 0; + bool device_active = false; oh_cnt = of_property_count_strings(node, "ti,hwmods"); if (oh_cnt <= 0) { @@ -152,6 +153,9 @@ static int omap_device_build_from_dt(struct platform_device *pdev) goto odbfd_exit1; } hwmods[i] = oh; + if (oh->flags & HWMOD_INIT_NO_IDLE) + device_active = true; + } od = omap_device_alloc(pdev, hwmods, oh_cnt); @@ -172,6 +176,11 @@ static int omap_device_build_from_dt(struct platform_device *pdev) pdev->dev.pm_domain = &omap_device_pm_domain; + if (device_active) { + omap_device_enable(pdev); + pm_runtime_set_active(&pdev->dev); + } + odbfd_exit1: kfree(hwmods); odbfd_exit:
WARNING: multiple messages have this Message-ID (diff)
From: rnayak@ti.com (Rajendra Nayak) To: linux-arm-kernel@lists.infradead.org Subject: Boot hang regression 3.10.0-rc4 -> 3.10.0 Date: Thu, 11 Jul 2013 14:47:00 +0530 [thread overview] Message-ID: <51DE780C.2070701@ti.com> (raw) In-Reply-To: <20130710160704.GH18966@arwen.pp.htv.fi> On Wednesday 10 July 2013 09:37 PM, Felipe Balbi wrote: > how about something like below ? It makes omap_device/hwmod and > pm_runtime agree on the initial state of the device and will prevent > ->runtime_resume() from being called on first pm_runtime_get*() done > during probe. > > This is similar to what PCI bus does (if you look at pci_pm_init()). I tried something similar [1] but what I found is that the serial runtime resume was called despite it being marked as active using pm_runtime_set_active(). That seems to be because of the pm_runtime_set_autosuspend_delay() because we have the autosuspend_delay = -1 ----- static void update_autosuspend(struct device *dev, int old_delay, int old_use) { int delay = dev->power.autosuspend_delay; /* Should runtime suspend be prevented now? */ if (dev->power.use_autosuspend && delay < 0) { /* If it used to be allowed then prevent it. */ if (!old_use || old_delay >= 0) { atomic_inc(&dev->power.usage_count); rpm_resume(dev, 0); <------------------------------- calls serial runtime resume. } } ----- So we end up with the same issue with serial resume being called before set_termios() [1] diff --git a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c index 5cc9287..c71d47d 100644 --- a/arch/arm/mach-omap2/omap_device.c +++ b/arch/arm/mach-omap2/omap_device.c @@ -129,6 +129,7 @@ static int omap_device_build_from_dt(struct platform_device *pdev) struct device_node *node = pdev->dev.of_node; const char *oh_name; int oh_cnt, i, ret = 0; + bool device_active = false; oh_cnt = of_property_count_strings(node, "ti,hwmods"); if (oh_cnt <= 0) { @@ -152,6 +153,9 @@ static int omap_device_build_from_dt(struct platform_device *pdev) goto odbfd_exit1; } hwmods[i] = oh; + if (oh->flags & HWMOD_INIT_NO_IDLE) + device_active = true; + } od = omap_device_alloc(pdev, hwmods, oh_cnt); @@ -172,6 +176,11 @@ static int omap_device_build_from_dt(struct platform_device *pdev) pdev->dev.pm_domain = &omap_device_pm_domain; + if (device_active) { + omap_device_enable(pdev); + pm_runtime_set_active(&pdev->dev); + } + odbfd_exit1: kfree(hwmods); odbfd_exit:
next prev parent reply other threads:[~2013-07-11 9:17 UTC|newest] Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-07-04 13:25 Boot hang regression 3.10.0-rc4 -> 3.10.0 Mark Jackson 2013-07-04 13:25 ` Mark Jackson 2013-07-04 15:14 ` Mark Jackson 2013-07-04 15:14 ` Mark Jackson 2013-07-04 16:00 ` Mark Jackson 2013-07-04 16:00 ` Mark Jackson 2013-07-05 8:11 ` Bedia, Vaibhav 2013-07-05 8:11 ` Bedia, Vaibhav 2013-07-05 11:59 ` Tony Lindgren 2013-07-05 11:59 ` Tony Lindgren 2013-07-05 13:20 ` Bedia, Vaibhav 2013-07-05 13:20 ` Bedia, Vaibhav 2013-07-05 13:31 ` Bedia, Vaibhav 2013-07-05 13:31 ` Bedia, Vaibhav 2013-07-08 11:25 ` Tony Lindgren 2013-07-08 11:25 ` Tony Lindgren 2013-07-08 12:16 ` Tony Lindgren 2013-07-08 12:16 ` Tony Lindgren 2013-07-08 12:41 ` Rajendra Nayak 2013-07-08 12:41 ` Rajendra Nayak 2013-07-08 13:10 ` Tony Lindgren 2013-07-08 13:10 ` Tony Lindgren 2013-07-08 13:20 ` Rajendra Nayak 2013-07-08 13:20 ` Rajendra Nayak 2013-07-08 13:25 ` Rajendra Nayak 2013-07-08 13:25 ` Rajendra Nayak 2013-07-08 13:35 ` Felipe Balbi 2013-07-08 13:35 ` Felipe Balbi 2013-07-09 5:33 ` Rajendra Nayak 2013-07-09 5:33 ` Rajendra Nayak 2013-07-09 6:42 ` Felipe Balbi 2013-07-09 6:42 ` Felipe Balbi 2013-07-09 7:19 ` Rajendra Nayak 2013-07-09 7:19 ` Rajendra Nayak 2013-07-09 7:40 ` Felipe Balbi 2013-07-09 7:40 ` Felipe Balbi 2013-07-09 18:59 ` Grygorii Strashko 2013-07-09 18:59 ` Grygorii Strashko 2013-07-09 19:41 ` Felipe Balbi 2013-07-09 19:41 ` Felipe Balbi 2013-07-10 12:16 ` Grygorii Strashko 2013-07-10 12:16 ` Grygorii Strashko 2013-07-10 12:25 ` Felipe Balbi 2013-07-10 12:25 ` Felipe Balbi 2013-07-10 8:22 ` Kevin Hilman 2013-07-10 8:22 ` Kevin Hilman 2013-07-10 12:10 ` Tony Lindgren 2013-07-10 12:10 ` Tony Lindgren 2013-07-10 12:27 ` Tony Lindgren 2013-07-10 12:27 ` Tony Lindgren 2013-07-10 14:26 ` Tony Lindgren 2013-07-10 14:26 ` Tony Lindgren 2013-07-10 16:07 ` Felipe Balbi 2013-07-10 16:07 ` Felipe Balbi 2013-07-10 16:11 ` Felipe Balbi 2013-07-10 16:11 ` Felipe Balbi 2013-07-11 6:32 ` Tony Lindgren 2013-07-11 6:32 ` Tony Lindgren 2013-07-11 9:59 ` Grygorii Strashko 2013-07-11 9:59 ` Grygorii Strashko 2013-07-12 0:40 ` Suman Anna 2013-07-12 0:40 ` Suman Anna 2013-07-15 6:44 ` Rajendra Nayak 2013-07-15 6:44 ` Rajendra Nayak 2013-07-15 10:01 ` Rajendra Nayak 2013-07-15 10:01 ` Rajendra Nayak 2013-07-15 19:23 ` Suman Anna 2013-07-15 19:23 ` Suman Anna 2013-07-16 6:30 ` Rajendra Nayak 2013-07-16 6:30 ` Rajendra Nayak 2013-07-11 9:17 ` Rajendra Nayak [this message] 2013-07-11 9:17 ` Rajendra Nayak 2013-07-11 9:26 ` Felipe Balbi 2013-07-11 9:26 ` Felipe Balbi 2013-07-11 10:16 ` [PATCH] arm: omap2plus: unidle devices which are about to probe Felipe Balbi 2013-07-11 10:16 ` Felipe Balbi 2013-07-12 11:58 ` Grygorii Strashko 2013-07-12 11:58 ` Grygorii Strashko 2013-07-12 12:10 ` Felipe Balbi 2013-07-12 12:10 ` Felipe Balbi 2013-07-12 12:27 ` Rajendra Nayak 2013-07-12 12:27 ` Rajendra Nayak 2013-07-13 22:21 ` Kevin Hilman 2013-07-13 22:21 ` Kevin Hilman 2013-07-11 9:59 ` Boot hang regression 3.10.0-rc4 -> 3.10.0 Grygorii Strashko 2013-07-11 9:59 ` Grygorii Strashko 2013-07-16 10:27 ` Grygorii Strashko 2013-07-16 10:27 ` Grygorii Strashko 2013-07-17 7:10 ` Rajendra Nayak 2013-07-17 7:10 ` Rajendra Nayak 2013-07-11 6:18 ` Rajendra Nayak 2013-07-11 6:18 ` Rajendra Nayak 2013-07-11 6:24 ` Tony Lindgren 2013-07-11 6:24 ` Tony Lindgren 2013-07-11 9:11 ` Rajendra Nayak 2013-07-11 9:11 ` Rajendra Nayak
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=51DE780C.2070701@ti.com \ --to=rnayak@ti.com \ --cc=balbi@ti.com \ --cc=khilman@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-omap@vger.kernel.org \ --cc=mpfj-list@newflow.co.uk \ --cc=paul@pwsan.com \ --cc=sourav.poddar@ti.com \ --cc=tony@atomide.com \ --cc=vaibhav.bedia@ti.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.