linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v6 0/3] Support for Generic PCI Host Controller
@ 2014-05-07 16:07 Will Deacon
  2014-05-07 16:07 ` [PATCH v6 1/3] ARM: kconfig: allow PCI support to be selected with ARCH_MULTIPLATFORM Will Deacon
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Will Deacon @ 2014-05-07 16:07 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: arnd, linux-pci, bhelgaas, jgunthorpe, sthokal, Will Deacon

Hello again,

This is version 6 of the generic PCI host controller series that has
previously been posted here:

  v1: http://lists.infradead.org/pipermail/linux-arm-kernel/2014-February/229679.html
  v2: http://lists.infradead.org/pipermail/linux-arm-kernel/2014-February/232213.html
  v3: http://lists.infradead.org/pipermail/linux-arm-kernel/2014-February/233491.html
  v4: http://lists.infradead.org/pipermail/linux-arm-kernel/2014-February/235468.html
  v5: http://lists.infradead.org/pipermail/linux-arm-kernel/2014-March/237540.html
      http://lists.infradead.org/pipermail/linux-arm-kernel/2014-May/252915.html

Changes since v5 include:

  - Moved most of ->setup() into ->probe() (via two new function calls)

  - Improved cleanup (we can now rely on devm_* doing its job for us)

  - Moved Kconfig option under ARCH_MULTIPLATFORM

All feedback welcome.

Cheers,

Will


Will Deacon (3):
  ARM: kconfig: allow PCI support to be selected with ARCH_MULTIPLATFORM
  PCI: ARM: add support for generic PCI host controller
  MAINTAINERS: add entry for generic PCI host controller driver

 .../devicetree/bindings/pci/host-generic-pci.txt   | 100 ++++++
 MAINTAINERS                                        |   8 +
 arch/arm/Kconfig                                   |   1 +
 drivers/pci/host/Kconfig                           |   7 +
 drivers/pci/host/Makefile                          |   1 +
 drivers/pci/host/pci-host-generic.c                | 388 +++++++++++++++++++++
 6 files changed, 505 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/pci/host-generic-pci.txt
 create mode 100644 drivers/pci/host/pci-host-generic.c

-- 
1.9.2


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v6 1/3] ARM: kconfig: allow PCI support to be selected with ARCH_MULTIPLATFORM
  2014-05-07 16:07 [PATCH v6 0/3] Support for Generic PCI Host Controller Will Deacon
@ 2014-05-07 16:07 ` Will Deacon
  2014-05-08 15:08   ` Stephen Warren
  2014-05-14 14:01   ` Rob Herring
  2014-05-07 16:07 ` [PATCH v6 2/3] PCI: ARM: add support for generic PCI host controller Will Deacon
  2014-05-07 16:07 ` [PATCH v6 3/3] MAINTAINERS: add entry for generic PCI host controller driver Will Deacon
  2 siblings, 2 replies; 11+ messages in thread
From: Will Deacon @ 2014-05-07 16:07 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: arnd, linux-pci, bhelgaas, jgunthorpe, sthokal, Will Deacon

When targetting ARCH_MULTIPLATFORM, we may include support for SoCs with
PCI-capable devices (e.g. mach-virt with virtio-pci).

This patch allows PCI support to be selected for these SoCs by selecting
CONFIG_MIGHT_HAVE_PCI when CONFIG_ARCH_MULTIPLATFORM=y.

Signed-off-by: Will Deacon <will.deacon@arm.com>
---
 arch/arm/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index db3c5414223e..860bea828ac4 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -314,6 +314,7 @@ config ARCH_MULTIPLATFORM
 	select CLKSRC_OF
 	select COMMON_CLK
 	select GENERIC_CLOCKEVENTS
+	select MIGHT_HAVE_PCI
 	select MULTI_IRQ_HANDLER
 	select SPARSE_IRQ
 	select USE_OF
-- 
1.9.2


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v6 2/3] PCI: ARM: add support for generic PCI host controller
  2014-05-07 16:07 [PATCH v6 0/3] Support for Generic PCI Host Controller Will Deacon
  2014-05-07 16:07 ` [PATCH v6 1/3] ARM: kconfig: allow PCI support to be selected with ARCH_MULTIPLATFORM Will Deacon
@ 2014-05-07 16:07 ` Will Deacon
  2014-05-07 16:07 ` [PATCH v6 3/3] MAINTAINERS: add entry for generic PCI host controller driver Will Deacon
  2 siblings, 0 replies; 11+ messages in thread
From: Will Deacon @ 2014-05-07 16:07 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: arnd, linux-pci, bhelgaas, jgunthorpe, sthokal, Will Deacon

This patch adds support for a generic PCI host controller, such as a
firmware-initialised device with static windows or an emulation by
something such as kvmtool.

The controller itself has no configuration registers and has its address
spaces described entirely by the device-tree (using the bindings from
ePAPR). Both CAM and ECAM are supported for Config Space accesses.

Corresponding documentation is added for the DT binding.

Reviewed-by: Liviu Dudau <liviu.dudau@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
---
 .../devicetree/bindings/pci/host-generic-pci.txt   | 100 ++++++
 drivers/pci/host/Kconfig                           |   7 +
 drivers/pci/host/Makefile                          |   1 +
 drivers/pci/host/pci-host-generic.c                | 388 +++++++++++++++++++++
 4 files changed, 496 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/pci/host-generic-pci.txt
 create mode 100644 drivers/pci/host/pci-host-generic.c

diff --git a/Documentation/devicetree/bindings/pci/host-generic-pci.txt b/Documentation/devicetree/bindings/pci/host-generic-pci.txt
new file mode 100644
index 000000000000..f0b0436807b4
--- /dev/null
+++ b/Documentation/devicetree/bindings/pci/host-generic-pci.txt
@@ -0,0 +1,100 @@
+* Generic PCI host controller
+
+Firmware-initialised PCI host controllers and PCI emulations, such as the
+virtio-pci implementations found in kvmtool and other para-virtualised
+systems, do not require driver support for complexities such as regulator
+and clock management. In fact, the controller may not even require the
+configuration of a control interface by the operating system, instead
+presenting a set of fixed windows describing a subset of IO, Memory and
+Configuration Spaces.
+
+Such a controller can be described purely in terms of the standardized device
+tree bindings communicated in pci.txt:
+
+
+Properties of the host controller node:
+
+- compatible     : Must be "pci-host-cam-generic" or "pci-host-ecam-generic"
+                   depending on the layout of configuration space (CAM vs
+                   ECAM respectively).
+
+- device_type    : Must be "pci".
+
+- ranges         : As described in IEEE Std 1275-1994, but must provide
+                   at least a definition of non-prefetchable memory. One
+                   or both of prefetchable Memory and IO Space may also
+                   be provided.
+
+- bus-range      : Optional property (also described in IEEE Std 1275-1994)
+                   to indicate the range of bus numbers for this controller.
+                   If absent, defaults to <0 255> (i.e. all buses).
+
+- #address-cells : Must be 3.
+
+- #size-cells    : Must be 2.
+
+- reg            : The Configuration Space base address and size, as accessed
+                   from the parent bus.
+
+
+Properties of the /chosen node:
+
+- linux,pci-probe-only
+                 : Optional property which takes a single-cell argument.
+                   If '0', then Linux will assign devices in its usual manner,
+                   otherwise it will not try to assign devices and instead use
+                   them as they are configured already.
+
+Configuration Space is assumed to be memory-mapped (as opposed to being
+accessed via an ioport) and laid out with a direct correspondence to the
+geography of a PCI bus address by concatenating the various components to
+form an offset.
+
+For CAM, this 24-bit offset is:
+
+        cfg_offset(bus, device, function, register) =
+                   bus << 16 | device << 11 | function << 8 | register
+
+Whilst ECAM extends this by 4 bits to accomodate 4k of function space:
+
+        cfg_offset(bus, device, function, register) =
+                   bus << 20 | device << 15 | function << 12 | register
+
+Interrupt mapping is exactly as described in `Open Firmware Recommended
+Practice: Interrupt Mapping' and requires the following properties:
+
+- #interrupt-cells   : Must be 1
+
+- interrupt-map      : <see aforementioned specification>
+
+- interrupt-map-mask : <see aforementioned specification>
+
+
+Example:
+
+pci {
+    compatible = "pci-host-cam-generic"
+    device_type = "pci";
+    #address-cells = <3>;
+    #size-cells = <2>;
+    bus-range = <0x0 0x1>;
+
+    // CPU_PHYSICAL(2)  SIZE(2)
+    reg = <0x0 0x40000000  0x0 0x1000000>;
+
+    // BUS_ADDRESS(3)  CPU_PHYSICAL(2)  SIZE(2)
+    ranges = <0x01000000 0x0 0x01000000  0x0 0x01000000  0x0 0x00010000>,
+             <0x02000000 0x0 0x41000000  0x0 0x41000000  0x0 0x3f000000>;
+
+
+    #interrupt-cells = <0x1>;
+
+    // PCI_DEVICE(3)  INT#(1)  CONTROLLER(PHANDLE)  CONTROLLER_DATA(3)
+    interrupt-map = <  0x0 0x0 0x0  0x1  &gic  0x0 0x4 0x1
+                     0x800 0x0 0x0  0x1  &gic  0x0 0x5 0x1
+                    0x1000 0x0 0x0  0x1  &gic  0x0 0x6 0x1
+                    0x1800 0x0 0x0  0x1  &gic  0x0 0x7 0x1>;
+
+    // PCI_DEVICE(3)  INT#(1)
+    interrupt-map-mask = <0xf800 0x0 0x0  0x7>;
+}
diff --git a/drivers/pci/host/Kconfig b/drivers/pci/host/Kconfig
index a6f67ec8882f..32d446effbb3 100644
--- a/drivers/pci/host/Kconfig
+++ b/drivers/pci/host/Kconfig
@@ -33,4 +33,11 @@ config PCI_RCAR_GEN2
 	  There are 3 internal PCI controllers available with a single
 	  built-in EHCI/OHCI host controller present on each one.
 
+config PCI_HOST_GENERIC
+	bool "Generic PCI host controller"
+	depends on ARM && OF
+	help
+	  Say Y here if you want to support a simple generic PCI host
+	  controller, such as the one emulated by kvmtool.
+
 endmenu
diff --git a/drivers/pci/host/Makefile b/drivers/pci/host/Makefile
index 13fb3333aa05..bd1bf1ab4ac8 100644
--- a/drivers/pci/host/Makefile
+++ b/drivers/pci/host/Makefile
@@ -4,3 +4,4 @@ obj-$(CONFIG_PCI_IMX6) += pci-imx6.o
 obj-$(CONFIG_PCI_MVEBU) += pci-mvebu.o
 obj-$(CONFIG_PCI_TEGRA) += pci-tegra.o
 obj-$(CONFIG_PCI_RCAR_GEN2) += pci-rcar-gen2.o
+obj-$(CONFIG_PCI_HOST_GENERIC) += pci-host-generic.o
diff --git a/drivers/pci/host/pci-host-generic.c b/drivers/pci/host/pci-host-generic.c
new file mode 100644
index 000000000000..ea2bc5b9b6e2
--- /dev/null
+++ b/drivers/pci/host/pci-host-generic.c
@@ -0,0 +1,388 @@
+/*
+ * Simple, generic PCI host controller driver targetting firmware-initialised
+ * systems and virtual machines (e.g. the PCI emulation provided by kvmtool).
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (C) 2014 ARM Limited
+ *
+ * Author: Will Deacon <will.deacon@arm.com>
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/of_address.h>
+#include <linux/of_pci.h>
+#include <linux/platform_device.h>
+
+struct gen_pci_cfg_bus_ops {
+	u32 bus_shift;
+	void __iomem *(*map_bus)(struct pci_bus *, unsigned int, int);
+};
+
+struct gen_pci_cfg_windows {
+	struct resource				res;
+	struct resource				bus_range;
+	void __iomem				**win;
+
+	const struct gen_pci_cfg_bus_ops	*ops;
+};
+
+struct gen_pci {
+	struct pci_host_bridge			host;
+	struct gen_pci_cfg_windows		cfg;
+	struct list_head			resources;
+};
+
+static void __iomem *gen_pci_map_cfg_bus_cam(struct pci_bus *bus,
+					     unsigned int devfn,
+					     int where)
+{
+	struct pci_sys_data *sys = bus->sysdata;
+	struct gen_pci *pci = sys->private_data;
+	resource_size_t idx = bus->number - pci->cfg.bus_range.start;
+
+	return pci->cfg.win[idx] + ((devfn << 8) | where);
+}
+
+static struct gen_pci_cfg_bus_ops gen_pci_cfg_cam_bus_ops = {
+	.bus_shift	= 16,
+	.map_bus	= gen_pci_map_cfg_bus_cam,
+};
+
+static void __iomem *gen_pci_map_cfg_bus_ecam(struct pci_bus *bus,
+					      unsigned int devfn,
+					      int where)
+{
+	struct pci_sys_data *sys = bus->sysdata;
+	struct gen_pci *pci = sys->private_data;
+	resource_size_t idx = bus->number - pci->cfg.bus_range.start;
+
+	return pci->cfg.win[idx] + ((devfn << 12) | where);
+}
+
+static struct gen_pci_cfg_bus_ops gen_pci_cfg_ecam_bus_ops = {
+	.bus_shift	= 20,
+	.map_bus	= gen_pci_map_cfg_bus_ecam,
+};
+
+static int gen_pci_config_read(struct pci_bus *bus, unsigned int devfn,
+				int where, int size, u32 *val)
+{
+	void __iomem *addr;
+	struct pci_sys_data *sys = bus->sysdata;
+	struct gen_pci *pci = sys->private_data;
+
+	addr = pci->cfg.ops->map_bus(bus, devfn, where);
+
+	switch (size) {
+	case 1:
+		*val = readb(addr);
+		break;
+	case 2:
+		*val = readw(addr);
+		break;
+	default:
+		*val = readl(addr);
+	}
+
+	return PCIBIOS_SUCCESSFUL;
+}
+
+static int gen_pci_config_write(struct pci_bus *bus, unsigned int devfn,
+				 int where, int size, u32 val)
+{
+	void __iomem *addr;
+	struct pci_sys_data *sys = bus->sysdata;
+	struct gen_pci *pci = sys->private_data;
+
+	addr = pci->cfg.ops->map_bus(bus, devfn, where);
+
+	switch (size) {
+	case 1:
+		writeb(val, addr);
+		break;
+	case 2:
+		writew(val, addr);
+		break;
+	default:
+		writel(val, addr);
+	}
+
+	return PCIBIOS_SUCCESSFUL;
+}
+
+static struct pci_ops gen_pci_ops = {
+	.read	= gen_pci_config_read,
+	.write	= gen_pci_config_write,
+};
+
+static const struct of_device_id gen_pci_of_match[] = {
+	{ .compatible = "pci-host-cam-generic",
+	  .data = &gen_pci_cfg_cam_bus_ops },
+
+	{ .compatible = "pci-host-ecam-generic",
+	  .data = &gen_pci_cfg_ecam_bus_ops },
+
+	{ },
+};
+MODULE_DEVICE_TABLE(of, gen_pci_of_match);
+
+static int gen_pci_calc_io_offset(struct device *dev,
+				  struct of_pci_range *range,
+				  struct resource *res,
+				  resource_size_t *offset)
+{
+	static atomic_t wins = ATOMIC_INIT(0);
+	int err, idx, max_win;
+	unsigned int window;
+
+	if (!PAGE_ALIGNED(range->cpu_addr))
+		return -EINVAL;
+
+	max_win = (IO_SPACE_LIMIT + 1) / SZ_64K;
+	idx = atomic_inc_return(&wins);
+	if (idx >= max_win)
+		return -ENOSPC;
+
+	window = (idx - 1) * SZ_64K;
+	err = pci_ioremap_io(window, range->cpu_addr);
+	if (err)
+		return err;
+
+	of_pci_range_to_resource(range, dev->of_node, res);
+	res->start = window;
+	res->end = res->start + range->size - 1;
+	*offset = window - range->pci_addr;
+	return 0;
+}
+
+static int gen_pci_calc_mem_offset(struct device *dev,
+				   struct of_pci_range *range,
+				   struct resource *res,
+				   resource_size_t *offset)
+{
+	of_pci_range_to_resource(range, dev->of_node, res);
+	*offset = range->cpu_addr - range->pci_addr;
+	return 0;
+}
+
+static void gen_pci_release_of_pci_ranges(struct gen_pci *pci)
+{
+	struct pci_host_bridge_window *win;
+
+	list_for_each_entry(win, &pci->resources, list)
+		release_resource(win->res);
+
+	pci_free_resource_list(&pci->resources);
+}
+
+static int gen_pci_parse_request_of_pci_ranges(struct gen_pci *pci)
+{
+	struct of_pci_range range;
+	struct of_pci_range_parser parser;
+	int err, res_valid = 0;
+	struct device *dev = pci->host.dev.parent;
+	struct device_node *np = dev->of_node;
+
+	if (of_pci_range_parser_init(&parser, np)) {
+		dev_err(dev, "missing \"ranges\" property\n");
+		return -EINVAL;
+	}
+
+	for_each_of_pci_range(&parser, &range) {
+		struct resource *parent, *res;
+		resource_size_t offset;
+		u32 restype = range.flags & IORESOURCE_TYPE_BITS;
+
+		res = devm_kmalloc(dev, sizeof(*res), GFP_KERNEL);
+		if (!res) {
+			err = -ENOMEM;
+			goto out_release_res;
+		}
+
+		switch (restype) {
+		case IORESOURCE_IO:
+			parent = &ioport_resource;
+			err = gen_pci_calc_io_offset(dev, &range, res, &offset);
+			break;
+		case IORESOURCE_MEM:
+			parent = &iomem_resource;
+			err = gen_pci_calc_mem_offset(dev, &range, res, &offset);
+			res_valid |= !(res->flags & IORESOURCE_PREFETCH || err);
+			break;
+		default:
+			err = -EINVAL;
+			continue;
+		}
+
+		if (err) {
+			dev_warn(dev,
+				 "error %d: failed to add resource [type 0x%x, %lld bytes]\n",
+				 err, restype, range.size);
+			continue;
+		}
+
+		err = request_resource(parent, res);
+		if (err)
+			goto out_release_res;
+
+		pci_add_resource_offset(&pci->resources, res, offset);
+	}
+
+	if (!res_valid) {
+		dev_err(dev, "non-prefetchable memory resource required\n");
+		err = -EINVAL;
+		goto out_release_res;
+	}
+
+	return 0;
+
+out_release_res:
+	gen_pci_release_of_pci_ranges(pci);
+	return err;
+}
+
+static int gen_pci_parse_map_cfg_windows(struct gen_pci *pci)
+{
+	int err;
+	u8 bus_max;
+	resource_size_t busn;
+	struct resource *bus_range;
+	struct device *dev = pci->host.dev.parent;
+	struct device_node *np = dev->of_node;
+
+	if (of_pci_parse_bus_range(np, &pci->cfg.bus_range))
+		pci->cfg.bus_range = (struct resource) {
+			.name	= np->name,
+			.start	= 0,
+			.end	= 0xff,
+			.flags	= IORESOURCE_BUS,
+		};
+
+	err = of_address_to_resource(np, 0, &pci->cfg.res);
+	if (err) {
+		dev_err(dev, "missing \"reg\" property\n");
+		return err;
+	}
+
+	pci->cfg.win = devm_kcalloc(dev, resource_size(&pci->cfg.bus_range),
+				    sizeof(*pci->cfg.win), GFP_KERNEL);
+	if (!pci->cfg.win)
+		return -ENOMEM;
+
+	/* Limit the bus-range to fit within reg */
+	bus_max = pci->cfg.bus_range.start +
+		  (resource_size(&pci->cfg.res) >> pci->cfg.ops->bus_shift) - 1;
+	pci->cfg.bus_range.end = min_t(resource_size_t, pci->cfg.bus_range.end,
+				       bus_max);
+
+	/* Map our Configuration Space windows */
+	if (!devm_request_mem_region(dev, pci->cfg.res.start,
+				     resource_size(&pci->cfg.res),
+				     "Configuration Space"))
+		return -ENOMEM;
+
+	bus_range = &pci->cfg.bus_range;
+	for (busn = bus_range->start; busn <= bus_range->end; ++busn) {
+		u32 idx = busn - bus_range->start;
+		u32 sz = 1 << pci->cfg.ops->bus_shift;
+
+		pci->cfg.win[idx] = devm_ioremap(dev,
+						 pci->cfg.res.start + busn * sz,
+						 sz);
+		if (!pci->cfg.win[idx])
+			return -ENOMEM;
+	}
+
+	/* Register bus resource */
+	pci_add_resource(&pci->resources, bus_range);
+	return 0;
+}
+
+static int gen_pci_setup(int nr, struct pci_sys_data *sys)
+{
+	struct gen_pci *pci = sys->private_data;
+	list_splice_init(&pci->resources, &sys->resources);
+	return 1;
+}
+
+static int gen_pci_probe(struct platform_device *pdev)
+{
+	int err;
+	const char *type;
+	const struct of_device_id *of_id;
+	const int *prop;
+	struct device *dev = &pdev->dev;
+	struct device_node *np = dev->of_node;
+	struct gen_pci *pci = devm_kzalloc(dev, sizeof(*pci), GFP_KERNEL);
+	struct hw_pci hw = {
+		.nr_controllers	= 1,
+		.private_data	= (void **)&pci,
+		.setup		= gen_pci_setup,
+		.map_irq	= of_irq_parse_and_map_pci,
+		.ops		= &gen_pci_ops,
+	};
+
+	if (!pci)
+		return -ENOMEM;
+
+	type = of_get_property(np, "device_type", NULL);
+	if (!type || strcmp(type, "pci")) {
+		dev_err(dev, "invalid \"device_type\" %s\n", type);
+		return -EINVAL;
+	}
+
+	prop = of_get_property(of_chosen, "linux,pci-probe-only", NULL);
+	if (prop) {
+		if (*prop)
+			pci_add_flags(PCI_PROBE_ONLY);
+		else
+			pci_clear_flags(PCI_PROBE_ONLY);
+	}
+
+	of_id = of_match_node(gen_pci_of_match, np);
+	pci->cfg.ops = of_id->data;
+	pci->host.dev.parent = dev;
+	INIT_LIST_HEAD(&pci->host.windows);
+	INIT_LIST_HEAD(&pci->resources);
+
+	/* Parse our PCI ranges and request their resources */
+	err = gen_pci_parse_request_of_pci_ranges(pci);
+	if (err)
+		return err;
+
+	/* Parse and map our Configuration Space windows */
+	err = gen_pci_parse_map_cfg_windows(pci);
+	if (err) {
+		gen_pci_release_of_pci_ranges(pci);
+		return err;
+	}
+
+	pci_common_init_dev(dev, &hw);
+	return 0;
+}
+
+static struct platform_driver gen_pci_driver = {
+	.driver = {
+		.name = "pci-host-generic",
+		.owner = THIS_MODULE,
+		.of_match_table = gen_pci_of_match,
+	},
+	.probe = gen_pci_probe,
+};
+module_platform_driver(gen_pci_driver);
+
+MODULE_DESCRIPTION("Generic PCI host driver");
+MODULE_AUTHOR("Will Deacon <will.deacon@arm.com>");
+MODULE_LICENSE("GPLv2");
-- 
1.9.2


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v6 3/3] MAINTAINERS: add entry for generic PCI host controller driver
  2014-05-07 16:07 [PATCH v6 0/3] Support for Generic PCI Host Controller Will Deacon
  2014-05-07 16:07 ` [PATCH v6 1/3] ARM: kconfig: allow PCI support to be selected with ARCH_MULTIPLATFORM Will Deacon
  2014-05-07 16:07 ` [PATCH v6 2/3] PCI: ARM: add support for generic PCI host controller Will Deacon
@ 2014-05-07 16:07 ` Will Deacon
  2 siblings, 0 replies; 11+ messages in thread
From: Will Deacon @ 2014-05-07 16:07 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: arnd, linux-pci, bhelgaas, jgunthorpe, sthokal, Will Deacon

Add myself as the maintainer for the generic PCI host controller driver.

Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Will Deacon <will.deacon@arm.com>
---
 MAINTAINERS | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 106626442124..424874c9a692 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -6751,6 +6751,14 @@ L:	linux-pci@vger.kernel.org
 S:	Maintained
 F:	drivers/pci/host/*designware*
 
+PCI DRIVER FOR GENERIC OF HOSTS
+M:	Will Deacon <will.deacon@arm.com>
+L:	linux-pci@vger.kernel.org
+L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
+S:	Maintained
+F:	Documentation/devicetree/bindings/pci/host-generic-pci.txt
+F:	drivers/pci/host/pci-host-generic.c
+
 PCMCIA SUBSYSTEM
 P:	Linux PCMCIA Team
 L:	linux-pcmcia@lists.infradead.org
-- 
1.9.2


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH v6 1/3] ARM: kconfig: allow PCI support to be selected with ARCH_MULTIPLATFORM
  2014-05-07 16:07 ` [PATCH v6 1/3] ARM: kconfig: allow PCI support to be selected with ARCH_MULTIPLATFORM Will Deacon
@ 2014-05-08 15:08   ` Stephen Warren
  2014-05-08 15:15     ` Will Deacon
  2014-05-14 14:01   ` Rob Herring
  1 sibling, 1 reply; 11+ messages in thread
From: Stephen Warren @ 2014-05-08 15:08 UTC (permalink / raw)
  To: Will Deacon, linux-arm-kernel
  Cc: arnd, linux-pci, sthokal, jgunthorpe, bhelgaas

On 05/07/2014 10:07 AM, Will Deacon wrote:
> When targetting ARCH_MULTIPLATFORM, we may include support for SoCs with
> PCI-capable devices (e.g. mach-virt with virtio-pci).
> 
> This patch allows PCI support to be selected for these SoCs by selecting
> CONFIG_MIGHT_HAVE_PCI when CONFIG_ARCH_MULTIPLATFORM=y.

> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig

> @@ -314,6 +314,7 @@ config ARCH_MULTIPLATFORM
>  	select CLKSRC_OF
>  	select COMMON_CLK
>  	select GENERIC_CLOCKEVENTS
> +	select MIGHT_HAVE_PCI

Doesn't ARCH_MULTIPLATFORM allow ARCH_$soc to be selected, and ARCH_$soc
selects MIGHT_HAVE_PCI?

That way, you can only enable PCI support if you have actually enabled
an SoC that has PCI, and equally ARCH_$soc selects MIGHT_HAVE_PCI just
like it always used to work before ARCH_MULTIPLATFORM.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v6 1/3] ARM: kconfig: allow PCI support to be selected with ARCH_MULTIPLATFORM
  2014-05-08 15:08   ` Stephen Warren
@ 2014-05-08 15:15     ` Will Deacon
  2014-05-08 15:38       ` Stephen Warren
  0 siblings, 1 reply; 11+ messages in thread
From: Will Deacon @ 2014-05-08 15:15 UTC (permalink / raw)
  To: Stephen Warren
  Cc: linux-arm-kernel, arnd, linux-pci, sthokal, jgunthorpe, bhelgaas

On Thu, May 08, 2014 at 04:08:25PM +0100, Stephen Warren wrote:
> On 05/07/2014 10:07 AM, Will Deacon wrote:
> > When targetting ARCH_MULTIPLATFORM, we may include support for SoCs with
> > PCI-capable devices (e.g. mach-virt with virtio-pci).
> > 
> > This patch allows PCI support to be selected for these SoCs by selecting
> > CONFIG_MIGHT_HAVE_PCI when CONFIG_ARCH_MULTIPLATFORM=y.
> 
> > diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> 
> > @@ -314,6 +314,7 @@ config ARCH_MULTIPLATFORM
> >  	select CLKSRC_OF
> >  	select COMMON_CLK
> >  	select GENERIC_CLOCKEVENTS
> > +	select MIGHT_HAVE_PCI
> 
> Doesn't ARCH_MULTIPLATFORM allow ARCH_$soc to be selected, and ARCH_$soc
> selects MIGHT_HAVE_PCI?
> 
> That way, you can only enable PCI support if you have actually enabled
> an SoC that has PCI, and equally ARCH_$soc selects MIGHT_HAVE_PCI just
> like it always used to work before ARCH_MULTIPLATFORM.

Yeah, I initially had this only for mach-virt, but the last review suggested
moving it here:

  http://lists.infradead.org/pipermail/linux-arm-kernel/2014-May/252937.html

Will

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v6 1/3] ARM: kconfig: allow PCI support to be selected with ARCH_MULTIPLATFORM
  2014-05-08 15:15     ` Will Deacon
@ 2014-05-08 15:38       ` Stephen Warren
  0 siblings, 0 replies; 11+ messages in thread
From: Stephen Warren @ 2014-05-08 15:38 UTC (permalink / raw)
  To: Will Deacon
  Cc: linux-arm-kernel, arnd, linux-pci, sthokal, jgunthorpe, bhelgaas

On 05/08/2014 09:15 AM, Will Deacon wrote:
> On Thu, May 08, 2014 at 04:08:25PM +0100, Stephen Warren wrote:
>> On 05/07/2014 10:07 AM, Will Deacon wrote:
>>> When targetting ARCH_MULTIPLATFORM, we may include support for SoCs with
>>> PCI-capable devices (e.g. mach-virt with virtio-pci).
>>>
>>> This patch allows PCI support to be selected for these SoCs by selecting
>>> CONFIG_MIGHT_HAVE_PCI when CONFIG_ARCH_MULTIPLATFORM=y.
>>
>>> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
>>
>>> @@ -314,6 +314,7 @@ config ARCH_MULTIPLATFORM
>>>  	select CLKSRC_OF
>>>  	select COMMON_CLK
>>>  	select GENERIC_CLOCKEVENTS
>>> +	select MIGHT_HAVE_PCI
>>
>> Doesn't ARCH_MULTIPLATFORM allow ARCH_$soc to be selected, and ARCH_$soc
>> selects MIGHT_HAVE_PCI?
>>
>> That way, you can only enable PCI support if you have actually enabled
>> an SoC that has PCI, and equally ARCH_$soc selects MIGHT_HAVE_PCI just
>> like it always used to work before ARCH_MULTIPLATFORM.
> 
> Yeah, I initially had this only for mach-virt, but the last review suggested
> moving it here:
> 
>   http://lists.infradead.org/pipermail/linux-arm-kernel/2014-May/252937.html

Hmm. OK. I guess we should remove the select from the individual
ARCH_$soc then too?

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v6 1/3] ARM: kconfig: allow PCI support to be selected with ARCH_MULTIPLATFORM
  2014-05-07 16:07 ` [PATCH v6 1/3] ARM: kconfig: allow PCI support to be selected with ARCH_MULTIPLATFORM Will Deacon
  2014-05-08 15:08   ` Stephen Warren
@ 2014-05-14 14:01   ` Rob Herring
  2014-05-15 12:39     ` Will Deacon
  1 sibling, 1 reply; 11+ messages in thread
From: Rob Herring @ 2014-05-14 14:01 UTC (permalink / raw)
  To: Will Deacon
  Cc: linux-arm-kernel, Arnd Bergmann, linux-pci, srikanth t,
	Jason Gunthorpe, Bjorn Helgaas

On Wed, May 7, 2014 at 11:07 AM, Will Deacon <will.deacon@arm.com> wrote:
> When targetting ARCH_MULTIPLATFORM, we may include support for SoCs with
> PCI-capable devices (e.g. mach-virt with virtio-pci).
>
> This patch allows PCI support to be selected for these SoCs by selecting
> CONFIG_MIGHT_HAVE_PCI when CONFIG_ARCH_MULTIPLATFORM=y.

I generally think we should select all options for multi-platform that
only serve to hide other options like this.

You should remove the MIGHT_HAVE_PCI selections from all the
multi-platform enabled platforms as well.

Rob

>
> Signed-off-by: Will Deacon <will.deacon@arm.com>
> ---
>  arch/arm/Kconfig | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index db3c5414223e..860bea828ac4 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -314,6 +314,7 @@ config ARCH_MULTIPLATFORM
>         select CLKSRC_OF
>         select COMMON_CLK
>         select GENERIC_CLOCKEVENTS
> +       select MIGHT_HAVE_PCI
>         select MULTI_IRQ_HANDLER
>         select SPARSE_IRQ
>         select USE_OF
> --
> 1.9.2
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v6 1/3] ARM: kconfig: allow PCI support to be selected with ARCH_MULTIPLATFORM
  2014-05-14 14:01   ` Rob Herring
@ 2014-05-15 12:39     ` Will Deacon
  2014-05-15 13:16       ` Rob Herring
  0 siblings, 1 reply; 11+ messages in thread
From: Will Deacon @ 2014-05-15 12:39 UTC (permalink / raw)
  To: Rob Herring
  Cc: linux-arm-kernel, Arnd Bergmann, linux-pci, srikanth t,
	Jason Gunthorpe, Bjorn Helgaas

On Wed, May 14, 2014 at 03:01:35PM +0100, Rob Herring wrote:
> On Wed, May 7, 2014 at 11:07 AM, Will Deacon <will.deacon@arm.com> wrote:
> > When targetting ARCH_MULTIPLATFORM, we may include support for SoCs with
> > PCI-capable devices (e.g. mach-virt with virtio-pci).
> >
> > This patch allows PCI support to be selected for these SoCs by selecting
> > CONFIG_MIGHT_HAVE_PCI when CONFIG_ARCH_MULTIPLATFORM=y.
> 
> I generally think we should select all options for multi-platform that
> only serve to hide other options like this.
> 
> You should remove the MIGHT_HAVE_PCI selections from all the
> multi-platform enabled platforms as well.

Something like the diff below?

Will

--->8

diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
index 49c914cd9c7a..764c129b5eee 100644
--- a/arch/arm/mach-bcm/Kconfig
+++ b/arch/arm/mach-bcm/Kconfig
@@ -55,7 +55,6 @@ config ARCH_BCM_5301X
 	select GENERIC_CLOCKEVENTS
 	select ARM_GLOBAL_TIMER
 	select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
-	select MIGHT_HAVE_PCI
 	help
 	  Support for Broadcom BCM470X and BCM5301X SoCs with ARM CPU cores.
 
diff --git a/arch/arm/mach-cns3xxx/Kconfig b/arch/arm/mach-cns3xxx/Kconfig
index dce8decd5d46..66838f42037f 100644
--- a/arch/arm/mach-cns3xxx/Kconfig
+++ b/arch/arm/mach-cns3xxx/Kconfig
@@ -1,7 +1,6 @@
 config ARCH_CNS3XXX
 	bool "Cavium Networks CNS3XXX family" if ARCH_MULTI_V6
 	select ARM_GIC
-	select MIGHT_HAVE_PCI
 	select PCI_DOMAINS if PCI
 	help
 	  Support for Cavium Networks CNS3XXX platform.
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 5740296dc429..50bb546b893a 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -796,7 +796,6 @@ config SOC_IMX6Q
 	select ARM_ERRATA_764369 if SMP
 	select HAVE_ARM_SCU if SMP
 	select HAVE_ARM_TWD if SMP
-	select MIGHT_HAVE_PCI
 	select PCI_DOMAINS if PCI
 	select PINCTRL_IMX6Q
 	select SOC_IMX6
diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
index 3f73eecbcfb0..120301ebd324 100644
--- a/arch/arm/mach-mvebu/Kconfig
+++ b/arch/arm/mach-mvebu/Kconfig
@@ -9,7 +9,6 @@ config ARCH_MVEBU
 	select MVEBU_MBUS
 	select ZONE_DMA if ARM_LPAE
 	select ARCH_REQUIRE_GPIOLIB
-	select MIGHT_HAVE_PCI
 	select PCI_QUIRKS if PCI
 	select OF_ADDRESS_PCI
 
diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig
index 0f92ba8e7884..905003898913 100644
--- a/arch/arm/mach-shmobile/Kconfig
+++ b/arch/arm/mach-shmobile/Kconfig
@@ -8,7 +8,6 @@ config ARCH_SHMOBILE_MULTI
 	select HAVE_ARM_SCU if SMP
 	select HAVE_ARM_TWD if SMP
 	select ARM_GIC
-	select MIGHT_HAVE_PCI
 	select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE
 	select NO_IOPORT_MAP
 	select PINCTRL
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
index 55b305d51669..e16999e5b735 100644
--- a/arch/arm/mach-tegra/Kconfig
+++ b/arch/arm/mach-tegra/Kconfig
@@ -7,7 +7,6 @@ config ARCH_TEGRA
 	select CLKSRC_MMIO
 	select HAVE_ARM_SCU if SMP
 	select HAVE_ARM_TWD if SMP
-	select MIGHT_HAVE_PCI
 	select PINCTRL
 	select ARCH_HAS_RESET_CONTROLLER
 	select RESET_CONTROLLER

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH v6 1/3] ARM: kconfig: allow PCI support to be selected with ARCH_MULTIPLATFORM
  2014-05-15 12:39     ` Will Deacon
@ 2014-05-15 13:16       ` Rob Herring
  2014-05-15 13:32         ` Arnd Bergmann
  0 siblings, 1 reply; 11+ messages in thread
From: Rob Herring @ 2014-05-15 13:16 UTC (permalink / raw)
  To: Will Deacon
  Cc: linux-arm-kernel, Arnd Bergmann, linux-pci, srikanth t,
	Jason Gunthorpe, Bjorn Helgaas

On Thu, May 15, 2014 at 7:39 AM, Will Deacon <will.deacon@arm.com> wrote:
> On Wed, May 14, 2014 at 03:01:35PM +0100, Rob Herring wrote:
>> On Wed, May 7, 2014 at 11:07 AM, Will Deacon <will.deacon@arm.com> wrote:
>> > When targetting ARCH_MULTIPLATFORM, we may include support for SoCs with
>> > PCI-capable devices (e.g. mach-virt with virtio-pci).
>> >
>> > This patch allows PCI support to be selected for these SoCs by selecting
>> > CONFIG_MIGHT_HAVE_PCI when CONFIG_ARCH_MULTIPLATFORM=y.
>>
>> I generally think we should select all options for multi-platform that
>> only serve to hide other options like this.
>>
>> You should remove the MIGHT_HAVE_PCI selections from all the
>> multi-platform enabled platforms as well.
>
> Something like the diff below?

Yes, but that raises another question as to what do we do with
PCI_DOMAINS? Probably should be a PCI host driver select, or given how
little code it controls it could just be removed. Anyway, that's a
problem for another day (or patch).

So with the below part added:

Acked-by: Rob Herring <robh@kernel.org>

>
> Will
>
> --->8
>
> diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
> index 49c914cd9c7a..764c129b5eee 100644
> --- a/arch/arm/mach-bcm/Kconfig
> +++ b/arch/arm/mach-bcm/Kconfig
> @@ -55,7 +55,6 @@ config ARCH_BCM_5301X
>         select GENERIC_CLOCKEVENTS
>         select ARM_GLOBAL_TIMER
>         select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK
> -       select MIGHT_HAVE_PCI
>         help
>           Support for Broadcom BCM470X and BCM5301X SoCs with ARM CPU cores.
>
> diff --git a/arch/arm/mach-cns3xxx/Kconfig b/arch/arm/mach-cns3xxx/Kconfig
> index dce8decd5d46..66838f42037f 100644
> --- a/arch/arm/mach-cns3xxx/Kconfig
> +++ b/arch/arm/mach-cns3xxx/Kconfig
> @@ -1,7 +1,6 @@
>  config ARCH_CNS3XXX
>         bool "Cavium Networks CNS3XXX family" if ARCH_MULTI_V6
>         select ARM_GIC
> -       select MIGHT_HAVE_PCI
>         select PCI_DOMAINS if PCI
>         help
>           Support for Cavium Networks CNS3XXX platform.
> diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
> index 5740296dc429..50bb546b893a 100644
> --- a/arch/arm/mach-imx/Kconfig
> +++ b/arch/arm/mach-imx/Kconfig
> @@ -796,7 +796,6 @@ config SOC_IMX6Q
>         select ARM_ERRATA_764369 if SMP
>         select HAVE_ARM_SCU if SMP
>         select HAVE_ARM_TWD if SMP
> -       select MIGHT_HAVE_PCI
>         select PCI_DOMAINS if PCI
>         select PINCTRL_IMX6Q
>         select SOC_IMX6
> diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig
> index 3f73eecbcfb0..120301ebd324 100644
> --- a/arch/arm/mach-mvebu/Kconfig
> +++ b/arch/arm/mach-mvebu/Kconfig
> @@ -9,7 +9,6 @@ config ARCH_MVEBU
>         select MVEBU_MBUS
>         select ZONE_DMA if ARM_LPAE
>         select ARCH_REQUIRE_GPIOLIB
> -       select MIGHT_HAVE_PCI
>         select PCI_QUIRKS if PCI
>         select OF_ADDRESS_PCI
>
> diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig
> index 0f92ba8e7884..905003898913 100644
> --- a/arch/arm/mach-shmobile/Kconfig
> +++ b/arch/arm/mach-shmobile/Kconfig
> @@ -8,7 +8,6 @@ config ARCH_SHMOBILE_MULTI
>         select HAVE_ARM_SCU if SMP
>         select HAVE_ARM_TWD if SMP
>         select ARM_GIC
> -       select MIGHT_HAVE_PCI
>         select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE
>         select NO_IOPORT_MAP
>         select PINCTRL
> diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
> index 55b305d51669..e16999e5b735 100644
> --- a/arch/arm/mach-tegra/Kconfig
> +++ b/arch/arm/mach-tegra/Kconfig
> @@ -7,7 +7,6 @@ config ARCH_TEGRA
>         select CLKSRC_MMIO
>         select HAVE_ARM_SCU if SMP
>         select HAVE_ARM_TWD if SMP
> -       select MIGHT_HAVE_PCI
>         select PINCTRL
>         select ARCH_HAS_RESET_CONTROLLER
>         select RESET_CONTROLLER

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v6 1/3] ARM: kconfig: allow PCI support to be selected with ARCH_MULTIPLATFORM
  2014-05-15 13:16       ` Rob Herring
@ 2014-05-15 13:32         ` Arnd Bergmann
  0 siblings, 0 replies; 11+ messages in thread
From: Arnd Bergmann @ 2014-05-15 13:32 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: Rob Herring, Will Deacon, linux-pci, srikanth t, Jason Gunthorpe,
	Bjorn Helgaas

On Thursday 15 May 2014 08:16:16 Rob Herring wrote:
> On Thu, May 15, 2014 at 7:39 AM, Will Deacon <will.deacon@arm.com> wrote:
> > On Wed, May 14, 2014 at 03:01:35PM +0100, Rob Herring wrote:
> >> On Wed, May 7, 2014 at 11:07 AM, Will Deacon <will.deacon@arm.com> wrote:
> >> > When targetting ARCH_MULTIPLATFORM, we may include support for SoCs with
> >> > PCI-capable devices (e.g. mach-virt with virtio-pci).
> >> >
> >> > This patch allows PCI support to be selected for these SoCs by selecting
> >> > CONFIG_MIGHT_HAVE_PCI when CONFIG_ARCH_MULTIPLATFORM=y.
> >>
> >> I generally think we should select all options for multi-platform that
> >> only serve to hide other options like this.
> >>
> >> You should remove the MIGHT_HAVE_PCI selections from all the
> >> multi-platform enabled platforms as well.
> >
> > Something like the diff below?
> 
> Yes, but that raises another question as to what do we do with
> PCI_DOMAINS? Probably should be a PCI host driver select, or given how
> little code it controls it could just be removed. Anyway, that's a
> problem for another day (or patch).
> 
> So with the below part added:
> 
> Acked-by: Rob Herring <robh@kernel.org>

I think we should also 'select PCI_DOMAINS if PCI' for multiplatform, but
I agree it doesn't have to be in this patch.

	Arnd

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2014-05-15 13:33 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-07 16:07 [PATCH v6 0/3] Support for Generic PCI Host Controller Will Deacon
2014-05-07 16:07 ` [PATCH v6 1/3] ARM: kconfig: allow PCI support to be selected with ARCH_MULTIPLATFORM Will Deacon
2014-05-08 15:08   ` Stephen Warren
2014-05-08 15:15     ` Will Deacon
2014-05-08 15:38       ` Stephen Warren
2014-05-14 14:01   ` Rob Herring
2014-05-15 12:39     ` Will Deacon
2014-05-15 13:16       ` Rob Herring
2014-05-15 13:32         ` Arnd Bergmann
2014-05-07 16:07 ` [PATCH v6 2/3] PCI: ARM: add support for generic PCI host controller Will Deacon
2014-05-07 16:07 ` [PATCH v6 3/3] MAINTAINERS: add entry for generic PCI host controller driver Will Deacon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).