diff options
| -rw-r--r-- | Documentation/kernel-parameters.txt | 4 | ||||
| -rw-r--r-- | drivers/pci/pcie/pme/pcie_pme.c | 19 |
2 files changed, 16 insertions, 7 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 1808f1157f30..82d6aeb5228f 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
| @@ -2048,7 +2048,9 @@ and is between 256 and 4096 characters. It is defined in the file | |||
| 2048 | WARNING: Forcing ASPM on may cause system lockups. | 2048 | WARNING: Forcing ASPM on may cause system lockups. |
| 2049 | 2049 | ||
| 2050 | pcie_pme= [PCIE,PM] Native PCIe PME signaling options: | 2050 | pcie_pme= [PCIE,PM] Native PCIe PME signaling options: |
| 2051 | off Do not use native PCIe PME signaling. | 2051 | Format: {auto|force}[,nomsi] |
| 2052 | auto Use native PCIe PME signaling if the BIOS allows the | ||
| 2053 | kernel to control PCIe config registers of root ports. | ||
| 2052 | force Use native PCIe PME signaling even if the BIOS refuses | 2054 | force Use native PCIe PME signaling even if the BIOS refuses |
| 2053 | to allow the kernel to control the relevant PCIe config | 2055 | to allow the kernel to control the relevant PCIe config |
| 2054 | registers. | 2056 | registers. |
diff --git a/drivers/pci/pcie/pme/pcie_pme.c b/drivers/pci/pcie/pme/pcie_pme.c index aac285a16b62..d672a0a63816 100644 --- a/drivers/pci/pcie/pme/pcie_pme.c +++ b/drivers/pci/pcie/pme/pcie_pme.c | |||
| @@ -34,7 +34,7 @@ | |||
| 34 | * being registered. Consequently, the interrupt-based PCIe PME signaling will | 34 | * being registered. Consequently, the interrupt-based PCIe PME signaling will |
| 35 | * not be used by any PCIe root ports in that case. | 35 | * not be used by any PCIe root ports in that case. |
| 36 | */ | 36 | */ |
| 37 | static bool pcie_pme_disabled; | 37 | static bool pcie_pme_disabled = true; |
| 38 | 38 | ||
| 39 | /* | 39 | /* |
| 40 | * The PCI Express Base Specification 2.0, Section 6.1.8, states the following: | 40 | * The PCI Express Base Specification 2.0, Section 6.1.8, states the following: |
| @@ -64,12 +64,19 @@ bool pcie_pme_msi_disabled; | |||
| 64 | 64 | ||
| 65 | static int __init pcie_pme_setup(char *str) | 65 | static int __init pcie_pme_setup(char *str) |
| 66 | { | 66 | { |
| 67 | if (!strcmp(str, "off")) | 67 | if (!strncmp(str, "auto", 4)) |
| 68 | pcie_pme_disabled = true; | 68 | pcie_pme_disabled = false; |
| 69 | else if (!strcmp(str, "force")) | 69 | else if (!strncmp(str, "force", 5)) |
| 70 | pcie_pme_force_enable = true; | 70 | pcie_pme_force_enable = true; |
| 71 | else if (!strcmp(str, "nomsi")) | 71 | |
| 72 | pcie_pme_msi_disabled = true; | 72 | str = strchr(str, ','); |
| 73 | if (str) { | ||
| 74 | str++; | ||
| 75 | str += strspn(str, " \t"); | ||
| 76 | if (*str && !strcmp(str, "nomsi")) | ||
| 77 | pcie_pme_msi_disabled = true; | ||
| 78 | } | ||
| 79 | |||
| 73 | return 1; | 80 | return 1; |
| 74 | } | 81 | } |
| 75 | __setup("pcie_pme=", pcie_pme_setup); | 82 | __setup("pcie_pme=", pcie_pme_setup); |
