From: Tony Lindgren <tony@atomide.com>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
Kevin Hilman <khilman@baylibre.com>,
"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
Linux OMAP Mailing List <linux-omap@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>
Subject: Re: PM regression with commit 5de85b9d57ab PM runtime re-init in v4.5-rc1
Date: Mon, 1 Feb 2016 10:11:35 -0800 [thread overview]
Message-ID: <20160201181135.GL19432@atomide.com> (raw)
In-Reply-To: <CAPDyKFoQHpqdCa4fzHycP0OT2KsNTxWm7JZSe8Mauh+rxqGtGg@mail.gmail.com>
* Ulf Hansson <ulf.hansson@linaro.org> [160201 08:45]:
> On 28 January 2016 at 17:58, Tony Lindgren <tony@atomide.com> wrote:
> >
> > The MMC hardware will not get idled properly any longer blocking any
> > deeper idle states.
> >
> >> Did the driver not probe successfully the second try? If so, what happened.
> >
> > It probes fine after a -EPROBE_DEFER on the vmmc i2c regulator.
> > But the PM runtime usecounts are wrong.
>
> Okay. How did you verify this?
Well that was just based on what I see in the dmesg:
omap_device: omap_device_enable() called from invalid state 1
> I think the easiest way would be to make sure the usage count is
> *one*, just before the omap_hsmmc calls mmc_add_host() in its
> ->probe() function.
>
> If it's *two*, that confirms this theory.
Here's with use count dumped for one MMC:
omap_hsmmc 4809c000.mmc: GPIO lookup for consumer cd
omap_hsmmc 4809c000.mmc: using device tree for GPIO lookup
omap_hsmmc 4809c000.mmc: Got CD GPIO
omap_hsmmc 4809c000.mmc: GPIO lookup for consumer wp
omap_hsmmc 4809c000.mmc: using device tree for GPIO lookup
omap_hsmmc 4809c000.mmc: using lookup tables for GPIO lookup
omap_hsmmc 4809c000.mmc: lookup for GPIO wp failed
omap_hsmmc 4809c000.mmc: GPIO lookup for consumer cd
omap_hsmmc 4809c000.mmc: using device tree for GPIO lookup
omap_hsmmc 4809c000.mmc: Got CD GPIO
omap_hsmmc 4809c000.mmc: GPIO lookup for consumer wp
omap_hsmmc 4809c000.mmc: using device tree for GPIO lookup
omap_hsmmc 4809c000.mmc: using lookup tables for GPIO lookup
omap_hsmmc 4809c000.mmc: lookup for GPIO wp failed
omap_hsmmc 4809c000.mmc: omap_device: omap_device_enable() called from invalid state 1
omap_hsmmc 4809c000.mmc: PM runtime use count: 0
So it seems you're right, it's the state not the count.
> > So one of the failing cases seems to be:
> >
> > 1. Device driver probe sets pm_runtime_set_autosuspend_delay()
>
> Only when "someone" in-before has set the autosuspend delay to a
> negative value, this will affect the usage count.
>
> I didn't find any in-kernel user that would set this for the
> omap_hsmmc device, so it needs to be done from userspace via sysfs. It
> would be really great if you could help to confirm this.
No nothing is setting that from userspace.
> But more importantly, I fail to understand why commit 5de85b9d57ab
> ("PM / runtime: Re-init runtime PM states at probe error and driver
> unbind"), is changing the behaviour in this regards.
> Potentially we might have a different runtime PM status than we had
> before when probing the second try, but how could that mess up the
> usage count...?
Yes I think you're right here, it's the state, not the count.
> Although, I wondering whether it could be that it's the PM domain
> that's preventing the omap_hsmmc device from becoming runtime
> suspended.
>
> Perhaps the PM domain returns an error code from its
> ->runtime_suspend() callback?
We certainly see a warning there.
> Okay, so we definitely seem to have an issue with the changed runtime
> PM status (suspended) the second probe time.
>
> That's indeed caused by 5de85b9d57ab ("PM / runtime: Re-init runtime
> PM states at probe error and driver unbind").
Yup.
> For example due to commit 5de85b9d57ab ("PM / runtime: Re-init runtime
> PM states at probe error and driver unbind"), the ->runtime_resume()
> callback seems now to be called twice in a row, without in-between
> having the ->runtime_suspend() callback being invoked. Does really the
> PM domain cope with that correctly?
That might explain the warning above.
> > BTW, do you have some hardware to test with that has PM runtime
> > implemnted and actually working with mainline kernel?
>
> Oh, yes. Although I don't have an omap3, I wish I had.
OK good to hear. Anyways, getting an omap3 should be in tens of
whatever units if you need one to test with.
> Also, I have locally a "runtime PM test driver", which helps me to
> test various runtime PM sequences.
Now that would be good to have in the mainline kernel. Of course it
still is a very limited test.
Regards,
Tony
WARNING: multiple messages have this Message-ID (diff)
From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: PM regression with commit 5de85b9d57ab PM runtime re-init in v4.5-rc1
Date: Mon, 1 Feb 2016 10:11:35 -0800 [thread overview]
Message-ID: <20160201181135.GL19432@atomide.com> (raw)
In-Reply-To: <CAPDyKFoQHpqdCa4fzHycP0OT2KsNTxWm7JZSe8Mauh+rxqGtGg@mail.gmail.com>
* Ulf Hansson <ulf.hansson@linaro.org> [160201 08:45]:
> On 28 January 2016 at 17:58, Tony Lindgren <tony@atomide.com> wrote:
> >
> > The MMC hardware will not get idled properly any longer blocking any
> > deeper idle states.
> >
> >> Did the driver not probe successfully the second try? If so, what happened.
> >
> > It probes fine after a -EPROBE_DEFER on the vmmc i2c regulator.
> > But the PM runtime usecounts are wrong.
>
> Okay. How did you verify this?
Well that was just based on what I see in the dmesg:
omap_device: omap_device_enable() called from invalid state 1
> I think the easiest way would be to make sure the usage count is
> *one*, just before the omap_hsmmc calls mmc_add_host() in its
> ->probe() function.
>
> If it's *two*, that confirms this theory.
Here's with use count dumped for one MMC:
omap_hsmmc 4809c000.mmc: GPIO lookup for consumer cd
omap_hsmmc 4809c000.mmc: using device tree for GPIO lookup
omap_hsmmc 4809c000.mmc: Got CD GPIO
omap_hsmmc 4809c000.mmc: GPIO lookup for consumer wp
omap_hsmmc 4809c000.mmc: using device tree for GPIO lookup
omap_hsmmc 4809c000.mmc: using lookup tables for GPIO lookup
omap_hsmmc 4809c000.mmc: lookup for GPIO wp failed
omap_hsmmc 4809c000.mmc: GPIO lookup for consumer cd
omap_hsmmc 4809c000.mmc: using device tree for GPIO lookup
omap_hsmmc 4809c000.mmc: Got CD GPIO
omap_hsmmc 4809c000.mmc: GPIO lookup for consumer wp
omap_hsmmc 4809c000.mmc: using device tree for GPIO lookup
omap_hsmmc 4809c000.mmc: using lookup tables for GPIO lookup
omap_hsmmc 4809c000.mmc: lookup for GPIO wp failed
omap_hsmmc 4809c000.mmc: omap_device: omap_device_enable() called from invalid state 1
omap_hsmmc 4809c000.mmc: PM runtime use count: 0
So it seems you're right, it's the state not the count.
> > So one of the failing cases seems to be:
> >
> > 1. Device driver probe sets pm_runtime_set_autosuspend_delay()
>
> Only when "someone" in-before has set the autosuspend delay to a
> negative value, this will affect the usage count.
>
> I didn't find any in-kernel user that would set this for the
> omap_hsmmc device, so it needs to be done from userspace via sysfs. It
> would be really great if you could help to confirm this.
No nothing is setting that from userspace.
> But more importantly, I fail to understand why commit 5de85b9d57ab
> ("PM / runtime: Re-init runtime PM states at probe error and driver
> unbind"), is changing the behaviour in this regards.
> Potentially we might have a different runtime PM status than we had
> before when probing the second try, but how could that mess up the
> usage count...?
Yes I think you're right here, it's the state, not the count.
> Although, I wondering whether it could be that it's the PM domain
> that's preventing the omap_hsmmc device from becoming runtime
> suspended.
>
> Perhaps the PM domain returns an error code from its
> ->runtime_suspend() callback?
We certainly see a warning there.
> Okay, so we definitely seem to have an issue with the changed runtime
> PM status (suspended) the second probe time.
>
> That's indeed caused by 5de85b9d57ab ("PM / runtime: Re-init runtime
> PM states at probe error and driver unbind").
Yup.
> For example due to commit 5de85b9d57ab ("PM / runtime: Re-init runtime
> PM states at probe error and driver unbind"), the ->runtime_resume()
> callback seems now to be called twice in a row, without in-between
> having the ->runtime_suspend() callback being invoked. Does really the
> PM domain cope with that correctly?
That might explain the warning above.
> > BTW, do you have some hardware to test with that has PM runtime
> > implemnted and actually working with mainline kernel?
>
> Oh, yes. Although I don't have an omap3, I wish I had.
OK good to hear. Anyways, getting an omap3 should be in tens of
whatever units if you need one to test with.
> Also, I have locally a "runtime PM test driver", which helps me to
> test various runtime PM sequences.
Now that would be good to have in the mainline kernel. Of course it
still is a very limited test.
Regards,
Tony
next prev parent reply other threads:[~2016-02-01 18:11 UTC|newest]
Thread overview: 148+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-26 22:48 PM regression with commit 5de85b9d57ab PM runtime re-init in v4.5-rc1 Tony Lindgren
2016-01-26 22:48 ` Tony Lindgren
2016-01-26 22:50 ` Tony Lindgren
2016-01-26 22:50 ` Tony Lindgren
2016-01-26 23:14 ` Rafael J. Wysocki
2016-01-26 23:14 ` Rafael J. Wysocki
2016-01-26 23:22 ` Tony Lindgren
2016-01-26 23:22 ` Tony Lindgren
2016-01-26 23:37 ` Rafael J. Wysocki
2016-01-26 23:37 ` Rafael J. Wysocki
2016-01-26 23:52 ` Tony Lindgren
2016-01-26 23:52 ` Tony Lindgren
2016-01-27 7:54 ` Rafael J. Wysocki
2016-01-27 7:54 ` Rafael J. Wysocki
2016-01-27 8:17 ` Ulf Hansson
2016-01-27 8:17 ` Ulf Hansson
2016-01-27 15:19 ` Tony Lindgren
2016-01-27 15:19 ` Tony Lindgren
2016-01-27 22:51 ` Rafael J. Wysocki
2016-01-27 22:51 ` Rafael J. Wysocki
2016-01-28 14:29 ` Ulf Hansson
2016-01-28 14:29 ` Ulf Hansson
2016-01-28 16:58 ` Tony Lindgren
2016-01-28 16:58 ` Tony Lindgren
2016-02-01 16:44 ` Ulf Hansson
2016-02-01 16:44 ` Ulf Hansson
2016-02-01 18:11 ` Tony Lindgren [this message]
2016-02-01 18:11 ` Tony Lindgren
2016-02-01 22:06 ` Tony Lindgren
2016-02-01 22:06 ` Tony Lindgren
2016-02-01 22:17 ` Rafael J. Wysocki
2016-02-01 22:17 ` Rafael J. Wysocki
2016-02-01 22:29 ` Tony Lindgren
2016-02-01 22:29 ` Tony Lindgren
2016-02-01 23:10 ` Rafael J. Wysocki
2016-02-01 23:10 ` Rafael J. Wysocki
2016-02-01 23:28 ` Tony Lindgren
2016-02-01 23:28 ` Tony Lindgren
2016-02-01 23:44 ` Tony Lindgren
2016-02-01 23:44 ` Tony Lindgren
2016-02-01 23:49 ` Alan Stern
2016-02-01 23:49 ` Alan Stern
2016-02-02 3:05 ` Tony Lindgren
2016-02-02 3:05 ` Tony Lindgren
2016-02-02 10:07 ` Ulf Hansson
2016-02-02 10:07 ` Ulf Hansson
2016-02-02 10:42 ` Ulf Hansson
2016-02-02 10:42 ` Ulf Hansson
2016-02-02 16:23 ` Alan Stern
2016-02-02 16:23 ` Alan Stern
2016-02-02 16:35 ` Tony Lindgren
2016-02-02 16:35 ` Tony Lindgren
2016-02-02 20:47 ` Ulf Hansson
2016-02-02 20:47 ` Ulf Hansson
2016-02-02 23:41 ` Tony Lindgren
2016-02-02 23:41 ` Tony Lindgren
2016-02-03 10:23 ` Ulf Hansson
2016-02-03 10:23 ` Ulf Hansson
2016-02-03 10:25 ` Ulf Hansson
2016-02-03 10:25 ` Ulf Hansson
2016-02-03 12:18 ` Rafael J. Wysocki
2016-02-03 12:18 ` Rafael J. Wysocki
2016-02-03 14:58 ` Ulf Hansson
2016-02-03 14:58 ` Ulf Hansson
2016-02-03 15:45 ` Alan Stern
2016-02-03 15:45 ` Alan Stern
2016-02-03 16:09 ` Tony Lindgren
2016-02-03 16:09 ` Tony Lindgren
2016-02-03 16:24 ` Ulf Hansson
2016-02-03 16:24 ` Ulf Hansson
2016-02-03 17:01 ` Tony Lindgren
2016-02-03 17:01 ` Tony Lindgren
2016-02-03 17:16 ` Rafael J. Wysocki
2016-02-03 17:16 ` Rafael J. Wysocki
2016-02-03 16:27 ` Tony Lindgren
2016-02-03 16:27 ` Tony Lindgren
2016-02-03 18:02 ` Ulf Hansson
2016-02-03 18:02 ` Ulf Hansson
2016-02-03 18:28 ` Tony Lindgren
2016-02-03 18:28 ` Tony Lindgren
2016-02-03 18:37 ` Ulf Hansson
2016-02-03 18:37 ` Ulf Hansson
2016-02-03 18:45 ` Tony Lindgren
2016-02-03 18:45 ` Tony Lindgren
2016-02-03 21:51 ` Tony Lindgren
2016-02-03 21:51 ` Tony Lindgren
2016-02-02 16:15 ` Alan Stern
2016-02-02 16:15 ` Alan Stern
2016-02-02 16:49 ` Tony Lindgren
2016-02-02 16:49 ` Tony Lindgren
2016-02-02 18:05 ` Tony Lindgren
2016-02-02 18:05 ` Tony Lindgren
2016-02-02 18:43 ` Alan Stern
2016-02-02 18:43 ` Alan Stern
2016-02-02 18:54 ` Tony Lindgren
2016-02-02 18:54 ` Tony Lindgren
2016-02-02 19:16 ` Alan Stern
2016-02-02 19:16 ` Alan Stern
2016-02-02 21:03 ` Tony Lindgren
2016-02-02 21:03 ` Tony Lindgren
2016-02-02 21:45 ` Alan Stern
2016-02-02 21:45 ` Alan Stern
2016-02-02 23:46 ` Tony Lindgren
2016-02-02 23:46 ` Tony Lindgren
2016-02-03 13:06 ` Rafael J. Wysocki
2016-02-03 13:06 ` Rafael J. Wysocki
2016-02-03 16:36 ` Tony Lindgren
2016-02-03 16:36 ` Tony Lindgren
2016-02-03 15:48 ` Alan Stern
2016-02-03 15:48 ` Alan Stern
2016-02-03 16:37 ` Tony Lindgren
2016-02-03 16:37 ` Tony Lindgren
2016-02-03 17:18 ` Rafael J. Wysocki
2016-02-03 17:18 ` Rafael J. Wysocki
2016-02-03 17:22 ` Tony Lindgren
2016-02-03 17:22 ` Tony Lindgren
2016-02-03 17:27 ` Rafael J. Wysocki
2016-02-03 17:27 ` Rafael J. Wysocki
2016-02-04 10:20 ` Ulf Hansson
2016-02-04 10:20 ` Ulf Hansson
2016-02-04 16:04 ` Alan Stern
2016-02-04 16:04 ` Alan Stern
2016-02-04 17:20 ` Tony Lindgren
2016-02-04 17:20 ` Tony Lindgren
2016-02-04 21:11 ` Ulf Hansson
2016-02-04 21:11 ` Ulf Hansson
2016-02-04 22:09 ` Alan Stern
2016-02-04 22:09 ` Alan Stern
2016-02-04 22:34 ` Ulf Hansson
2016-02-04 22:34 ` Ulf Hansson
2016-02-05 1:08 ` Tony Lindgren
2016-02-05 1:08 ` Tony Lindgren
2016-02-05 6:54 ` Ulf Hansson
2016-02-05 6:54 ` Ulf Hansson
2016-02-05 19:10 ` Tony Lindgren
2016-02-05 19:10 ` Tony Lindgren
2016-02-02 18:47 ` Tony Lindgren
2016-02-02 18:47 ` Tony Lindgren
2016-02-02 20:24 ` Ulf Hansson
2016-02-02 20:24 ` Ulf Hansson
2016-02-02 21:24 ` Alan Stern
2016-02-02 21:24 ` Alan Stern
2016-02-02 21:39 ` Tony Lindgren
2016-02-02 21:39 ` Tony Lindgren
2016-02-03 13:03 ` Rafael J. Wysocki
2016-02-03 13:03 ` Rafael J. Wysocki
2016-02-03 16:49 ` Tony Lindgren
2016-02-03 16:49 ` Tony Lindgren
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=20160201181135.GL19432@atomide.com \
--to=tony@atomide.com \
--cc=khilman@baylibre.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=rafael.j.wysocki@intel.com \
--cc=rafael@kernel.org \
--cc=ulf.hansson@linaro.org \
/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 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.