From: Rajendra Nayak <rnayak@ti.com> To: Grygorii Strashko <grygorii.strashko@ti.com> Cc: balbi@ti.com, 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: Wed, 17 Jul 2013 12:40:39 +0530 [thread overview] Message-ID: <51E6436F.5010301@ti.com> (raw) In-Reply-To: <51E51FF6.60608@ti.com> On Tuesday 16 July 2013 03:57 PM, Grygorii Strashko wrote: > Hi Rajendra, > > On 07/11/2013 12:17 PM, Rajendra Nayak wrote: >> 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: > > This solution works good for me in combination with > "serial: omap: enable PM runtime only when its fully configured" > http://www.spinics.net/lists/linux-serial/msg10317.html > (earlyprintk use case) > > And I think the best way would be to move forward with yours solution. > - it will affect only on needed IPs drivers - not on all, so no issues with iommu and etc. Ok, good to know that this solution works. Anyone has any other thoughts on whats the best way to fix this for the -rcs? (Note that we have bootup broken on all OMAPs with DEBUG_LL for now, atleast for all DT only platforms) The other option of course is to use the patch posted by Felipe [1], thought that had issues handling processor IPs as pointed out by Grygorii and Suman [2], the fix I posted [3] to make omap_device aware of hwmod bypassing these IPs might fix some of those, but this solution in general would need more testing as it affects all modules on the bus. [1] http://www.spinics.net/lists/arm-kernel/msg258062.html [2] http://www.spinics.net/lists/arm-kernel/msg258061.html [3] http://www.spinics.net/lists/arm-kernel/msg258465.html > > But issue with *non console" UARTs will still be here and, I think, > there are no way ti solve it from OMAP device/hwmod frameworks side, > because only driver can know when his context is ready. > To test do: #echo 0xDEAD > dev/ttyO3 > > Regards, > -grygorii
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: Wed, 17 Jul 2013 12:40:39 +0530 [thread overview] Message-ID: <51E6436F.5010301@ti.com> (raw) In-Reply-To: <51E51FF6.60608@ti.com> On Tuesday 16 July 2013 03:57 PM, Grygorii Strashko wrote: > Hi Rajendra, > > On 07/11/2013 12:17 PM, Rajendra Nayak wrote: >> 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: > > This solution works good for me in combination with > "serial: omap: enable PM runtime only when its fully configured" > http://www.spinics.net/lists/linux-serial/msg10317.html > (earlyprintk use case) > > And I think the best way would be to move forward with yours solution. > - it will affect only on needed IPs drivers - not on all, so no issues with iommu and etc. Ok, good to know that this solution works. Anyone has any other thoughts on whats the best way to fix this for the -rcs? (Note that we have bootup broken on all OMAPs with DEBUG_LL for now, atleast for all DT only platforms) The other option of course is to use the patch posted by Felipe [1], thought that had issues handling processor IPs as pointed out by Grygorii and Suman [2], the fix I posted [3] to make omap_device aware of hwmod bypassing these IPs might fix some of those, but this solution in general would need more testing as it affects all modules on the bus. [1] http://www.spinics.net/lists/arm-kernel/msg258062.html [2] http://www.spinics.net/lists/arm-kernel/msg258061.html [3] http://www.spinics.net/lists/arm-kernel/msg258465.html > > But issue with *non console" UARTs will still be here and, I think, > there are no way ti solve it from OMAP device/hwmod frameworks side, > because only driver can know when his context is ready. > To test do: #echo 0xDEAD > dev/ttyO3 > > Regards, > -grygorii
next prev parent reply other threads:[~2013-07-17 7:11 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 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 [this message] 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=51E6436F.5010301@ti.com \ --to=rnayak@ti.com \ --cc=balbi@ti.com \ --cc=grygorii.strashko@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.