From: Robin Murphy <robin.murphy@arm.com> To: Tomasz Nowicki <tn@semihalf.com>, Sricharan R <sricharan@codeaurora.org>, will.deacon@arm.com, joro@8bytes.org, lorenzo.pieralisi@arm.com, iommu@lists.linux-foundation.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, m.szyprowski@samsung.com, bhelgaas@google.com, linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org Subject: Re: [PATCH V7 01/11] iommu/of: Refactor of_iommu_configure() for error handling Date: Wed, 25 Jan 2017 17:35:53 +0000 [thread overview] Message-ID: <c7bad124-d9f2-0ddf-168f-0b1950d3e1ed@arm.com> (raw) In-Reply-To: <4388779a-0e83-fadc-83f4-98c46c88d42e@semihalf.com> Hi Tomasz, On 25/01/17 17:17, Tomasz Nowicki wrote: > Hi Sricharan, > > On 23.01.2017 17:18, Sricharan R wrote: >> From: Robin Murphy <robin.murphy@arm.com> >> >> In preparation for some upcoming cleverness, rework the control flow in >> of_iommu_configure() to minimise duplication and improve the propogation >> of errors. It's also as good a time as any to switch over from the >> now-just-a-compatibility-wrapper of_iommu_get_ops() to using the generic >> IOMMU instance interface directly. >> >> Signed-off-by: Robin Murphy <robin.murphy@arm.com> >> --- >> drivers/iommu/of_iommu.c | 83 >> +++++++++++++++++++++++++++++++----------------- >> 1 file changed, 53 insertions(+), 30 deletions(-) >> >> diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c >> index 0f57ddc..ee49081 100644 >> --- a/drivers/iommu/of_iommu.c >> +++ b/drivers/iommu/of_iommu.c >> @@ -96,6 +96,28 @@ int of_get_dma_window(struct device_node *dn, const >> char *prefix, int index, >> } >> EXPORT_SYMBOL_GPL(of_get_dma_window); >> >> +static const struct iommu_ops >> +*of_iommu_xlate(struct device *dev, struct of_phandle_args *iommu_spec) >> +{ >> + const struct iommu_ops *ops; >> + struct fwnode_handle *fwnode = &iommu_spec->np->fwnode; >> + int err; >> + >> + ops = iommu_get_instance(fwnode); >> + if (!ops || !ops->of_xlate) >> + return NULL; >> + >> + err = iommu_fwspec_init(dev, &iommu_spec->np->fwnode, ops); >> + if (err) >> + return ERR_PTR(err); >> + >> + err = ops->of_xlate(dev, iommu_spec); >> + if (err) >> + return ERR_PTR(err); >> + >> + return ops; >> +} >> + >> static int __get_pci_rid(struct pci_dev *pdev, u16 alias, void *data) >> { >> struct of_phandle_args *iommu_spec = data; >> @@ -105,10 +127,11 @@ static int __get_pci_rid(struct pci_dev *pdev, >> u16 alias, void *data) >> } >> >> static const struct iommu_ops >> -*of_pci_iommu_configure(struct pci_dev *pdev, struct device_node >> *bridge_np) >> +*of_pci_iommu_init(struct pci_dev *pdev, struct device_node *bridge_np) >> { >> const struct iommu_ops *ops; >> struct of_phandle_args iommu_spec; >> + int err; >> >> /* >> * Start by tracing the RID alias down the PCI topology as >> @@ -123,56 +146,56 @@ static int __get_pci_rid(struct pci_dev *pdev, >> u16 alias, void *data) >> * bus into the system beyond, and which IOMMU it ends up at. >> */ >> iommu_spec.np = NULL; >> - if (of_pci_map_rid(bridge_np, iommu_spec.args[0], "iommu-map", >> - "iommu-map-mask", &iommu_spec.np, iommu_spec.args)) >> - return NULL; >> + err = of_pci_map_rid(bridge_np, iommu_spec.args[0], "iommu-map", >> + "iommu-map-mask", &iommu_spec.np, >> + iommu_spec.args); >> + if (err) >> + return ERR_PTR(err); >> >> - ops = of_iommu_get_ops(iommu_spec.np); >> - if (!ops || !ops->of_xlate || >> - iommu_fwspec_init(&pdev->dev, &iommu_spec.np->fwnode, ops) || >> - ops->of_xlate(&pdev->dev, &iommu_spec)) >> - ops = NULL; >> + ops = of_iommu_xlate(&pdev->dev, &iommu_spec); >> >> of_node_put(iommu_spec.np); >> return ops; >> } >> >> -const struct iommu_ops *of_iommu_configure(struct device *dev, >> - struct device_node *master_np) >> +static const struct iommu_ops >> +*of_platform_iommu_init(struct device *dev, struct device_node *np) >> { >> struct of_phandle_args iommu_spec; >> - struct device_node *np; >> const struct iommu_ops *ops = NULL; >> int idx = 0; >> >> - if (dev_is_pci(dev)) >> - return of_pci_iommu_configure(to_pci_dev(dev), master_np); >> - >> /* >> * We don't currently walk up the tree looking for a parent IOMMU. >> * See the `Notes:' section of >> * Documentation/devicetree/bindings/iommu/iommu.txt >> */ >> - while (!of_parse_phandle_with_args(master_np, "iommus", >> - "#iommu-cells", idx, >> - &iommu_spec)) { >> - np = iommu_spec.np; >> - ops = of_iommu_get_ops(np); >> - >> - if (!ops || !ops->of_xlate || >> - iommu_fwspec_init(dev, &np->fwnode, ops) || >> - ops->of_xlate(dev, &iommu_spec)) >> - goto err_put_node; >> - >> - of_node_put(np); >> + while (!of_parse_phandle_with_args(np, "iommus", "#iommu-cells", >> + idx, &iommu_spec)) { >> + ops = of_iommu_xlate(dev, &iommu_spec); >> + of_node_put(iommu_spec.np); >> idx++; >> + if (IS_ERR_OR_NULL(ops)) >> + break; >> } >> >> return ops; >> +} >> + >> +const struct iommu_ops *of_iommu_configure(struct device *dev, >> + struct device_node *master_np) >> +{ >> + const struct iommu_ops *ops; >> + >> + if (!master_np) >> + return NULL; >> + >> + if (dev_is_pci(dev)) >> + ops = of_pci_iommu_init(to_pci_dev(dev), master_np); > > I gave the whole patch set a try on ThunderX. really_probe() is failing > on dma_configure()->of_pci_iommu_init() for each PCI device. When you say "failing", do you mean cleanly, or with a crash? I've managed to hit __of_match_node() dereferencing NULL from of_iommu_xlate() in a horribly complicated chain of events, which I'm trying to figure out now, and I wonder if the two might be related. > of_pci_iommu_init() tries to setup firmware stuff via "iommu-map" but > ThunderX is using legacy "mmu-masters" binding. We need to take care of > that case too. That is by design. The "mmu-masters" binding is ARM-SMMU-specific and will continue to provide the same level of DMA ops support it always has (for which there really are practical implementation reasons, it's not just an arbitrary "encourage people to move to the generic bindings" decision). Robin. >> + else >> + ops = of_platform_iommu_init(dev, master_np); >> >> -err_put_node: >> - of_node_put(np); >> - return NULL; >> + return IS_ERR(ops) ? NULL : ops; >> } >> >> static int __init of_iommu_init(void) >> > > Thanks, > Tomasz
WARNING: multiple messages have this Message-ID (diff)
From: robin.murphy@arm.com (Robin Murphy) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH V7 01/11] iommu/of: Refactor of_iommu_configure() for error handling Date: Wed, 25 Jan 2017 17:35:53 +0000 [thread overview] Message-ID: <c7bad124-d9f2-0ddf-168f-0b1950d3e1ed@arm.com> (raw) In-Reply-To: <4388779a-0e83-fadc-83f4-98c46c88d42e@semihalf.com> Hi Tomasz, On 25/01/17 17:17, Tomasz Nowicki wrote: > Hi Sricharan, > > On 23.01.2017 17:18, Sricharan R wrote: >> From: Robin Murphy <robin.murphy@arm.com> >> >> In preparation for some upcoming cleverness, rework the control flow in >> of_iommu_configure() to minimise duplication and improve the propogation >> of errors. It's also as good a time as any to switch over from the >> now-just-a-compatibility-wrapper of_iommu_get_ops() to using the generic >> IOMMU instance interface directly. >> >> Signed-off-by: Robin Murphy <robin.murphy@arm.com> >> --- >> drivers/iommu/of_iommu.c | 83 >> +++++++++++++++++++++++++++++++----------------- >> 1 file changed, 53 insertions(+), 30 deletions(-) >> >> diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c >> index 0f57ddc..ee49081 100644 >> --- a/drivers/iommu/of_iommu.c >> +++ b/drivers/iommu/of_iommu.c >> @@ -96,6 +96,28 @@ int of_get_dma_window(struct device_node *dn, const >> char *prefix, int index, >> } >> EXPORT_SYMBOL_GPL(of_get_dma_window); >> >> +static const struct iommu_ops >> +*of_iommu_xlate(struct device *dev, struct of_phandle_args *iommu_spec) >> +{ >> + const struct iommu_ops *ops; >> + struct fwnode_handle *fwnode = &iommu_spec->np->fwnode; >> + int err; >> + >> + ops = iommu_get_instance(fwnode); >> + if (!ops || !ops->of_xlate) >> + return NULL; >> + >> + err = iommu_fwspec_init(dev, &iommu_spec->np->fwnode, ops); >> + if (err) >> + return ERR_PTR(err); >> + >> + err = ops->of_xlate(dev, iommu_spec); >> + if (err) >> + return ERR_PTR(err); >> + >> + return ops; >> +} >> + >> static int __get_pci_rid(struct pci_dev *pdev, u16 alias, void *data) >> { >> struct of_phandle_args *iommu_spec = data; >> @@ -105,10 +127,11 @@ static int __get_pci_rid(struct pci_dev *pdev, >> u16 alias, void *data) >> } >> >> static const struct iommu_ops >> -*of_pci_iommu_configure(struct pci_dev *pdev, struct device_node >> *bridge_np) >> +*of_pci_iommu_init(struct pci_dev *pdev, struct device_node *bridge_np) >> { >> const struct iommu_ops *ops; >> struct of_phandle_args iommu_spec; >> + int err; >> >> /* >> * Start by tracing the RID alias down the PCI topology as >> @@ -123,56 +146,56 @@ static int __get_pci_rid(struct pci_dev *pdev, >> u16 alias, void *data) >> * bus into the system beyond, and which IOMMU it ends up at. >> */ >> iommu_spec.np = NULL; >> - if (of_pci_map_rid(bridge_np, iommu_spec.args[0], "iommu-map", >> - "iommu-map-mask", &iommu_spec.np, iommu_spec.args)) >> - return NULL; >> + err = of_pci_map_rid(bridge_np, iommu_spec.args[0], "iommu-map", >> + "iommu-map-mask", &iommu_spec.np, >> + iommu_spec.args); >> + if (err) >> + return ERR_PTR(err); >> >> - ops = of_iommu_get_ops(iommu_spec.np); >> - if (!ops || !ops->of_xlate || >> - iommu_fwspec_init(&pdev->dev, &iommu_spec.np->fwnode, ops) || >> - ops->of_xlate(&pdev->dev, &iommu_spec)) >> - ops = NULL; >> + ops = of_iommu_xlate(&pdev->dev, &iommu_spec); >> >> of_node_put(iommu_spec.np); >> return ops; >> } >> >> -const struct iommu_ops *of_iommu_configure(struct device *dev, >> - struct device_node *master_np) >> +static const struct iommu_ops >> +*of_platform_iommu_init(struct device *dev, struct device_node *np) >> { >> struct of_phandle_args iommu_spec; >> - struct device_node *np; >> const struct iommu_ops *ops = NULL; >> int idx = 0; >> >> - if (dev_is_pci(dev)) >> - return of_pci_iommu_configure(to_pci_dev(dev), master_np); >> - >> /* >> * We don't currently walk up the tree looking for a parent IOMMU. >> * See the `Notes:' section of >> * Documentation/devicetree/bindings/iommu/iommu.txt >> */ >> - while (!of_parse_phandle_with_args(master_np, "iommus", >> - "#iommu-cells", idx, >> - &iommu_spec)) { >> - np = iommu_spec.np; >> - ops = of_iommu_get_ops(np); >> - >> - if (!ops || !ops->of_xlate || >> - iommu_fwspec_init(dev, &np->fwnode, ops) || >> - ops->of_xlate(dev, &iommu_spec)) >> - goto err_put_node; >> - >> - of_node_put(np); >> + while (!of_parse_phandle_with_args(np, "iommus", "#iommu-cells", >> + idx, &iommu_spec)) { >> + ops = of_iommu_xlate(dev, &iommu_spec); >> + of_node_put(iommu_spec.np); >> idx++; >> + if (IS_ERR_OR_NULL(ops)) >> + break; >> } >> >> return ops; >> +} >> + >> +const struct iommu_ops *of_iommu_configure(struct device *dev, >> + struct device_node *master_np) >> +{ >> + const struct iommu_ops *ops; >> + >> + if (!master_np) >> + return NULL; >> + >> + if (dev_is_pci(dev)) >> + ops = of_pci_iommu_init(to_pci_dev(dev), master_np); > > I gave the whole patch set a try on ThunderX. really_probe() is failing > on dma_configure()->of_pci_iommu_init() for each PCI device. When you say "failing", do you mean cleanly, or with a crash? I've managed to hit __of_match_node() dereferencing NULL from of_iommu_xlate() in a horribly complicated chain of events, which I'm trying to figure out now, and I wonder if the two might be related. > of_pci_iommu_init() tries to setup firmware stuff via "iommu-map" but > ThunderX is using legacy "mmu-masters" binding. We need to take care of > that case too. That is by design. The "mmu-masters" binding is ARM-SMMU-specific and will continue to provide the same level of DMA ops support it always has (for which there really are practical implementation reasons, it's not just an arbitrary "encourage people to move to the generic bindings" decision). Robin. >> + else >> + ops = of_platform_iommu_init(dev, master_np); >> >> -err_put_node: >> - of_node_put(np); >> - return NULL; >> + return IS_ERR(ops) ? NULL : ops; >> } >> >> static int __init of_iommu_init(void) >> > > Thanks, > Tomasz
next prev parent reply other threads:[~2017-01-25 17:35 UTC|newest] Thread overview: 147+ messages / expand[flat|nested] mbox.gz Atom feed top [not found] <CGME20170123161926epcas2p1cf464a2978d89d0c1fdd2f7cc6d38317@epcas2p1.samsung.com> 2017-01-23 16:18 ` [PATCH V7 00/11] IOMMU probe deferral support Sricharan R 2017-01-23 16:18 ` Sricharan R 2017-01-23 16:18 ` [PATCH V7 01/11] iommu/of: Refactor of_iommu_configure() for error handling Sricharan R 2017-01-23 16:18 ` Sricharan R 2017-01-23 16:18 ` Sricharan R [not found] ` <1485188293-20263-2-git-send-email-sricharan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2017-01-25 17:17 ` Tomasz Nowicki 2017-01-25 17:17 ` Tomasz Nowicki 2017-01-25 17:17 ` Tomasz Nowicki 2017-01-25 17:35 ` Robin Murphy [this message] 2017-01-25 17:35 ` Robin Murphy 2017-01-25 18:13 ` Tomasz Nowicki 2017-01-25 18:13 ` Tomasz Nowicki [not found] ` <c7bad124-d9f2-0ddf-168f-0b1950d3e1ed-5wv7dgnIgG8@public.gmane.org> 2017-01-27 18:00 ` Sricharan 2017-01-27 18:00 ` Sricharan 2017-01-27 18:00 ` Sricharan 2017-01-27 18:19 ` Robin Murphy 2017-01-27 18:19 ` Robin Murphy 2017-01-27 18:19 ` Robin Murphy 2017-01-30 7:00 ` Sricharan 2017-01-30 7:00 ` Sricharan 2017-01-30 7:00 ` Sricharan 2017-01-30 18:42 ` Robin Murphy 2017-01-30 18:42 ` Robin Murphy 2017-01-30 18:42 ` Robin Murphy [not found] ` <8387d057-15bd-500c-134e-0e731ff837d6-5wv7dgnIgG8@public.gmane.org> 2017-01-31 13:11 ` Sricharan 2017-01-31 13:11 ` Sricharan 2017-01-31 13:11 ` Sricharan 2017-01-23 16:18 ` [PATCH V7 02/11] iommu/of: Prepare for deferred IOMMU configuration Sricharan R 2017-01-23 16:18 ` Sricharan R 2017-01-23 16:18 ` [PATCH V7 03/11] of: dma: Move range size workaround to of_dma_get_range() Sricharan R 2017-01-23 16:18 ` Sricharan R 2017-01-23 16:18 ` [PATCH V7 05/11] ACPI/IORT: Add function to check SMMUs drivers presence Sricharan R 2017-01-23 16:18 ` Sricharan R 2017-01-23 16:18 ` [PATCH V7 06/11] of/acpi: Configure dma operations at probe time for platform/amba/pci bus devices Sricharan R 2017-01-23 16:18 ` Sricharan R 2017-01-28 21:08 ` Bjorn Helgaas 2017-01-28 21:08 ` Bjorn Helgaas 2017-01-30 7:09 ` Rafael J. Wysocki 2017-01-30 7:09 ` Rafael J. Wysocki 2017-01-23 16:18 ` [PATCH V7 07/11] iommu: of: Handle IOMMU lookup failure with deferred probing or error Sricharan R 2017-01-23 16:18 ` Sricharan R [not found] ` <1485188293-20263-8-git-send-email-sricharan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2017-01-28 21:03 ` Bjorn Helgaas 2017-01-28 21:03 ` Bjorn Helgaas 2017-01-28 21:03 ` Bjorn Helgaas 2017-01-30 8:01 ` Sricharan 2017-01-30 8:01 ` Sricharan 2017-01-30 8:01 ` Sricharan 2017-01-29 16:36 ` Sinan Kaya 2017-01-29 16:36 ` Sinan Kaya 2017-01-29 16:36 ` Sinan Kaya [not found] ` <34a703f0-3b37-88f0-46fa-b56ab6717a42-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2017-01-30 12:00 ` Sricharan 2017-01-30 12:00 ` Sricharan 2017-01-30 12:00 ` Sricharan 2017-01-23 16:18 ` [PATCH V7 08/11] drivers: acpi: " Sricharan R 2017-01-23 16:18 ` Sricharan R 2017-01-24 12:37 ` Lorenzo Pieralisi 2017-01-24 12:37 ` Lorenzo Pieralisi 2017-01-24 13:14 ` Hanjun Guo 2017-01-24 13:14 ` Hanjun Guo 2017-01-24 13:14 ` Hanjun Guo 2017-01-25 7:31 ` Sricharan 2017-01-25 7:31 ` Sricharan 2017-01-25 7:31 ` Sricharan 2017-01-29 17:53 ` Sinan Kaya 2017-01-29 17:53 ` Sinan Kaya 2017-01-29 17:53 ` Sinan Kaya [not found] ` <f2370671-ece8-fbee-de19-350dd625088f-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2017-01-30 12:22 ` Robin Murphy 2017-01-30 12:22 ` Robin Murphy 2017-01-30 12:22 ` Robin Murphy [not found] ` <93e79759-d614-9b36-d5ab-63e8eb725009-5wv7dgnIgG8@public.gmane.org> 2017-01-30 13:59 ` Sinan Kaya 2017-01-30 13:59 ` Sinan Kaya 2017-01-30 13:59 ` Sinan Kaya [not found] ` <14751205-f034-7f0d-442a-854c3909425c-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2017-01-30 14:23 ` Nate Watterson 2017-01-30 14:23 ` Nate Watterson 2017-01-30 14:23 ` Nate Watterson [not found] ` <5ba9f366d6e25397cdef8ad95b49e199-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2017-01-30 14:33 ` Sinan Kaya 2017-01-30 14:33 ` Sinan Kaya 2017-01-30 14:33 ` Sinan Kaya 2017-01-30 14:38 ` Will Deacon 2017-01-30 14:38 ` Will Deacon 2017-01-30 14:38 ` Will Deacon [not found] ` <20170130143851.GJ16461-5wv7dgnIgG8@public.gmane.org> 2017-01-30 14:54 ` Nate Watterson 2017-01-30 14:54 ` Nate Watterson 2017-01-30 14:54 ` Nate Watterson [not found] ` <b2e50c17de156341deab9fb8e91a8dec-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2017-01-30 15:46 ` Sinan Kaya 2017-01-30 15:46 ` Sinan Kaya 2017-01-30 15:46 ` Sinan Kaya [not found] ` <1e048aff-0d77-b9f2-ebf8-2ba315b90ca7-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2017-01-30 16:51 ` Lorenzo Pieralisi 2017-01-30 16:51 ` Lorenzo Pieralisi 2017-01-30 16:51 ` Lorenzo Pieralisi 2017-01-30 20:03 ` Sinan Kaya 2017-01-30 20:03 ` Sinan Kaya 2017-02-01 18:52 ` Lorenzo Pieralisi 2017-02-01 18:52 ` Lorenzo Pieralisi 2017-02-01 18:52 ` Lorenzo Pieralisi 2017-02-01 19:10 ` Sinan Kaya 2017-02-01 19:10 ` Sinan Kaya 2017-02-01 19:10 ` Sinan Kaya 2017-02-02 19:01 ` Nate Watterson 2017-02-02 19:01 ` Nate Watterson [not found] ` <3f4aa4c1e660c7e62256de9ca64fc822-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2017-02-03 3:37 ` Hanjun Guo 2017-02-03 3:37 ` Hanjun Guo 2017-02-03 3:37 ` Hanjun Guo 2017-02-03 3:37 ` Sricharan 2017-02-03 3:37 ` Sricharan 2017-02-03 3:37 ` Sricharan 2017-01-23 16:18 ` [PATCH V7 09/11] arm64: dma-mapping: Remove the notifier trick to handle early setting of dma_ops Sricharan R 2017-01-23 16:18 ` Sricharan R [not found] ` <1485188293-20263-10-git-send-email-sricharan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2017-01-28 21:06 ` Bjorn Helgaas 2017-01-28 21:06 ` Bjorn Helgaas 2017-01-28 21:06 ` Bjorn Helgaas [not found] ` <20170128210611.GF20550-1RhO1Y9PlrlHTL0Zs8A6p5iNqAH0jzoTYJqu5kTmcBRl57MIdRCFDg@public.gmane.org> 2017-01-30 8:04 ` Sricharan 2017-01-30 8:04 ` Sricharan 2017-01-30 8:04 ` Sricharan 2017-01-23 16:18 ` [PATCH V7 10/11] iommu/arm-smmu: Clean up early-probing workarounds Sricharan R 2017-01-23 16:18 ` Sricharan R 2017-01-25 17:28 ` Tomasz Nowicki 2017-01-25 17:28 ` Tomasz Nowicki [not found] ` <1485188293-20263-11-git-send-email-sricharan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2017-01-28 21:07 ` Bjorn Helgaas 2017-01-28 21:07 ` Bjorn Helgaas 2017-01-28 21:07 ` Bjorn Helgaas [not found] ` <20170128210709.GG20550-1RhO1Y9PlrlHTL0Zs8A6p5iNqAH0jzoTYJqu5kTmcBRl57MIdRCFDg@public.gmane.org> 2017-01-30 8:05 ` Sricharan 2017-01-30 8:05 ` Sricharan 2017-01-30 8:05 ` Sricharan 2017-01-23 16:18 ` [PATCH V7 11/11] ACPI/IORT: Remove linker section for IORT entries probing Sricharan R 2017-01-23 16:18 ` Sricharan R [not found] ` <1485188293-20263-1-git-send-email-sricharan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> 2017-01-23 16:18 ` [PATCH V7 04/11] of: dma: Make of_dma_deconfigure() public Sricharan R 2017-01-23 16:18 ` Sricharan R 2017-01-23 16:18 ` Sricharan R 2017-01-24 7:40 ` [PATCH V7 00/11] IOMMU probe deferral support Marek Szyprowski 2017-01-24 7:40 ` Marek Szyprowski 2017-01-24 7:40 ` Marek Szyprowski 2017-01-24 11:15 ` Sricharan 2017-01-24 11:15 ` Sricharan 2017-01-24 11:15 ` Sricharan 2017-01-25 4:33 ` Hanjun Guo 2017-01-25 4:33 ` Hanjun Guo 2017-01-25 4:33 ` Hanjun Guo 2017-01-25 7:33 ` Sricharan 2017-01-25 7:33 ` Sricharan 2017-01-25 7:33 ` Sricharan 2017-01-28 21:10 ` Bjorn Helgaas 2017-01-28 21:10 ` Bjorn Helgaas 2017-01-28 21:10 ` Bjorn Helgaas [not found] ` <20170128211029.GI20550-1RhO1Y9PlrlHTL0Zs8A6p5iNqAH0jzoTYJqu5kTmcBRl57MIdRCFDg@public.gmane.org> 2017-01-30 9:20 ` Sricharan 2017-01-30 9:20 ` Sricharan 2017-01-30 9:20 ` Sricharan
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=c7bad124-d9f2-0ddf-168f-0b1950d3e1ed@arm.com \ --to=robin.murphy@arm.com \ --cc=bhelgaas@google.com \ --cc=iommu@lists.linux-foundation.org \ --cc=joro@8bytes.org \ --cc=linux-acpi@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-arm-msm@vger.kernel.org \ --cc=linux-pci@vger.kernel.org \ --cc=lorenzo.pieralisi@arm.com \ --cc=m.szyprowski@samsung.com \ --cc=sricharan@codeaurora.org \ --cc=tn@semihalf.com \ --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.