| From d277f6e88c88729b1d57d40bbfb00d0bfc961972 Mon Sep 17 00:00:00 2001 |
| From: Rob Herring <robh@kernel.org> |
| Date: Tue, 3 Aug 2021 15:56:55 -0600 |
| Subject: [PATCH] PCI: of: Don't fail devm_pci_alloc_host_bridge() on missing 'ranges' |
| Mime-version: 1.0 |
| Content-type: text/plain; charset=UTF-8 |
| Content-transfer-encoding: 8bit |
| Git-commit: d277f6e88c88729b1d57d40bbfb00d0bfc961972 |
| Patch-mainline: v5.15-rc1 |
| References: git-fixes stable-5.14.7 |
| |
| Commit 669cbc708122 ("PCI: Move DT resource setup into |
| devm_pci_alloc_host_bridge()") made devm_pci_alloc_host_bridge() fail on |
| any DT resource parsing errors, but Broadcom iProc uses |
| devm_pci_alloc_host_bridge() on BCMA bus devices that don't have DT |
| resources. In particular, there is no 'ranges' property. Fix iProc by |
| making 'ranges' optional. |
| |
| If 'ranges' is required by a platform, there's going to be more errors |
| latter on if it is missing. |
| |
| Link: https://lore.kernel.org/r/20210803215656.3803204-1-robh@kernel.org |
| Fixes: 669cbc708122 ("PCI: Move DT resource setup into devm_pci_alloc_host_bridge()") |
| Reported-by: Rafał Miłecki <zajec5@gmail.com> |
| Tested-by: Rafał Miłecki <rafal@milecki.pl> |
| Signed-off-by: Rob Herring <robh@kernel.org> |
| Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
| Acked-by: Bjorn Helgaas <bhelgaas@google.com> |
| Cc: Srinath Mannam <srinath.mannam@broadcom.com> |
| Cc: Roman Bacik <roman.bacik@broadcom.com> |
| Cc: Bharat Gooty <bharat.gooty@broadcom.com> |
| Cc: Abhishek Shah <abhishek.shah@broadcom.com> |
| Cc: Jitendra Bhivare <jitendra.bhivare@broadcom.com> |
| Cc: Ray Jui <ray.jui@broadcom.com> |
| Cc: Florian Fainelli <f.fainelli@gmail.com> |
| Cc: BCM Kernel Feedback <bcm-kernel-feedback-list@broadcom.com> |
| Cc: Scott Branden <sbranden@broadcom.com> |
| Cc: Bjorn Helgaas <bhelgaas@google.com> |
| Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> |
| Acked-by: Takashi Iwai <tiwai@suse.de> |
| |
| |
| drivers/pci/of.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/pci/of.c b/drivers/pci/of.c |
| index a143b02b2dcd..d84381ce82b5 100644 |
| |
| |
| @@ -310,7 +310,7 @@ static int devm_of_pci_get_host_bridge_resources(struct device *dev, |
| /* Check for ranges property */ |
| err = of_pci_range_parser_init(&parser, dev_node); |
| if (err) |
| - goto failed; |
| + return 0; |
| |
| dev_dbg(dev, "Parsing ranges property...\n"); |
| for_each_of_pci_range(&parser, &range) { |
| -- |
| 2.26.2 |
| |