pci_set_power_state() is a per-PCI-function interface, just like
most of the other PCI interfaces.  On ACPI systems, it ultimately
calls acpi_bus_set_power(), which evaluates the _PSx method of the
ACPI function object.

This: http://www.microsoft.com/whdc/system/pnppwr/hotadd/hotplugpci.mspx
suggests that a system that supports ACPI hotplug and power control
should supply an ACPI device for each PCI function that might exist
in the slot.  The _PSx methods exist under one or more of these devices
(the document above suggests that it's under each device; the HP systems
I've seen have _PSx only under the device for function 0).

In any case, the _PSx methods control power to the whole *slot*, not
just a single function.  The result is that calling pci_set_power_state()
on one PCI function turns off power to the entire slot, even though there
may be other independent functions that shouldn't be turned off.

Do we need to be smarter in acpi_pci_set_power_state(), and collect
up all the PCI per-function power requests, and only pass those
down to acpi_bus_set_power() when all the functions agree?

Other than the Microsoft document above, I haven't seen a good spec
that clarifies this issue.

Bjorn
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to