From: Grygorii Strashko <grygorii.strashko@ti.com>
To: Rajendra Nayak <rnayak@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: Thu, 11 Jul 2013 12:59:31 +0300 [thread overview]
Message-ID: <51DE8203.7040408@ti.com> (raw)
In-Reply-To: <51DE780C.2070701@ti.com>
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.
It's strange - the check for status is inside rpm_resume()
if (dev->power.runtime_status == RPM_ACTIVE) {
retval = 1;
goto out;
}
So, if status is set to RPM_ACTIVE before first call to:
pm_runtime_use_autosuspend(&pdev->dev);
pm_runtime_set_autosuspend_delay(&pdev->dev,
omap_up_info->autosuspend_timeout);
-- or --
pm_runtime_get*()
everything should be ok.
May be the problem is inside serial_omap_set_termios() where
pm_runtime_get_sync is called before context is initialized.
probe:
get - status is ACTIVE and serial resume is not called
put - status is IDLE
set_termios
get - status is IDLE and serial resume is called
> }
> }
> -----
>
> 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:
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2013-07-11 10:00 UTC|newest]
Thread overview: 48+ 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 15:14 ` Mark Jackson
2013-07-04 16:00 ` Mark Jackson
2013-07-05 8:11 ` Bedia, Vaibhav
2013-07-05 11:59 ` Tony Lindgren
2013-07-05 13:20 ` Bedia, Vaibhav
2013-07-05 13:31 ` Bedia, Vaibhav
2013-07-08 11:25 ` Tony Lindgren
2013-07-08 12:16 ` Tony Lindgren
2013-07-08 12:41 ` Rajendra Nayak
2013-07-08 13:10 ` Tony Lindgren
2013-07-08 13:20 ` Rajendra Nayak
2013-07-08 13:25 ` Rajendra Nayak
2013-07-08 13:35 ` Felipe Balbi
2013-07-09 5:33 ` Rajendra Nayak
2013-07-09 6:42 ` Felipe Balbi
2013-07-09 7:19 ` Rajendra Nayak
2013-07-09 7:40 ` Felipe Balbi
2013-07-09 18:59 ` Grygorii Strashko
2013-07-09 19:41 ` Felipe Balbi
2013-07-10 12:16 ` Grygorii Strashko
2013-07-10 12:25 ` Felipe Balbi
2013-07-10 8:22 ` Kevin Hilman
2013-07-10 12:10 ` Tony Lindgren
2013-07-10 12:27 ` Tony Lindgren
2013-07-10 14:26 ` Tony Lindgren
2013-07-10 16:07 ` Felipe Balbi
2013-07-10 16:11 ` Felipe Balbi
2013-07-11 6:32 ` Tony Lindgren
2013-07-11 9:59 ` Grygorii Strashko
2013-07-12 0:40 ` Suman Anna
2013-07-15 6:44 ` Rajendra Nayak
2013-07-15 10:01 ` Rajendra Nayak
2013-07-15 19:23 ` Suman Anna
2013-07-16 6:30 ` Rajendra Nayak
2013-07-11 9:17 ` Rajendra Nayak
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-12 11:58 ` Grygorii Strashko
2013-07-12 12:10 ` Felipe Balbi
2013-07-12 12:27 ` Rajendra Nayak
2013-07-13 22:21 ` Kevin Hilman
2013-07-11 9:59 ` Grygorii Strashko [this message]
2013-07-16 10:27 ` Boot hang regression 3.10.0-rc4 -> 3.10.0 Grygorii Strashko
2013-07-17 7:10 ` Rajendra Nayak
2013-07-11 6:18 ` Rajendra Nayak
2013-07-11 6:24 ` Tony Lindgren
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=51DE8203.7040408@ti.com \
--to=grygorii.strashko@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=rnayak@ti.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).