Restore kernel control of PCIe DPC via option
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Eoan |
Fix Released
|
Undecided
|
Unassigned | ||
Focal |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
SRU Justification:
Impact:
Since upstream commit eed85ff4c0da7 (4.16), control of PCIe DPC
(Downstream Port Containment) is coupled with control of AER (Advanced
Error Reporting), eliminating the option for the kernel to separately
manage DPC (which was previously the default behavior).
Fix:
The upstream commit log explains the change:
commit 35a0b2378c199d4
Author: Olof Johansson <email address hidden>
Date: Wed Oct 23 12:22:05 2019 -0700
PCI/DPC: Add "pcie_ports=
Prior to eed85ff4c0da7 ("PCI/DPC: Enable DPC only if AER is available"),
Linux handled DPC events regardless of whether firmware had granted it
ownership of AER or DPC, e.g., via _OSC.
PCIe r5.0, sec 6.2.10, recommends that the OS link control of DPC to
control of AER, so after eed85ff4c0da7, Linux handles DPC events only if it
has control of AER.
On platforms that do not grant OS control of AER via _OSC, Linux DPC
handling worked before eed85ff4c0da7 but not after.
To make Linux DPC handling work on those platforms the same way they did
before, add a "pcie_ports=
handle DPC events regardless of whether it has control of AER.
[bhelgaas: commit log, move pcie_ports_
Link: https://<email address hidden>
Signed-off-by: Olof Johansson <email address hidden>
Signed-off-by: Bjorn Helgaas <email address hidden>
Testcase:
Control of DPC can be determined from kernel boot messages when
pciehp probes a capable slot; when the kernel controls DPC, messages
of the format:
pcieport 0000:2d:00.0: pciehp: Slot #0
pcieport 0000:2d:00.0: DPC: error containment capabilities:
will appear; if the kernel does not control DPC, the DPC line will
not be present (only the "pciehp: Slot" message).
Additionally, devices bound to the kernel DPC PCIe port service
driver will be found in the /sys/bus/
directory; this will be empty of devices if the kernel does not control
DPC.
Regression Potential:
The risk of regression is low as (a) by default, the patch has no
effect (the default setting is to not enable the option), and (b) when
enabled, the patch restores functionality that previously worked, and was,
in fact, the default behavior.
CVE References
Changed in linux (Ubuntu Eoan): | |
status: | New → In Progress |
Changed in linux (Ubuntu Focal): | |
status: | Incomplete → In Progress |
Changed in linux (Ubuntu Eoan): | |
status: | In Progress → Fix Committed |
Changed in linux (Ubuntu Focal): | |
status: | In Progress → Fix Committed |
This bug is missing log files that will aid in diagnosing the problem. While running an Ubuntu kernel (not a mainline or third-party kernel) please enter the following command in a terminal window:
apport-collect 1869423
and then change the status of the bug to 'Confirmed'.
If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.
This change has been made by an automated script, maintained by the Ubuntu Kernel Team.