On 17/09/15 16:30, Bjorn Helgaas wrote: > On Fri, Sep 04, 2015 at 05:50:07PM +0100, Marc Zyngier wrote: >> The pci-host-generic driver parses the linux,pci-probe-only property, >> and assumes that it will have a boolean parameter. >> >> Turns out that the Seattle DTS file has a naked "linux,pci-probe-only" >> property, which leads to the driver dereferencing some unsuspecting >> memory location. Nothing really bad happens (we end up reading some >> other bit of DT, fortunately), but that not a reason to keep it this >> way. Turns out that the Pseries code (where this code was lifted from) >> may suffer from the same issue. >> >> The first patch introduces a common (and fixed) version of that check >> that can be used by drivers and architectures that require it. The two >> following patches change the pci-host-generic driver and the powerpc >> code to use it. >> >> Finally, the bad property is removed from the Seatle DTS, because it >> is simply not necessary (it actually prevents me from using SR-IOV, >> which otherwise runs fine without the probe-only thing). >> >> This has been tested on the offending Seattle board. >> >> * From v3: >> - Restrict the property lookup to /chosen (Rob) >> - Acked-by on patch #4 from Suravee >> - I swear this is the last time I rework these patches! ;-) >> >> * From v2: >> - Use of_property_read_u32 to safely read the property (Rob) >> - Add a log message to indicate when we enable probe-only >> (probably quite useful for debugging) >> >> * From v1: >> - Consolidate the parsing in of_pci.c (Bjorn) >> >> Marc Zyngier (4): >> of/pci: Add of_pci_check_probe_only to parse "linux,pci-probe-only" >> PCI: pci-host-generic: Fix lookup of linux,pci-probe-only property >> powerpc: PCI: Fix lookup of linux,pci-probe-only property >> arm64: dts: Drop linux,pci-probe-only from the Seattle DTS >> >> arch/arm64/boot/dts/amd/amd-overdrive.dts | 1 - >> arch/powerpc/platforms/pseries/setup.c | 14 ++------------ >> drivers/of/of_pci.c | 28 ++++++++++++++++++++++++++++ >> drivers/pci/host/pci-host-generic.c | 9 +-------- >> include/linux/of_pci.h | 3 +++ >> 5 files changed, 34 insertions(+), 21 deletions(-) > > Applied with the comment tweak and acks to pci/host-generic for v4.4, > thanks! Turns out that the 01.org infrastructure has picked up on a compilation bug with randconfig. The following patch seems to fix it and should be applied on the first patch: diff --git a/drivers/of/of_pci.c b/drivers/of/of_pci.c index 485d625..2da5abc 100644 --- a/drivers/of/of_pci.c +++ b/drivers/of/of_pci.c @@ -6,6 +6,8 @@ #include <linux/of_pci.h> #include <linux/slab.h> +#include <asm-generic/pci-bridge.h> + static inline int __of_pci_pci_compare(struct device_node *node, unsigned int data) { Sorry for the annoyance. M. -- Jazz is not dead. It just smells funny... -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html