Re: Runtime PM for PCI-based USB host controllers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2 Jun 2010, Rafael J. Wysocki wrote:

> > > Do PCI bus type callbacks need to be reworked to work correctly with unbound
> > > devices?
> > 
> > They do; I neglected to take care of them when first writing this 
> > patch.  After everything is working I'll submit it for real.  For now, 
> > the point was to find out whether this is going in the right direction.
> 
> I don't have a fundamental problem with it.  As long as all things can be made
> work along these lines, it's fine by me.

Arggh!  I just tried out a revised patch.  It seems to work
perfectly, except for one thing.  When I unbound ehci-hcd from one of
the USB controllers, which should have caused the controller to be 
runtime-suspended, this is what showed up in the log:

[  295.651545] pci 0000:00:1d.7: PME# enabled
[  295.664044] pci 0000:00:1d.7: Refused to change power state, currently in D0

Which seems to mean that the controller didn't want to go into D3hot!  
Presumably this is because it was unconfigured when the driver was 
unbound.  That's the only explanation I can think of; the controller 
had no objection about going into D3hot when it was bound to the 
driver.

Assuming other PCI devices will have similar behavior, I have to agree
that there's no point trying to put driverless devices into low-power
states.


One more thing: When looking at the r8169 and e1000e drivers, I noticed
that you used the same test (pci_dev_run_wake -- not the greatest name
in the world, BTW) in both the probe and remove routines.  That's not
the right thing to do if the runtime-wakeup setting could get changed
inbetween.  (I realize that currently there is no way to change the
setting, but in the future there might be.)

Do you want to make an explicit assumption that the runtime wakeup
settings are fixed, not subject to change?  If so, then why not compute
the setting just once, when the device is registered, and store it in
the pci_device structure?  Or even in the struct device?

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux