mbox series

[RFC,0/3] provide workaround for Rockchip PCIe bus scan crash with optional delay

Message ID 20201231125214.25733-1-nuumiofi@gmail.com (mailing list archive)
Headers show
Series provide workaround for Rockchip PCIe bus scan crash with optional delay | expand

Message

Jari Hämäläinen Dec. 31, 2020, 12:52 p.m. UTC
Hello all,

This RFC patch provides a workaround for Rockchip PCIe controller crashes
with some devices when PCIe bus is scanned. Both command line parameter and
device tree property are included as ways to set the delay. I'm sending
this as RFC because I don't know which approach, command line and/or device
tree, would be the best considering this is a workaround, not a proper fix.

I feel that at least command line parameter should be provided as it's easy
to edit by end user. Device tree property could be seen as a way for disto
maintainer to provide sane or safe default with kernel but it also extends
the change to touch more files which makes it harder to clean up if a
proper fix to this is found.

Also, I've set delay to 1100 ms for RockPro64 in patch 3 as an example of
safe default. If new device tree property support is accepted maybe the
actual device tree should be left unmodified or delay set to 0 ms so that
users not needing the delay are not affected in any way.

Patch 1 adds the workaround code. Kernel parameter documentation is also
included. Devices used in testing and a log excerpt are included in
changelog.

In addition to devices needing the delay, tested and listed in patch 1
following devices that do not need the delay were tested with no delay and
1000 ms delay and no regression was observed:
- Marvell 88SE9215 and 88SE9230 based SATA controllers
- Samsung 970 EVO Plus NVMe drive

Patches 2 and 3 add dt-bindings and the new property to RockPro64 device as
an example.

All comments about the workaround itself if it's applicable and about both
command line + device tree or only command line approaches are welcome.

Best regards,
Jari Hämäläinen

Jari Hämäläinen (3):
  PCI: rockchip: provide workaround for bus scan crash with optional
    delay
  dt-bindings: PCI: rockchip: document bus-scan-delay-ms workaround
    property
  arm64: dts: rockchip: use bus-scan-delay-ms workaround with RockPro64
    PCIe

 .../admin-guide/kernel-parameters.txt          |  8 ++++++++
 .../bindings/pci/rockchip-pcie-host.txt        |  3 +++
 .../boot/dts/rockchip/rk3399-rockpro64.dtsi    |  1 +
 drivers/pci/controller/pcie-rockchip-host.c    | 18 ++++++++++++++++++
 drivers/pci/controller/pcie-rockchip.c         |  5 +++++
 drivers/pci/controller/pcie-rockchip.h         |  2 ++
 6 files changed, 37 insertions(+)


base-commit: 5c8fe583cce542aa0b84adc939ce85293de36e5e