[PATCH 1/2] PCI: rockchip: Work around missing device_type property in DT

Marc Zyngier maz at kernel.org
Sun Aug 16 06:39:53 EDT 2020

On Sun, 16 Aug 2020 00:22:28 +0100,
Bjorn Helgaas <helgaas at kernel.org> wrote:
> On Sat, Aug 15, 2020 at 01:51:11PM +0100, Marc Zyngier wrote:
> > Recent changes to the DT PCI bus parsing made it mandatory for
> > device tree nodes describing a PCI controller to have the
> > 'device_type = "pci"' property for the node to be matched.
> > 
> > Although this follows the letter of the specification, it
> > breaks existing device-trees that have been working fine
> > for years.  Rockchip rk3399-based systems are a prime example
> > of such collateral damage, and have stopped discovering their
> > PCI bus.
> > 
> > In order to paper over the blunder, let's add a workaround
> > to the pcie-rockchip driver, adding the missing property when
> > none is found at boot time. A warning will hopefully nudge the
> > user into updating their DT to a fixed version if they can, but
> > the insentive is obviously pretty small.
> s/insentive/incentive/ (Lorenzo or I can fix this up)
> > Fixes: 2f96593ecc37 ("of_address: Add bus type match for pci ranges parser")
> > Suggested-by: Roh Herring <robh+dt at kernel.org>
> s/Roh/Rob/ (similarly)

Clearly not my day when it comes to proofreading commit messages.
Thanks for pointing this out, and in advance for fixing it up.

> > Signed-off-by: Marc Zyngier <maz at kernel.org>
> This looks like a candidate for v5.9, since 2f96593ecc37 was merged
> during the v5.9 merge window, right?


> I wonder how many other DTs are similarly broken?  Maybe Rob's DT
> checker has already looked?

I've just managed to run the checker, which comes up with all kinds of
goodies. Apart from the above, it also spots the following:

- arch/arm64/boot/dts/mediatek/mt7622.dtsi: Has a device_type property
  in its main PCIe node, but not in the child nodes. It isn't obvious
  to me whether that's a violation or not (the spec doesn't say
  whether the property should be set on a per-port basis). Rob?

- arch/arm64/boot/dts/qcom/msm8996.dtsi: Only one out of the three
  PCIe nodes has the device_type property, probably broken similarly
  to rk3399.

I could move the workaround to drivers/pci/of.c, and have it called
from the individual drivers. I don't have the HW to test those though.



Without deviation from the norm, progress is not possible.

More information about the Linux-rockchip mailing list