From: Robin Murphy <robin.murphy@arm.com> To: Sricharan R <sricharan@codeaurora.org>, will.deacon@arm.com, joro@8bytes.org, iommu@lists.linux-foundation.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, laurent.pinchart@ideasonboard.com, m.szyprowski@samsung.com, tfiga@chromium.org, srinivas.kandagatla@linaro.org, Lorenzo Pieralisi <Lorenzo.Pieralisi@arm.com> Subject: Re: [PATCH V3 4/8] drivers: platform: Configure dma operations at probe time Date: Wed, 26 Oct 2016 15:07:58 +0100 [thread overview] Message-ID: <a77ab9da-1347-49e8-6c55-071bd712729a@arm.com> (raw) In-Reply-To: <1475600632-21289-5-git-send-email-sricharan@codeaurora.org> +Lorenzo On 04/10/16 18:03, Sricharan R wrote: > Configuring DMA ops at probe time will allow deferring device probe when > the IOMMU isn't available yet. The dma_configure for the device is now called > from the generic device_attach callback just before the bus/driver probe > is called. This way, configuring the dma ops for the device would be called > at the same place for all bus_types, hence the deferred probing mechanism > should work for all buses as well. > > pci_bus_add_devices (platform/amba)(_device_create/driver_register) > | | > pci_bus_add_device (device_add/driver_register) > | | > device_attach device_initial_probe > | | > __device_attach_driver __device_attach_driver > | > driver_probe_device > | > really_probe > | > dma_configure > > Similarly on the device/driver_unregister path __device_release_driver is > called which inturn calls dma_deconfigure. > > Signed-off-by: Sricharan R <sricharan@codeaurora.org> > --- > drivers/base/dd.c | 10 ++++++++++ > drivers/base/dma-mapping.c | 11 +++++++++++ > drivers/of/platform.c | 4 ---- > drivers/pci/probe.c | 5 +---- > include/linux/dma-mapping.h | 3 +++ > 5 files changed, 25 insertions(+), 8 deletions(-) > > diff --git a/drivers/base/dd.c b/drivers/base/dd.c > index 16688f5..cfebd48 100644 > --- a/drivers/base/dd.c > +++ b/drivers/base/dd.c > @@ -19,6 +19,7 @@ > > #include <linux/device.h> > #include <linux/delay.h> > +#include <linux/dma-mapping.h> > #include <linux/module.h> > #include <linux/kthread.h> > #include <linux/wait.h> > @@ -353,6 +354,10 @@ static int really_probe(struct device *dev, struct device_driver *drv) > if (ret) > goto pinctrl_bind_failed; > > + ret = dma_configure(dev); > + if (ret) > + goto dma_failed; > + > if (driver_sysfs_add(dev)) { > printk(KERN_ERR "%s: driver_sysfs_add(%s) failed\n", > __func__, dev_name(dev)); > @@ -395,6 +400,8 @@ static int really_probe(struct device *dev, struct device_driver *drv) > goto done; > > probe_failed: > + dma_deconfigure(dev); > +dma_failed: > if (dev->bus) > blocking_notifier_call_chain(&dev->bus->p->bus_notifier, > BUS_NOTIFY_DRIVER_NOT_BOUND, dev); > @@ -780,6 +787,9 @@ static void __device_release_driver(struct device *dev) > dev->bus->remove(dev); > else if (drv->remove) > drv->remove(dev); > + > + dma_deconfigure(dev); > + > devres_release_all(dev); > dev->driver = NULL; > dev_set_drvdata(dev, NULL); > diff --git a/drivers/base/dma-mapping.c b/drivers/base/dma-mapping.c > index d799662..54e87f5 100644 > --- a/drivers/base/dma-mapping.c > +++ b/drivers/base/dma-mapping.c > @@ -10,6 +10,7 @@ > #include <linux/dma-mapping.h> > #include <linux/export.h> > #include <linux/gfp.h> > +#include <linux/of_device.h> > #include <linux/slab.h> > #include <linux/vmalloc.h> > > @@ -166,6 +167,16 @@ void dmam_free_noncoherent(struct device *dev, size_t size, void *vaddr, > } > EXPORT_SYMBOL(dmam_free_noncoherent); > > +int dma_configure(struct device *dev) > +{ > + return of_dma_configure(dev, dev->of_node); > +} > + > +void dma_deconfigure(struct device *dev) > +{ > + of_dma_deconfigure(dev); > +} > + > #ifdef CONFIG_HAVE_GENERIC_DMA_COHERENT > > static void dmam_coherent_decl_release(struct device *dev, void *res) > diff --git a/drivers/of/platform.c b/drivers/of/platform.c > index 9cb7090..adbd77c 100644 > --- a/drivers/of/platform.c > +++ b/drivers/of/platform.c > @@ -181,11 +181,9 @@ static struct platform_device *of_platform_device_create_pdata( > > dev->dev.bus = &platform_bus_type; > dev->dev.platform_data = platform_data; > - of_dma_configure(&dev->dev, dev->dev.of_node); > of_msi_configure(&dev->dev, dev->dev.of_node); > > if (of_device_add(dev) != 0) { > - of_dma_deconfigure(&dev->dev); > platform_device_put(dev); > goto err_clear_flag; > } > @@ -242,7 +240,6 @@ static struct amba_device *of_amba_device_create(struct device_node *node, > dev_set_name(&dev->dev, "%s", bus_id); > else > of_device_make_bus_id(&dev->dev); > - of_dma_configure(&dev->dev, dev->dev.of_node); > > /* Allow the HW Peripheral ID to be overridden */ > prop = of_get_property(node, "arm,primecell-periphid", NULL); > @@ -536,7 +533,6 @@ static int of_platform_device_destroy(struct device *dev, void *data) > amba_device_unregister(to_amba_device(dev)); > #endif > > - of_dma_deconfigure(dev); > of_node_clear_flag(dev->of_node, OF_POPULATED); > of_node_clear_flag(dev->of_node, OF_POPULATED_BUS); > return 0; > diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c > index 93f280d..85c9553 100644 > --- a/drivers/pci/probe.c > +++ b/drivers/pci/probe.c > @@ -1724,10 +1724,7 @@ static void pci_dma_configure(struct pci_dev *dev) > { > struct device *bridge = pci_get_host_bridge_device(dev); > > - if (IS_ENABLED(CONFIG_OF) && > - bridge->parent && bridge->parent->of_node) { > - of_dma_configure(&dev->dev, bridge->parent->of_node); > - } else if (has_acpi_companion(bridge)) { > + if (has_acpi_companion(bridge)) { > struct acpi_device *adev = to_acpi_device_node(bridge->fwnode); > enum dev_dma_attr attr = acpi_get_dma_attr(adev); It seems a bit awkward leaving pci_dma_configure here, doing DMA configuration at device add, after we've allegedly moved DMA configuration to driver probe. Lorenzo, do you foresee any issues if this probe-time of_dma_configure() path were to also multiplex acpi_dma_configure() in future, such that everything would be back in the same place eventually? Conversely, is there actually any issue with leaving pci_dma_configure() unchanged, and simply moving the call from pci_device_add() into dma_configure()? Robin. > diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h > index 66533e1..2766dbe 100644 > --- a/include/linux/dma-mapping.h > +++ b/include/linux/dma-mapping.h > @@ -656,6 +656,9 @@ dma_mark_declared_memory_occupied(struct device *dev, > } > #endif /* CONFIG_HAVE_GENERIC_DMA_COHERENT */ > > +int dma_configure(struct device *dev); > +void dma_deconfigure(struct device *dev); > + > /* > * Managed DMA API > */ >
WARNING: multiple messages have this Message-ID (diff)
From: robin.murphy@arm.com (Robin Murphy) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH V3 4/8] drivers: platform: Configure dma operations at probe time Date: Wed, 26 Oct 2016 15:07:58 +0100 [thread overview] Message-ID: <a77ab9da-1347-49e8-6c55-071bd712729a@arm.com> (raw) In-Reply-To: <1475600632-21289-5-git-send-email-sricharan@codeaurora.org> +Lorenzo On 04/10/16 18:03, Sricharan R wrote: > Configuring DMA ops at probe time will allow deferring device probe when > the IOMMU isn't available yet. The dma_configure for the device is now called > from the generic device_attach callback just before the bus/driver probe > is called. This way, configuring the dma ops for the device would be called > at the same place for all bus_types, hence the deferred probing mechanism > should work for all buses as well. > > pci_bus_add_devices (platform/amba)(_device_create/driver_register) > | | > pci_bus_add_device (device_add/driver_register) > | | > device_attach device_initial_probe > | | > __device_attach_driver __device_attach_driver > | > driver_probe_device > | > really_probe > | > dma_configure > > Similarly on the device/driver_unregister path __device_release_driver is > called which inturn calls dma_deconfigure. > > Signed-off-by: Sricharan R <sricharan@codeaurora.org> > --- > drivers/base/dd.c | 10 ++++++++++ > drivers/base/dma-mapping.c | 11 +++++++++++ > drivers/of/platform.c | 4 ---- > drivers/pci/probe.c | 5 +---- > include/linux/dma-mapping.h | 3 +++ > 5 files changed, 25 insertions(+), 8 deletions(-) > > diff --git a/drivers/base/dd.c b/drivers/base/dd.c > index 16688f5..cfebd48 100644 > --- a/drivers/base/dd.c > +++ b/drivers/base/dd.c > @@ -19,6 +19,7 @@ > > #include <linux/device.h> > #include <linux/delay.h> > +#include <linux/dma-mapping.h> > #include <linux/module.h> > #include <linux/kthread.h> > #include <linux/wait.h> > @@ -353,6 +354,10 @@ static int really_probe(struct device *dev, struct device_driver *drv) > if (ret) > goto pinctrl_bind_failed; > > + ret = dma_configure(dev); > + if (ret) > + goto dma_failed; > + > if (driver_sysfs_add(dev)) { > printk(KERN_ERR "%s: driver_sysfs_add(%s) failed\n", > __func__, dev_name(dev)); > @@ -395,6 +400,8 @@ static int really_probe(struct device *dev, struct device_driver *drv) > goto done; > > probe_failed: > + dma_deconfigure(dev); > +dma_failed: > if (dev->bus) > blocking_notifier_call_chain(&dev->bus->p->bus_notifier, > BUS_NOTIFY_DRIVER_NOT_BOUND, dev); > @@ -780,6 +787,9 @@ static void __device_release_driver(struct device *dev) > dev->bus->remove(dev); > else if (drv->remove) > drv->remove(dev); > + > + dma_deconfigure(dev); > + > devres_release_all(dev); > dev->driver = NULL; > dev_set_drvdata(dev, NULL); > diff --git a/drivers/base/dma-mapping.c b/drivers/base/dma-mapping.c > index d799662..54e87f5 100644 > --- a/drivers/base/dma-mapping.c > +++ b/drivers/base/dma-mapping.c > @@ -10,6 +10,7 @@ > #include <linux/dma-mapping.h> > #include <linux/export.h> > #include <linux/gfp.h> > +#include <linux/of_device.h> > #include <linux/slab.h> > #include <linux/vmalloc.h> > > @@ -166,6 +167,16 @@ void dmam_free_noncoherent(struct device *dev, size_t size, void *vaddr, > } > EXPORT_SYMBOL(dmam_free_noncoherent); > > +int dma_configure(struct device *dev) > +{ > + return of_dma_configure(dev, dev->of_node); > +} > + > +void dma_deconfigure(struct device *dev) > +{ > + of_dma_deconfigure(dev); > +} > + > #ifdef CONFIG_HAVE_GENERIC_DMA_COHERENT > > static void dmam_coherent_decl_release(struct device *dev, void *res) > diff --git a/drivers/of/platform.c b/drivers/of/platform.c > index 9cb7090..adbd77c 100644 > --- a/drivers/of/platform.c > +++ b/drivers/of/platform.c > @@ -181,11 +181,9 @@ static struct platform_device *of_platform_device_create_pdata( > > dev->dev.bus = &platform_bus_type; > dev->dev.platform_data = platform_data; > - of_dma_configure(&dev->dev, dev->dev.of_node); > of_msi_configure(&dev->dev, dev->dev.of_node); > > if (of_device_add(dev) != 0) { > - of_dma_deconfigure(&dev->dev); > platform_device_put(dev); > goto err_clear_flag; > } > @@ -242,7 +240,6 @@ static struct amba_device *of_amba_device_create(struct device_node *node, > dev_set_name(&dev->dev, "%s", bus_id); > else > of_device_make_bus_id(&dev->dev); > - of_dma_configure(&dev->dev, dev->dev.of_node); > > /* Allow the HW Peripheral ID to be overridden */ > prop = of_get_property(node, "arm,primecell-periphid", NULL); > @@ -536,7 +533,6 @@ static int of_platform_device_destroy(struct device *dev, void *data) > amba_device_unregister(to_amba_device(dev)); > #endif > > - of_dma_deconfigure(dev); > of_node_clear_flag(dev->of_node, OF_POPULATED); > of_node_clear_flag(dev->of_node, OF_POPULATED_BUS); > return 0; > diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c > index 93f280d..85c9553 100644 > --- a/drivers/pci/probe.c > +++ b/drivers/pci/probe.c > @@ -1724,10 +1724,7 @@ static void pci_dma_configure(struct pci_dev *dev) > { > struct device *bridge = pci_get_host_bridge_device(dev); > > - if (IS_ENABLED(CONFIG_OF) && > - bridge->parent && bridge->parent->of_node) { > - of_dma_configure(&dev->dev, bridge->parent->of_node); > - } else if (has_acpi_companion(bridge)) { > + if (has_acpi_companion(bridge)) { > struct acpi_device *adev = to_acpi_device_node(bridge->fwnode); > enum dev_dma_attr attr = acpi_get_dma_attr(adev); It seems a bit awkward leaving pci_dma_configure here, doing DMA configuration at device add, after we've allegedly moved DMA configuration to driver probe. Lorenzo, do you foresee any issues if this probe-time of_dma_configure() path were to also multiplex acpi_dma_configure() in future, such that everything would be back in the same place eventually? Conversely, is there actually any issue with leaving pci_dma_configure() unchanged, and simply moving the call from pci_device_add() into dma_configure()? Robin. > diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h > index 66533e1..2766dbe 100644 > --- a/include/linux/dma-mapping.h > +++ b/include/linux/dma-mapping.h > @@ -656,6 +656,9 @@ dma_mark_declared_memory_occupied(struct device *dev, > } > #endif /* CONFIG_HAVE_GENERIC_DMA_COHERENT */ > > +int dma_configure(struct device *dev); > +void dma_deconfigure(struct device *dev); > + > /* > * Managed DMA API > */ >
next prev parent reply other threads:[~2016-10-26 14:08 UTC|newest] Thread overview: 118+ messages / expand[flat|nested] mbox.gz Atom feed top [not found] <CGME20161004170414eucas1p141bebe16e1bf241862833e7ad0270c72@eucas1p1.samsung.com> 2016-10-04 17:03 ` [PATCH V3 0/8] IOMMU probe deferral support Sricharan R 2016-10-04 17:03 ` Sricharan R [not found] ` <1475600632-21289-1-git-send-email-sricharan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2016-10-04 17:03 ` [PATCH V3 1/8] arm: dma-mapping: Don't override dma_ops in arch_setup_dma_ops() Sricharan R 2016-10-04 17:03 ` Sricharan R 2016-10-04 17:03 ` [PATCH V3 4/8] drivers: platform: Configure dma operations at probe time Sricharan R 2016-10-04 17:03 ` Sricharan R 2016-10-26 14:07 ` Robin Murphy [this message] 2016-10-26 14:07 ` Robin Murphy 2016-10-26 15:04 ` Sricharan 2016-10-26 15:04 ` Sricharan 2016-10-27 10:49 ` Lorenzo Pieralisi 2016-10-27 10:49 ` Lorenzo Pieralisi 2016-11-02 7:05 ` Sricharan 2016-11-02 7:05 ` Sricharan 2016-10-04 17:03 ` [PATCH V3 6/8] arm: dma-mapping: Reset the device's dma_ops Sricharan R 2016-10-04 17:03 ` Sricharan R 2016-10-26 15:07 ` Robin Murphy 2016-10-26 15:07 ` Robin Murphy [not found] ` <a3d4533f-165d-f444-7681-141479617a18-5wv7dgnIgG8@public.gmane.org> 2016-10-27 3:37 ` Sricharan 2016-10-27 3:37 ` Sricharan 2017-05-23 16:25 ` Russell King - ARM Linux 2017-05-23 16:25 ` Russell King - ARM Linux [not found] ` <20170523162507.GA1729-l+eeeJia6m9URfEZ8mYm6t73F7V6hmMc@public.gmane.org> 2017-05-23 16:55 ` Robin Murphy 2017-05-23 16:55 ` Robin Murphy 2017-05-23 17:53 ` Russell King - ARM Linux 2017-05-23 17:53 ` Russell King - ARM Linux [not found] ` <20170523175319.GA22219-l+eeeJia6m9URfEZ8mYm6t73F7V6hmMc@public.gmane.org> 2017-05-23 21:46 ` Laurent Pinchart 2017-05-23 21:46 ` Laurent Pinchart 2017-05-23 22:42 ` Russell King - ARM Linux 2017-05-23 22:42 ` Russell King - ARM Linux [not found] ` <20170523224216.GI22219-l+eeeJia6m9URfEZ8mYm6t73F7V6hmMc@public.gmane.org> 2017-05-24 10:31 ` Sricharan R 2017-05-24 10:31 ` Sricharan R [not found] ` <c4ad7341-fa9f-81b7-a41c-417144c4f842-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2017-05-24 11:26 ` Laurent Pinchart 2017-05-24 11:26 ` Laurent Pinchart 2017-05-24 11:38 ` Sricharan R 2017-05-24 11:38 ` Sricharan R 2017-05-25 15:05 ` Russell King - ARM Linux 2017-05-25 15:05 ` Russell King - ARM Linux [not found] ` <20170525150540.GJ22219-l+eeeJia6m9URfEZ8mYm6t73F7V6hmMc@public.gmane.org> 2017-05-26 5:18 ` Sricharan R 2017-05-26 5:18 ` Sricharan R 2017-05-26 14:04 ` Laurent Pinchart 2017-05-26 14:04 ` Laurent Pinchart 2016-10-10 12:36 ` [PATCH V3 0/8] IOMMU probe deferral support Marek Szyprowski 2016-10-10 12:36 ` Marek Szyprowski 2016-10-17 6:58 ` Sricharan 2016-10-17 6:58 ` Sricharan [not found] ` <12cfb59f-f7ca-d4df-eb7f-42348e357979-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 2016-10-12 6:24 ` Sricharan 2016-10-12 6:24 ` Sricharan 2016-10-24 6:34 ` Marek Szyprowski 2016-10-24 6:34 ` Marek Szyprowski [not found] ` <b9e4e81f-3b3e-951f-df62-d640275aae71-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 2016-10-24 12:30 ` Sricharan 2016-10-24 12:30 ` Sricharan 2016-10-17 7:02 ` Sricharan 2016-10-17 7:02 ` Sricharan 2016-10-25 6:25 ` Archit Taneja 2016-10-25 6:25 ` Archit Taneja 2016-10-04 17:03 ` [PATCH V3 2/8] of: dma: Move range size workaround to of_dma_get_range() Sricharan R 2016-10-04 17:03 ` Sricharan R 2016-10-04 17:03 ` [PATCH V3 3/8] of: dma: Make of_dma_deconfigure() public Sricharan R 2016-10-04 17:03 ` Sricharan R 2016-10-04 17:03 ` [PATCH V3 5/8] iommu: of: Handle IOMMU lookup failure with deferred probing or error Sricharan R 2016-10-04 17:03 ` Sricharan R [not found] ` <1475600632-21289-6-git-send-email-sricharan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2016-10-26 14:52 ` Robin Murphy 2016-10-26 14:52 ` Robin Murphy [not found] ` <f08e65b4-f755-897c-f776-40f0d6788251-5wv7dgnIgG8@public.gmane.org> 2016-10-27 2:55 ` Sricharan 2016-10-27 2:55 ` Sricharan 2016-10-04 17:03 ` [PATCH V3 7/8] arm/arm64: dma-mapping: Call iommu's remove_device callback during device detach Sricharan R 2016-10-04 17:03 ` Sricharan R [not found] ` <1475600632-21289-8-git-send-email-sricharan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2016-10-26 15:16 ` Robin Murphy 2016-10-26 15:16 ` Robin Murphy 2016-10-27 5:16 ` Sricharan 2016-10-27 5:16 ` Sricharan 2016-10-04 17:03 ` [PATCH V3 8/8] arm64: dma-mapping: Remove the notifier trick to handle early setting of dma_ops Sricharan R 2016-10-04 17:03 ` Sricharan R [not found] ` <1475600632-21289-9-git-send-email-sricharan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2016-10-07 15:40 ` Sricharan 2016-10-07 15:40 ` Sricharan 2016-10-26 15:34 ` Robin Murphy 2016-10-26 15:34 ` Robin Murphy 2016-10-27 5:19 ` Sricharan 2016-10-27 5:19 ` Sricharan 2016-10-25 14:35 ` [PATCH V3 0/8] IOMMU probe deferral support Robin Murphy 2016-10-25 14:35 ` Robin Murphy [not found] ` <60ee8066-f167-e9df-ae3e-4138f1133bad-5wv7dgnIgG8@public.gmane.org> 2016-10-26 14:44 ` Sricharan 2016-10-26 14:44 ` Sricharan 2016-10-26 17:14 ` Robin Murphy 2016-10-26 17:14 ` Robin Murphy [not found] ` <421e2b14-0231-d376-02a0-097423120b3d-5wv7dgnIgG8@public.gmane.org> 2016-10-27 8:37 ` Sricharan 2016-10-27 8:37 ` Sricharan 2016-11-03 22:25 ` Sricharan 2016-11-03 22:25 ` Sricharan 2016-11-04 15:16 ` Sricharan 2016-11-04 15:16 ` Sricharan 2016-11-07 19:13 ` Will Deacon 2016-11-07 19:13 ` Will Deacon 2016-11-07 19:22 ` Robin Murphy 2016-11-07 19:22 ` Robin Murphy 2016-11-09 6:24 ` Sricharan 2016-11-09 6:24 ` Sricharan 2016-11-09 16:59 ` Will Deacon 2016-11-09 16:59 ` Will Deacon 2016-11-14 3:41 ` Sricharan 2016-11-14 3:41 ` Sricharan 2016-11-20 15:11 ` Sricharan 2016-11-20 15:11 ` Sricharan 2016-11-23 19:54 ` Robin Murphy 2016-11-23 19:54 ` Robin Murphy [not found] ` <918128b9-cdb0-1454-000a-146cee7a05ea-5wv7dgnIgG8@public.gmane.org> 2016-11-24 16:10 ` Sricharan 2016-11-24 16:10 ` Sricharan 2016-11-24 19:11 ` Robin Murphy 2016-11-24 19:11 ` Robin Murphy 2016-11-28 17:42 ` Sricharan 2016-11-28 17:42 ` Sricharan 2016-11-28 18:13 ` Lorenzo Pieralisi 2016-11-28 18:13 ` Lorenzo Pieralisi 2016-11-30 0:34 ` Sricharan 2016-11-30 0:34 ` Sricharan 2016-11-30 12:07 ` Lorenzo Pieralisi 2016-11-30 12:07 ` Lorenzo Pieralisi
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=a77ab9da-1347-49e8-6c55-071bd712729a@arm.com \ --to=robin.murphy@arm.com \ --cc=Lorenzo.Pieralisi@arm.com \ --cc=iommu@lists.linux-foundation.org \ --cc=joro@8bytes.org \ --cc=laurent.pinchart@ideasonboard.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-arm-msm@vger.kernel.org \ --cc=m.szyprowski@samsung.com \ --cc=sricharan@codeaurora.org \ --cc=srinivas.kandagatla@linaro.org \ --cc=tfiga@chromium.org \ --cc=will.deacon@arm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.