-
Notifications
You must be signed in to change notification settings - Fork 134
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Stewart Smith <[email protected]>
- Loading branch information
1 parent
a6d5bc1
commit 1853c66
Showing
1 changed file
with
76 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
.. _skiboot-5.4.4: | ||
|
||
============= | ||
skiboot-5.4.4 | ||
============= | ||
|
||
skiboot-5.4.4 was released on Wednesday May 3rd, 2017. It replaces | ||
:ref:`skiboot-5.4.3` as the current stable release in the 5.4.x series. | ||
|
||
Over :ref:`skiboot-5.4.3`, we have a small number of bug fixes: | ||
|
||
- hw/fsp: Do not queue SP and SPCN class messages during reset/reload | ||
In certain cases of communicating with the FSP (e.g. sensors), the OPAL FSP | ||
driver returns a default code (async | ||
completion) even though there is no known bound from the time of this error | ||
return to the actual data being available. The kernel driver keeps waiting | ||
leading to soft-lockup on the host side. | ||
|
||
Mitigate both these (known) cases by returning OPAL_BUSY so the host driver | ||
knows to retry later. | ||
- core/pci: Fix PCIe slot's presence | ||
According to PCIe spec, the presence bit is hardcoded to 1 if PCIe | ||
switch downstream port doesn't support slot capability. The register | ||
used for the check in pcie_slot_get_presence_state() is wrong. It | ||
should be PCIe capability register instead of PCIe slot capability | ||
register. Otherwise, we always have present bit on the PCI topology. | ||
|
||
The issue is found on Supermicro's p8dtu2u machine: :: | ||
|
||
# lspci -t | ||
-+-[0022:00]---00.0-[01-08]----00.0-[02-08]--+-01.0-[03]----00.0 | ||
| \-02.0-[04-08]-- | ||
# cat /sys/bus/pci/slots/S002204/adapter | ||
1 | ||
# lspci -vvs 0022:02:02.0 | ||
# lspci -vvs 0022:02:02.0 | ||
0022:02:02.0 PCI bridge: PLX Technology, Inc. PEX 8718 16-Lane, \ | ||
5-Port PCI Express Gen 3 (8.0 GT/s) Switch (rev ab) (prog-if 00 [Normal decode]) | ||
: | ||
Capabilities: [68] Express (v2) Downstream Port (Slot+), MSI 00 | ||
: | ||
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock- | ||
Changed: MRL- PresDet- LinkState- | ||
|
||
This fixes the issue by checking the correct register (PCIe capability). | ||
Also, the register's value is cached in advance as we did for slot and | ||
link capability. | ||
- core/pci: More reliable way to update PCI slot power state | ||
|
||
The power control bit (SLOT_CTL, offset: PCIe cap + 0x18) isn't | ||
reliable enough to reflect the PCI slot's power state. Instead, | ||
the power indication bits are more reliable comparatively. This | ||
leads to mismatch between the cached power state and PCI slot's | ||
presence state, resulting in the hotplug driver in kernel refuses | ||
to unplug the devices properly on the request. The issue was | ||
found on below NVMe card on "supermicro,p8dtu2u" machine. We don't | ||
have this issue on the integrated PLX 8718 switch. :: | ||
|
||
# lspci | ||
0022:01:00.0 PCI bridge: PLX Technology, Inc. PEX 9733 33-lane, \ | ||
9-port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa) | ||
0022:02:01.0 PCI bridge: PLX Technology, Inc. PEX 9733 33-lane, \ | ||
9-port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa) | ||
0022:02:04.0 PCI bridge: PLX Technology, Inc. PEX 9733 33-lane, \ | ||
9-port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa) | ||
0022:02:05.0 PCI bridge: PLX Technology, Inc. PEX 9733 33-lane, \ | ||
9-port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa) | ||
0022:02:06.0 PCI bridge: PLX Technology, Inc. PEX 9733 33-lane, \ | ||
9-port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa) | ||
0022:02:07.0 PCI bridge: PLX Technology, Inc. PEX 9733 33-lane, \ | ||
9-port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa) | ||
0022:17:00.0 Non-Volatile memory controller: Device 19e5:0123 (rev 45) | ||
|
||
This updates the cached PCI slot's power state using the power | ||
indication bits instead of power control bit, to fix above issue. | ||
- core/pci: Avoid hreset after freset |