Message ID | 20191201164518.23656-1-michael@walle.cc |
---|---|
State | Accepted |
Commit | a6cd597a78dd9b7fcaba6fe4891f29e86646541b |
Delegated to: | Tom Rini |
Headers | show |
Series | [U-Boot] drivers: pci: ignore disabled devices | expand |
On 12/1/2019 5:45 PM, Michael Walle wrote: > PCI devices may be disabled in the device tree. Devices which are probed > by the device tree handle the "status" property and are skipped if > disabled. Devices which are probed by the PCI enumeration don't check > that property. Fix it. > > Signed-off-by: Michael Walle <michael@walle.cc> > --- > drivers/pci/pci-uclass.c | 5 +++++ > 1 file changed, 5 insertions(+) > Reviewed-by: Alex Marginean <alexandru.marginean@nxp.com> Tested-by: Alex Marginean <alexandru.marginean@nxp.com>
On Mon, Dec 2, 2019 at 12:45 AM Michael Walle <michael@walle.cc> wrote: > > PCI devices may be disabled in the device tree. Devices which are probed > by the device tree handle the "status" property and are skipped if > disabled. Devices which are probed by the PCI enumeration don't check > that property. Fix it. > > Signed-off-by: Michael Walle <michael@walle.cc> > --- > drivers/pci/pci-uclass.c | 5 +++++ > 1 file changed, 5 insertions(+) > Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
On Sun, Dec 01, 2019 at 05:45:18PM +0100, Michael Walle wrote: > PCI devices may be disabled in the device tree. Devices which are probed > by the device tree handle the "status" property and are skipped if > disabled. Devices which are probed by the PCI enumeration don't check > that property. Fix it. > > Signed-off-by: Michael Walle <michael@walle.cc> > Reviewed-by: Alex Marginean <alexandru.marginean@nxp.com> > Tested-by: Alex Marginean <alexandru.marginean@nxp.com> > Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Applied to u-boot/master, thanks!
diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c index 896cb6b23a..fab20fc60e 100644 --- a/drivers/pci/pci-uclass.c +++ b/drivers/pci/pci-uclass.c @@ -677,6 +677,11 @@ static int pci_find_and_bind_driver(struct udevice *parent, /* Determine optional OF node */ pci_dev_find_ofnode(parent, bdf, &node); + if (ofnode_valid(node) && !ofnode_is_available(node)) { + debug("%s: Ignoring disabled device\n", __func__); + return -EPERM; + } + start = ll_entry_start(struct pci_driver_entry, pci_driver_entry); n_ents = ll_entry_count(struct pci_driver_entry, pci_driver_entry); for (entry = start; entry != start + n_ents; entry++) {
PCI devices may be disabled in the device tree. Devices which are probed by the device tree handle the "status" property and are skipped if disabled. Devices which are probed by the PCI enumeration don't check that property. Fix it. Signed-off-by: Michael Walle <michael@walle.cc> --- drivers/pci/pci-uclass.c | 5 +++++ 1 file changed, 5 insertions(+)