diff mbox series

[U-Boot] drivers: pci: ignore disabled devices

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

Commit Message

Michael Walle Dec. 1, 2019, 4:45 p.m. UTC
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(+)

Comments

Alexandru Marginean Dec. 2, 2019, 9:12 a.m. UTC | #1
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>
Bin Meng Dec. 2, 2019, 9:21 a.m. UTC | #2
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>
Tom Rini Dec. 5, 2019, 10:09 p.m. UTC | #3
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 mbox series

Patch

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++) {