All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Huang Ying <ying.huang@intel.com>,
	linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org
Subject: Re: [BUGFIX] PM: Fix active child counting when disabled and forbidden
Date: Wed, 07 Nov 2012 17:09:16 +0100	[thread overview]
Message-ID: <2385996.Tx2Do9TUNJ@vostro.rjw.lan> (raw)
In-Reply-To: <Pine.LNX.4.44L0.1211071032070.1859-100000@iolanthe.rowland.org>

On Wednesday, November 07, 2012 10:49:04 AM Alan Stern wrote:
> On Wed, 7 Nov 2012, Huang Ying wrote:
> 
> > > > Devices will be disabled if the PCI driver is unbound from the PCI
> > > > device.
> > > 
> > > Yes.  But without a PCI driver, nothing will call 
> > > pm_runtime_set_suspended.
> > 
> > pm_runtime_set_suspended will be called in pci_device_remove or error
> > path of local_pci_probe.
> 
> Yes, okay.  But that's what we want.  Unused, driverless PCI devices
> shouldn't force their parents to remain at full power.
> 
> > >   And even if something does call 
> > > pm_runtime_set_suspended, it's still not a problem -- the device can't 
> > > be used without a driver.
> > 
> > The VGA device can be used without a driver.
> 
> Ah, right, that's your _real_ problem.  You should have mentioned this 
> in the original Changelog for the patch.
> 
> Rafael, this does need to be fixed.

Yup.

> The PCI subsystem assumes that 
> driverless devices are not in use, so they are disabled for runtime PM 
> and marked as suspended.  This is not appropriate for VGA devices, 
> which can indeed be used without a driver.
> 
> I'm not sure what the best solution is.  Maybe we should Ying's 
> proposal a step farther:
> 
> 	Make pm_runtime_set_suspended() fail if runtime PM is 
> 	forbidden.
>
> 	Make pm_runtime_forbid() call pm_runtime_set_active()
> 	(and do a runtime resume of the parent) if disable_depth > 0.

I'd prefer this one.  The callers of pm_runtime_forbid() may actually
reasonably expect something like this to happen.

> 	Make the PCI runtime-idle routine call 
> 	pm_runtime_set_suspended() if disable_depth > 0.  Or maybe
> 	do this for all devices, in the runtime PM core.

That would mean calling it on every call to pm_runtime_put() and friends
which seems to be a bit wasteful.

Thanks,
Rafael


-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

  reply	other threads:[~2012-11-07 16:05 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-05  1:17 [BUGFIX] PM: Fix active child counting when disabled and forbidden Huang Ying
2012-11-05  1:56 ` Alan Stern
2012-11-05  1:56   ` Alan Stern
2012-11-06  0:43   ` Huang Ying
2012-11-06 15:17     ` Alan Stern
2012-11-06 15:17       ` Alan Stern
2012-11-07  0:26       ` Huang Ying
2012-11-07 15:49         ` Alan Stern
2012-11-07 15:49           ` Alan Stern
2012-11-07 16:09           ` Rafael J. Wysocki [this message]
2012-11-07 17:17             ` Alan Stern
2012-11-07 17:17               ` Alan Stern
2012-11-07 20:21               ` Rafael J. Wysocki
2012-11-07 20:47                 ` Alan Stern
2012-11-07 20:47                   ` Alan Stern
2012-11-07 21:44                   ` Rafael J. Wysocki
2012-11-07 21:56                     ` Alan Stern
2012-11-07 21:56                       ` Alan Stern
2012-11-07 22:51                       ` Rafael J. Wysocki
2012-11-07 23:09                         ` Rafael J. Wysocki
2012-11-08  1:15                           ` Huang Ying
2012-11-08  1:35                             ` Rafael J. Wysocki
2012-11-08  2:04                               ` Huang Ying
2012-11-08  9:56                                 ` Rafael J. Wysocki
2012-11-08 17:07                                   ` Alan Stern
2012-11-08 17:07                                     ` Alan Stern
2012-11-09  2:36                                     ` Huang Ying
2012-11-09 16:41                                       ` Alan Stern
2012-11-09 16:41                                         ` Alan Stern
2012-11-12  0:37                                         ` Huang Ying
2012-11-12  2:36                                           ` Alan Stern
2012-11-12  2:36                                             ` Alan Stern
2012-11-12  5:55                                             ` Huang Ying
2012-11-12 16:32                                               ` Alan Stern
2012-11-12 16:32                                                 ` Alan Stern
2012-11-13  1:19                                                 ` Huang Ying
2012-11-13  2:32                                                   ` Alan Stern
2012-11-13  2:32                                                     ` Alan Stern
2012-11-13  5:12                                                     ` Huang Ying
2012-11-13 16:10                                                       ` Alan Stern
2012-11-13 16:10                                                         ` Alan Stern
2012-11-14  1:08                                                         ` Huang Ying
2012-11-14  9:52                                                           ` Rafael J. Wysocki
2012-11-14 13:35                                                             ` Huang Ying
2012-11-14 16:06                                                               ` Alan Stern
2012-11-14 16:06                                                                 ` Alan Stern
2012-11-13 23:43                                                 ` Rafael J. Wysocki
2012-11-14 10:05                                     ` Rafael J. Wysocki
2012-11-14 16:42                                       ` Alan Stern
2012-11-14 16:42                                         ` Alan Stern
2012-11-14 19:42                                         ` Rafael J. Wysocki
2012-11-14 21:45                                           ` Alan Stern
2012-11-14 21:45                                             ` Alan Stern
2012-11-14 23:10                                             ` Rafael J. Wysocki
2012-11-15  1:03                                               ` Huang Ying
2012-11-15  9:51                                                 ` Rafael J. Wysocki
2012-11-15 10:09                                                   ` Rafael J. Wysocki
2012-11-15 15:27                                                     ` Alan Stern
2012-11-15 15:27                                                       ` Alan Stern
2012-11-16  0:36                                                   ` Huang Ying
2012-11-16  0:44                                                     ` Rafael J. Wysocki
2012-11-16  0:48                                                       ` Huang Ying
2012-11-16  0:55                                                       ` Rafael J. Wysocki
2012-11-16  0:54                                                         ` Huang Ying
2012-11-16  1:29                                                           ` Rafael J. Wysocki
2012-11-16  1:27                                                             ` Huang Ying
2012-11-16 10:10                                                               ` Rafael J. Wysocki
2012-11-16  3:11                                                   ` Huang Ying

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=2385996.Tx2Do9TUNJ@vostro.rjw.lan \
    --to=rjw@sisk.pl \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=stern@rowland.harvard.edu \
    --cc=ying.huang@intel.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 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.