Re: [PATCH v11 08/10] OF: PCI: Add support for parsing PCI host bridge resources from DT
From: Robert Richter <hidden>
Date: 2014-09-22 12:15:55
Also in:
linux-arch, linux-arm-kernel, linux-pci, lkml
On 22.09.14 12:43:17, Liviu Dudau wrote:
On Mon, Sep 22, 2014 at 10:32:28AM +0100, Robert Richter wrote:quoted
On 18.09.14 02:30:23, Liviu Dudau wrote:quoted
+int of_pci_get_host_bridge_resources(struct device_node *dev, + unsigned char busno, unsigned char bus_max, + struct list_head *resources, resource_size_t *io_base) +{ + struct resource *res; + struct resource *bus_range; + struct of_pci_range range; + struct of_pci_range_parser parser; + char range_type[4]; + int err; + + if (!io_base) + return -EINVAL; + *io_base = OF_BAD_ADDR;Hi Robert,quoted
This breaks for mem-mapped pci host controllers. The patch below fixes this.I think you mean PCI host controller that have only memory mapped ranges, am I right? Initially I've read your reply as to mean that the host controller is accessed through some memory mapped area, which I believe is the case for all host controllers.
Right, that's meant here. Sorry for the misleading comment.
quoted
This series was tested with the fix on top for Cavium Thunder. Tested-by: Robert Richter <rrichter-YGCgFSpz5w/QT0dZR+AlfA@public.gmane.org>Thanks for that!quoted
-Robert From e798af4fc2f664d1aff7e863489b8298f90e716e Mon Sep 17 00:00:00 2001 From: Robert Richter <rrichter-YGCgFSpz5w/QT0dZR+AlfA@public.gmane.org> Date: Mon, 22 Sep 2014 10:46:01 +0200 Subject: [PATCH] OF: PCI: Fix creation of mem-mapped pci host bridges The pci host bridge was not created if io_base was not set when calling of_pci_get_host_bridge_resources(). This is esp. the case for mem-mapped io (IORESOURCE_MEM). This patch fixes this. Function parameter io_base is optional now.I think the message is misleading. What you want to do is make io_base optional for the case where the PCI host bridge only expects to have only IORESOURCE_MEM ranges and doesn't care about IORESOURCE_IO ones. As I'm going to touch this area again to address a comment from Bjorn, do you mind if I roll this patch into mine with your Signed-off-by and the mention that you have made io_base optional?
Sure, fine with me. Thanks, -Robert
Best regards, Liviuquoted
Signed-off-by: Robert Richter <rrichter-YGCgFSpz5w/QT0dZR+AlfA@public.gmane.org> --- drivers/of/of_pci.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)diff --git a/drivers/of/of_pci.c b/drivers/of/of_pci.c index ffdb45ed8682..1f0e7c2505ee 100644 --- a/drivers/of/of_pci.c +++ b/drivers/of/of_pci.c@@ -182,9 +182,8 @@ int of_pci_get_host_bridge_resources(struct device_node *dev, char range_type[4]; int err; - if (!io_base) - return -EINVAL; - *io_base = OF_BAD_ADDR; + if (io_base) + *io_base = OF_BAD_ADDR; bus_range = kzalloc(sizeof(*bus_range), GFP_KERNEL); if (!bus_range)@@ -242,7 +241,7 @@ int of_pci_get_host_bridge_resources(struct device_node *dev, goto parse_failed; } - if (resource_type(res) == IORESOURCE_IO) { + if (io_base && resource_type(res) == IORESOURCE_IO) { if (*io_base != OF_BAD_ADDR) pr_warn("More than one I/O resource converted. CPU offset for old range lost!\n"); *io_base = range.cpu_addr;-- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html-- ==================== | I would like to | | fix the world, | | but they're not | | giving me the | \ source code! / --------------- ¯\_(ツ)_/¯
-- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html