From: Murali Karicheri <m-karicheri2@ti.com>
To: Rob Herring <robherring2@gmail.com>
Cc: Joerg Roedel <joro@8bytes.org>,
Grant Likely <grant.likely@linaro.org>,
Rob Herring <robh+dt@kernel.org>,
Linux IOMMU <iommu@lists.linux-foundation.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
Bjorn Helgaas <bhelgaas@google.com>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
Will Deacon <will.deacon@arm.com>,
Russell King - ARM Linux <linux@arm.linux.org.uk>,
Arnd Bergmann <arnd@arndb.de>
Subject: Re: [PATCH v3 1/4] of: iommu: add ptr to OF node arg to of_iommu_configure()
Date: Thu, 8 Jan 2015 13:29:26 -0500 [thread overview]
Message-ID: <54AECC86.7080201@ti.com> (raw)
In-Reply-To: <CAL_JsqJ5tDQb+SzzhGQTs48tSG=T_QZu3LW5TDyugxFw1V7LoA@mail.gmail.com>
On 01/07/2015 06:30 PM, Rob Herring wrote:
> On Wed, Jan 7, 2015 at 12:49 PM, Murali Karicheri<m-karicheri2@ti.com> wrote:
>> Function of_iommu_configure() is called from of_dma_configure() to
>> setup iommu ops using DT property. This API is currently used for
>> platform devices for which DMA configuration (including iommu ops)
>> may come from device's parent. To extend this functionality for PCI
>> devices, this API need to take a parent node ptr as an argument
>> instead of assuming device's parent. This is needed since for PCI, the
>> dma configuration may be defined in the DT node of the root bus bridge's
>> parent device. Currently only dma-range is used for PCI and iommu is not
>> supported. So return error if the device is PCI.
>>
>> Signed-off-by: Murali Karicheri<m-karicheri2@ti.com>
>> ---
>> drivers/iommu/of_iommu.c | 10 ++++++++--
>> drivers/of/platform.c | 2 +-
>> include/linux/of_iommu.h | 6 ++++--
>> 3 files changed, 13 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c
>> index af1dc6a..396bc77 100644
>> --- a/drivers/iommu/of_iommu.c
>> +++ b/drivers/iommu/of_iommu.c
>> @@ -133,19 +133,25 @@ struct iommu_ops *of_iommu_get_ops(struct device_node *np)
>> return ops;
>> }
>>
>> -struct iommu_ops *of_iommu_configure(struct device *dev)
>> +struct iommu_ops *of_iommu_configure(struct device *dev,
>> + struct device_node *node)
>
> You use node here, but np in the declaration. However...
>
>> {
>> struct of_phandle_args iommu_spec;
>> struct device_node *np;
>
> We also have np here. I would suggest we rename this to iommu_node or
> iommu_np to be clear which one this is for.
>
Rob,
Thanks for the comment. Will pick and use iommu_np consistently everywhere.
Murali
>> struct iommu_ops *ops = NULL;
>> int idx = 0;
>>
>> + if (dev_is_pci(dev)) {
>> + dev_err(dev, "iommu is currently not supported for PCI\n");
>> + return NULL;
>> + }
>> +
>> /*
>> * 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(dev->of_node, "iommus",
>> + while (!of_parse_phandle_with_args(node, "iommus",
>> "#iommu-cells", idx,
>> &iommu_spec)) {
>> np = iommu_spec.np;
>> diff --git a/drivers/of/platform.c b/drivers/of/platform.c
>> index a54ec10..7675b79 100644
>> --- a/drivers/of/platform.c
>> +++ b/drivers/of/platform.c
>> @@ -196,7 +196,7 @@ static void of_dma_configure(struct device *dev)
>> dev_dbg(dev, "device is%sdma coherent\n",
>> coherent ? " " : " not ");
>>
>> - iommu = of_iommu_configure(dev);
>> + iommu = of_iommu_configure(dev, dev->of_node);
>> dev_dbg(dev, "device is%sbehind an iommu\n",
>> iommu ? " " : " not ");
>>
>> diff --git a/include/linux/of_iommu.h b/include/linux/of_iommu.h
>> index 16c7554..3258cbb 100644
>> --- a/include/linux/of_iommu.h
>> +++ b/include/linux/of_iommu.h
>> @@ -12,7 +12,8 @@ extern int of_get_dma_window(struct device_node *dn, const char *prefix,
>> size_t *size);
>>
>> extern void of_iommu_init(void);
>> -extern struct iommu_ops *of_iommu_configure(struct device *dev);
>> +extern struct iommu_ops *of_iommu_configure(struct device *dev,
>> + struct device_node *np);
>>
>> #else
>>
>> @@ -24,7 +25,8 @@ static inline int of_get_dma_window(struct device_node *dn, const char *prefix,
>> }
>>
>> static inline void of_iommu_init(void) { }
>> -static inline struct iommu_ops *of_iommu_configure(struct device *dev)
>> +static inline struct iommu_ops *of_iommu_configure(struct device *dev,
>> + struct device_node *np)
>> {
>> return NULL;
>> }
>> --
>> 1.7.9.5
>>
--
Murali Karicheri
Linux Kernel, Texas Instruments
WARNING: multiple messages have this Message-ID (diff)
From: m-karicheri2@ti.com (Murali Karicheri)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 1/4] of: iommu: add ptr to OF node arg to of_iommu_configure()
Date: Thu, 8 Jan 2015 13:29:26 -0500 [thread overview]
Message-ID: <54AECC86.7080201@ti.com> (raw)
In-Reply-To: <CAL_JsqJ5tDQb+SzzhGQTs48tSG=T_QZu3LW5TDyugxFw1V7LoA@mail.gmail.com>
On 01/07/2015 06:30 PM, Rob Herring wrote:
> On Wed, Jan 7, 2015 at 12:49 PM, Murali Karicheri<m-karicheri2@ti.com> wrote:
>> Function of_iommu_configure() is called from of_dma_configure() to
>> setup iommu ops using DT property. This API is currently used for
>> platform devices for which DMA configuration (including iommu ops)
>> may come from device's parent. To extend this functionality for PCI
>> devices, this API need to take a parent node ptr as an argument
>> instead of assuming device's parent. This is needed since for PCI, the
>> dma configuration may be defined in the DT node of the root bus bridge's
>> parent device. Currently only dma-range is used for PCI and iommu is not
>> supported. So return error if the device is PCI.
>>
>> Signed-off-by: Murali Karicheri<m-karicheri2@ti.com>
>> ---
>> drivers/iommu/of_iommu.c | 10 ++++++++--
>> drivers/of/platform.c | 2 +-
>> include/linux/of_iommu.h | 6 ++++--
>> 3 files changed, 13 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c
>> index af1dc6a..396bc77 100644
>> --- a/drivers/iommu/of_iommu.c
>> +++ b/drivers/iommu/of_iommu.c
>> @@ -133,19 +133,25 @@ struct iommu_ops *of_iommu_get_ops(struct device_node *np)
>> return ops;
>> }
>>
>> -struct iommu_ops *of_iommu_configure(struct device *dev)
>> +struct iommu_ops *of_iommu_configure(struct device *dev,
>> + struct device_node *node)
>
> You use node here, but np in the declaration. However...
>
>> {
>> struct of_phandle_args iommu_spec;
>> struct device_node *np;
>
> We also have np here. I would suggest we rename this to iommu_node or
> iommu_np to be clear which one this is for.
>
Rob,
Thanks for the comment. Will pick and use iommu_np consistently everywhere.
Murali
>> struct iommu_ops *ops = NULL;
>> int idx = 0;
>>
>> + if (dev_is_pci(dev)) {
>> + dev_err(dev, "iommu is currently not supported for PCI\n");
>> + return NULL;
>> + }
>> +
>> /*
>> * 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(dev->of_node, "iommus",
>> + while (!of_parse_phandle_with_args(node, "iommus",
>> "#iommu-cells", idx,
>> &iommu_spec)) {
>> np = iommu_spec.np;
>> diff --git a/drivers/of/platform.c b/drivers/of/platform.c
>> index a54ec10..7675b79 100644
>> --- a/drivers/of/platform.c
>> +++ b/drivers/of/platform.c
>> @@ -196,7 +196,7 @@ static void of_dma_configure(struct device *dev)
>> dev_dbg(dev, "device is%sdma coherent\n",
>> coherent ? " " : " not ");
>>
>> - iommu = of_iommu_configure(dev);
>> + iommu = of_iommu_configure(dev, dev->of_node);
>> dev_dbg(dev, "device is%sbehind an iommu\n",
>> iommu ? " " : " not ");
>>
>> diff --git a/include/linux/of_iommu.h b/include/linux/of_iommu.h
>> index 16c7554..3258cbb 100644
>> --- a/include/linux/of_iommu.h
>> +++ b/include/linux/of_iommu.h
>> @@ -12,7 +12,8 @@ extern int of_get_dma_window(struct device_node *dn, const char *prefix,
>> size_t *size);
>>
>> extern void of_iommu_init(void);
>> -extern struct iommu_ops *of_iommu_configure(struct device *dev);
>> +extern struct iommu_ops *of_iommu_configure(struct device *dev,
>> + struct device_node *np);
>>
>> #else
>>
>> @@ -24,7 +25,8 @@ static inline int of_get_dma_window(struct device_node *dn, const char *prefix,
>> }
>>
>> static inline void of_iommu_init(void) { }
>> -static inline struct iommu_ops *of_iommu_configure(struct device *dev)
>> +static inline struct iommu_ops *of_iommu_configure(struct device *dev,
>> + struct device_node *np)
>> {
>> return NULL;
>> }
>> --
>> 1.7.9.5
>>
--
Murali Karicheri
Linux Kernel, Texas Instruments
next prev parent reply other threads:[~2015-01-08 18:29 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-07 18:49 [PATCH v3 0/4] PCI: get DMA configuration from parent device Murali Karicheri
2015-01-07 18:49 ` Murali Karicheri
2015-01-07 18:49 ` Murali Karicheri
[not found] ` <1420656594-8908-1-git-send-email-m-karicheri2-l0cyMroinI0@public.gmane.org>
2015-01-07 18:49 ` [PATCH v3 1/4] of: iommu: add ptr to OF node arg to of_iommu_configure() Murali Karicheri
2015-01-07 18:49 ` Murali Karicheri
2015-01-07 18:49 ` Murali Karicheri
[not found] ` <1420656594-8908-2-git-send-email-m-karicheri2-l0cyMroinI0@public.gmane.org>
2015-01-07 23:30 ` Rob Herring
2015-01-07 23:30 ` Rob Herring
2015-01-07 23:30 ` Rob Herring
2015-01-08 18:29 ` Murali Karicheri [this message]
2015-01-08 18:29 ` Murali Karicheri
2015-01-07 23:05 ` [PATCH v3 0/4] PCI: get DMA configuration from parent device Murali Karicheri
2015-01-07 23:05 ` Murali Karicheri
2015-01-07 23:05 ` Murali Karicheri
[not found] ` <54ADBBCF.8020206-l0cyMroinI0@public.gmane.org>
2015-01-07 23:08 ` Bjorn Helgaas
2015-01-07 23:08 ` Bjorn Helgaas
2015-01-07 23:08 ` Bjorn Helgaas
[not found] ` <CAErSpo46UAn9ckbzrgzAoQbu2D=oyOOL_rO24NWEg_iDLSuCLA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-01-08 15:52 ` Murali Karicheri
2015-01-08 15:52 ` Murali Karicheri
2015-01-08 15:52 ` Murali Karicheri
2015-01-07 18:49 ` [PATCH v3 2/4] of: move of_dma_configure() to device,c to help re-use Murali Karicheri
2015-01-07 18:49 ` [PATCH v3 2/4] of: move of_dma_configure() to device, c " Murali Karicheri
2015-01-07 18:49 ` [PATCH v3 2/4] of: move of_dma_configure() to device,c " Murali Karicheri
2015-01-07 23:37 ` Rob Herring
2015-01-07 23:37 ` [PATCH v3 2/4] of: move of_dma_configure() to device, c " Rob Herring
[not found] ` <CAL_Jsq+pKeXuGnZV_NYHn6iZgeOs404OPhcUb0FJs=-7j2P1Ug-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-01-08 8:40 ` Arnd Bergmann
2015-01-08 8:40 ` Arnd Bergmann
2015-01-08 8:40 ` [PATCH v3 2/4] of: move of_dma_configure() to device,c " Arnd Bergmann
2015-01-08 19:26 ` Murali Karicheri
2015-01-08 19:26 ` Murali Karicheri
2015-01-08 22:24 ` Arnd Bergmann
2015-01-08 22:24 ` [PATCH v3 2/4] of: move of_dma_configure() to device, c " Arnd Bergmann
2015-01-08 23:44 ` [PATCH v3 2/4] of: move of_dma_configure() to device,c " Murali Karicheri
2015-01-08 23:44 ` Murali Karicheri
2015-01-08 23:44 ` Murali Karicheri
[not found] ` <54AF165F.7070909-l0cyMroinI0@public.gmane.org>
2015-01-09 0:05 ` Arnd Bergmann
2015-01-09 0:05 ` [PATCH v3 2/4] of: move of_dma_configure() to device, c " Arnd Bergmann
2015-01-09 0:05 ` [PATCH v3 2/4] of: move of_dma_configure() to device,c " Arnd Bergmann
2015-01-09 15:34 ` Rob Herring
2015-01-09 15:34 ` [PATCH v3 2/4] of: move of_dma_configure() to device, c " Rob Herring
2015-01-09 15:34 ` [PATCH v3 2/4] of: move of_dma_configure() to device,c " Rob Herring
2015-01-23 18:19 ` Murali Karicheri
2015-01-23 18:19 ` Murali Karicheri
2015-01-23 18:35 ` Rob Herring
2015-01-23 18:35 ` [PATCH v3 2/4] of: move of_dma_configure() to device, c " Rob Herring
2015-01-07 18:49 ` [PATCH v3 3/4] of/pci: add of_pci_dma_configure() update dma configuration Murali Karicheri
2015-01-07 18:49 ` Murali Karicheri
2015-01-07 18:49 ` Murali Karicheri
2015-01-08 16:06 ` Will Deacon
2015-01-08 16:06 ` Will Deacon
2015-01-08 19:52 ` Murali Karicheri
2015-01-08 19:52 ` Murali Karicheri
[not found] ` <54AEDFED.8060008-l0cyMroinI0@public.gmane.org>
2015-01-08 22:25 ` Arnd Bergmann
2015-01-08 22:25 ` Arnd Bergmann
2015-01-08 22:25 ` Arnd Bergmann
2015-01-08 22:46 ` Murali Karicheri
2015-01-08 22:46 ` Murali Karicheri
2015-01-08 22:46 ` Murali Karicheri
2015-01-09 11:32 ` Will Deacon
2015-01-09 11:32 ` Will Deacon
2015-01-07 18:49 ` [PATCH v3 4/4] PCI: update dma configuration from DT Murali Karicheri
2015-01-07 18:49 ` Murali Karicheri
2015-01-07 18:49 ` Murali Karicheri
2015-01-07 21:18 ` [PATCH v3 0/4] PCI: get DMA configuration from parent device Arnd Bergmann
2015-01-07 21:18 ` Arnd Bergmann
2015-01-07 23:04 ` Murali Karicheri
2015-01-07 23:04 ` Murali Karicheri
2015-01-07 23:04 ` Murali Karicheri
[not found] ` <54ADBB89.8070503-l0cyMroinI0@public.gmane.org>
2015-01-08 8:56 ` Arnd Bergmann
2015-01-08 8:56 ` Arnd Bergmann
2015-01-08 8:56 ` Arnd Bergmann
2015-01-08 15:54 ` Will Deacon
2015-01-08 15:54 ` Will Deacon
2015-01-08 15:54 ` Will Deacon
2015-01-08 22:27 ` Arnd Bergmann
2015-01-08 22:27 ` Arnd Bergmann
2015-01-08 22:46 ` Murali Karicheri
2015-01-08 22:46 ` Murali Karicheri
2015-01-08 22:46 ` Murali Karicheri
[not found] <999c3dfe5d864d9da4990093e28fe0a3@nn-ms.office.auriga.msk>
2015-05-20 17:55 ` [PATCH v3 1/4] of: iommu: add ptr to OF node arg to of_iommu_configure() Lomovtsev, Vadim
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=54AECC86.7080201@ti.com \
--to=m-karicheri2@ti.com \
--cc=arnd@arndb.de \
--cc=bhelgaas@google.com \
--cc=devicetree@vger.kernel.org \
--cc=grant.likely@linaro.org \
--cc=iommu@lists.linux-foundation.org \
--cc=joro@8bytes.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=robh+dt@kernel.org \
--cc=robherring2@gmail.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: link
Be 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.