diff options
author | Aaron Lu <aaron.lu@intel.com> | 2015-03-25 14:37:06 +0800 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2015-04-08 16:25:25 -0500 |
commit | e33caa82e221b0bbeba373b507e3f134dc2efa1a (patch) | |
tree | 5a5b5cb497a21c0342ac0a7d2956b366020fef68 /include | |
parent | 3390e0850b711d163b35508464cfbe0a4477dfe2 (diff) | |
download | lwn-e33caa82e221b0bbeba373b507e3f134dc2efa1a.tar.gz lwn-e33caa82e221b0bbeba373b507e3f134dc2efa1a.zip |
PCI/ACPI: Optimize device state transition delays
The PCI "ACPI additions for FW latency optimizations" ECN (link below)
defines two functions in the PCI _DSM:
Function 8, "Reset Delay," applies to the entire hierarchy below a PCI
host bridge. If it returns one, the OS may assume that all devices in
the hierarchy have already completed power-on reset delays.
Function 9, "Device Readiness Durations," applies only to the object
where it is located. It returns delay durations required after various
events if the device requires less time than the spec requires. Delays
from this function take precedence over the Reset Delay function.
Add support for Reset Delay and part of Device Readiness Durations.
[bhelgaas: changelog, comments]
Link: https://www.pcisig.com/specifications/conventional/pci_firmware/ECN_fw_latency_optimization_final.pdf
Signed-off-by: Aaron Lu <aaron.lu@intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/pci-acpi.h | 2 | ||||
-rw-r--r-- | include/linux/pci.h | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/pci-acpi.h b/include/linux/pci-acpi.h index 3801c704a945..a965efa52152 100644 --- a/include/linux/pci-acpi.h +++ b/include/linux/pci-acpi.h @@ -79,6 +79,8 @@ static inline void acpiphp_check_host_bridge(struct acpi_device *adev) { } extern const u8 pci_acpi_dsm_uuid[]; #define DEVICE_LABEL_DSM 0x07 +#define RESET_DELAY_DSM 0x08 +#define FUNCTION_DELAY_DSM 0x09 #else /* CONFIG_ACPI */ static inline void acpi_pci_add_bus(struct pci_bus *bus) { } diff --git a/include/linux/pci.h b/include/linux/pci.h index 211e9da8a7d7..c5aa7b8a40c1 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -406,6 +406,7 @@ struct pci_host_bridge { struct list_head windows; /* resource_entry */ void (*release_fn)(struct pci_host_bridge *); void *release_data; + unsigned int ignore_reset_delay:1; /* for entire hierarchy */ }; #define to_pci_host_bridge(n) container_of(n, struct pci_host_bridge, dev) |