Re: Put unused PCI devices in D3

From: Matthew Garrett
Date: Mon Sep 29 2008 - 20:09:36 EST


On Mon, Sep 29, 2008 at 01:11:03PM -0700, Jeffrey W. Baker wrote:

> Currently it looks to me from browsing the code that D3 is only used in
> Linux when the whole machine is headed for S3, and the drivers are asked
> to suspend. I think the drivers should be able to enter D3 in other
> circumstances:
>
> * During pci_unregister_driver ... i.e. on module unload

The fact that Linux isn't using a device doesn't inherently mean that
the system isn't using it. For example, the smbus controller will
probably still be used by ACPI even if there's no Linux driver loaded.

> * When a network interface is downed

Yes. Drivers are moving towards this model.

> * If the device is a bridge or hub with no downstream device

Potential problems with hotplugging? But sure, this kind of thing is
being implemented in USB and SCSI.

> * Whenever userspace requests D3 via sysfs

This functionality was explicitly removed a few years back.

> So, what fundamental problem prevents me from, for example, calling
> pci_set_power_state() from ohci1394's __exit?

Nothing I'm aware of. It sounds pretty safe in that case. But that would
require you to load and unload the driver - better to have the driver
loaded the entire time and make sure it does as much runtime power
management as possible. I don't know enough about the firewire OHCI
hardware, but can you power down most of the chip and still get hotplug
events?
--
Matthew Garrett | mjg59@xxxxxxxxxxxxx
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/