All of lore.kernel.org
 help / color / mirror / Atom feed
From: Grant Likely <grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
To: Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org>
Cc: "jroedel-l3A5Bk7waGM@public.gmane.org"
	<jroedel-l3A5Bk7waGM@public.gmane.org>,
	Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
	Will Deacon <Will.Deacon-5wv7dgnIgG8@public.gmane.org>,
	Pantelis Antoniou
	<pantelis.antoniou-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>,
	Linux IOMMU
	<iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
	Thierry Reding
	<thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Laurent Pinchart
	<laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>,
	Varun Sethi <Varun.Sethi-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
	David Woodhouse <dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>
Subject: Re: [PATCH v6 1/8] iommu: provide early initialisation hook for IOMMU drivers
Date: Thu, 4 Dec 2014 13:58:12 +0000	[thread overview]
Message-ID: <CACxGe6taZiAJdf6s0Y5uXtu7=276d1U8hOQEpAwP+k-n44Ndqw@mail.gmail.com> (raw)
In-Reply-To: <54806504.20507-5wv7dgnIgG8@public.gmane.org>

On Thu, Dec 4, 2014 at 1:43 PM, Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org> wrote:
> Hi Grant, thanks for the advice - silly micro-optimisations removed, and
> I'll make a note to do so from my in-development code, too ;)
>
> I didn't much like the casting either, so rather than push it elsewhere or
> out to the caller I've just changed the prototype to obviate it completely.
> Since we're also expecting to churn this again to use something more
> suitable than iommu_ops as the private data, I think keeping things simple
> wins over const-correctness for now.
>
> Thanks,
> Robin
>
> --->8---
> From b2e8c91ac49bef4008661e4628cd6b7249d84af5 Mon Sep 17 00:00:00 2001
> Message-Id:
> <b2e8c91ac49bef4008661e4628cd6b7249d84af5.1417698001.git.robin.murphy-5wv7dgnIgG8@public.gmane.org>
> From: Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org>
> Date: Thu, 4 Dec 2014 11:53:13 +0000
> Subject: [PATCH v2] iommu: store DT-probed IOMMU data privately
>
> Since the data pointer in the DT node is public and may be overwritten
> by conflicting code, move the DT-probed IOMMU ops to a private list
> where they will be safe.
>
> Signed-off-by: Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org>

Acked-by: Grant Likely <grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>

> ---
>  drivers/iommu/of_iommu.c | 40 ++++++++++++++++++++++++++++++++++++++++
>  include/linux/of_iommu.h | 12 ++----------
>  2 files changed, 42 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c
> index 73236d3..c7078f6 100644
> --- a/drivers/iommu/of_iommu.c
> +++ b/drivers/iommu/of_iommu.c
> @@ -94,6 +94,46 @@ int of_get_dma_window(struct device_node *dn, const char
> *prefix, int index,
>  }
>  EXPORT_SYMBOL_GPL(of_get_dma_window);
>
> +struct of_iommu_node {
> +       struct list_head list;
> +       struct device_node *np;
> +       struct iommu_ops *ops;
> +};
> +static LIST_HEAD(of_iommu_list);
> +static DEFINE_SPINLOCK(of_iommu_lock);
> +
> +void of_iommu_set_ops(struct device_node *np, struct iommu_ops *ops)
> +{
> +       struct of_iommu_node *iommu = kzalloc(sizeof(*iommu), GFP_KERNEL);
> +
> +       if (!iommu) {
> +               __WARN();
> +               return;
> +       }
> +
> +       INIT_LIST_HEAD(&iommu->list);
> +       iommu->np = np;
> +       iommu->ops = ops;
> +       spin_lock(&of_iommu_lock);
> +       list_add_tail(&iommu->list, &of_iommu_list);
> +       spin_unlock(&of_iommu_lock);
> +}
> +
> +struct iommu_ops *of_iommu_get_ops(struct device_node *np)
> +{
> +       struct of_iommu_node *node;
> +       struct iommu_ops *ops = NULL;
> +
> +       spin_lock(&of_iommu_lock);
> +       list_for_each_entry(node, &of_iommu_list, list)
> +               if (node->np == np) {
> +                       ops = node->ops;
> +                       break;
> +               }
> +       spin_unlock(&of_iommu_lock);
> +       return ops;
> +}
> +
>  struct iommu_ops *of_iommu_configure(struct device *dev)
>  {
>         struct of_phandle_args iommu_spec;
> diff --git a/include/linux/of_iommu.h b/include/linux/of_iommu.h
> index d03abbb..16c7554 100644
> --- a/include/linux/of_iommu.h
> +++ b/include/linux/of_iommu.h
> @@ -31,16 +31,8 @@ static inline struct iommu_ops *of_iommu_configure(struct
> device *dev)
>
>  #endif /* CONFIG_OF_IOMMU */
>
> -static inline void of_iommu_set_ops(struct device_node *np,
> -                                   const struct iommu_ops *ops)
> -{
> -       np->data = (struct iommu_ops *)ops;
> -}
> -
> -static inline struct iommu_ops *of_iommu_get_ops(struct device_node *np)
> -{
> -       return np->data;
> -}
> +void of_iommu_set_ops(struct device_node *np, struct iommu_ops *ops);
> +struct iommu_ops *of_iommu_get_ops(struct device_node *np);
>
>  extern struct of_device_id __iommu_of_table;
>
> --
> 1.9.1
>
> On 04/12/14 12:42, Grant Likely wrote:
>>
>> On Thu, Dec 4, 2014 at 12:26 PM, Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org>
>> wrote:
>>>
>>> Hi Arnd,
>>>
>>> On 03/12/14 19:57, Arnd Bergmann wrote:
>>> [...]
>>>>>
>>>>>
>>>>> Good catch. This is not good. The data pointer should be avoided since
>>>>> there are no controls over its use. Until a better solution can be
>>>>> implemented, probably the safest thing to do is add a struct iommu_ops
>>>>> pointer to struct device_node. However, assuming that only a small
>>>>> portion of nodes will actually have iommu_ops set, I'd rather see a
>>>>> separate registry that matches device_nodes to iommu_ops.
>>>>
>>>>
>>>>
>>>> Fair enough. Will, can you take a copy of drivers/dma/of-dma.c and
>>>> adapt it as needed? It should be exactly what we need to start
>>>> out and can be extended and generalized later.
>>>
>>>
>>>
>>> I'm quite keen to see this series go in, since I'm depending on it to
>>> make
>>> arm64 IOMMU DMA ops "just work". Will and I came to the conclusion the
>>> other
>>> day that we pretty much need to build up some kind of bus abstraction
>>> based
>>> on the probe data in order to be able to assign IOMMU groups correctly,
>>> which can also subsume this particular problem in the long run. Since
>>> I've
>>> made a start on that already, I've hacked the following short-term fix
>>> out
>>> of it. Tested on my Juno - admittedly with only two SMMUs and one master
>>> (EHCI) being probed, but it didn't blow up or regress anything.
>>>
>>> Regards,
>>> Robin.
>>>
>>> --->8---
>>>  From 1f3d2612682c239e53f2c20e2ac5d19ef3f5387c Mon Sep 17 00:00:00 2001
>>> Message-Id:
>>>
>>> <1f3d2612682c239e53f2c20e2ac5d19ef3f5387c.1417695078.git.robin.murphy-5wv7dgnIgG8@public.gmane.org>
>>> From: Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org>
>>> Date: Thu, 4 Dec 2014 11:53:13 +0000
>>> Subject: [PATCH] iommu: store DT-probed IOMMU data privately
>>>
>>> Since the data pointer in the DT node is public and may be overwritten
>>> by conflicting code, move the DT-probed IOMMU ops to a private list
>>> where they will be safe.
>>>
>>> Signed-off-by: Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org>
>>
>>
>> Looks reasonable to me. Comments below...
>>
>>> ---
>>>   drivers/iommu/of_iommu.c | 38 ++++++++++++++++++++++++++++++++++++++
>>>   include/linux/of_iommu.h | 12 ++----------
>>>   2 files changed, 40 insertions(+), 10 deletions(-)
>>>
>>> diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c
>>> index 73236d3..5cd451c 100644
>>> --- a/drivers/iommu/of_iommu.c
>>> +++ b/drivers/iommu/of_iommu.c
>>> @@ -94,6 +94,44 @@ int of_get_dma_window(struct device_node *dn, const
>>> char
>>> *prefix, int index,
>>>   }
>>>   EXPORT_SYMBOL_GPL(of_get_dma_window);
>>>
>>> +struct of_iommu_node {
>>> +       struct hlist_node list;
>>> +       struct device_node *np;
>>> +       const struct iommu_ops *ops;
>>> +};
>>> +static HLIST_HEAD(of_iommu_list);
>>
>>
>> Just use a list_head. hlist_head merely saves one pointer in this case.
>>
>>> +static DEFINE_SPINLOCK(of_iommu_lock);
>>> +
>>> +void of_iommu_set_ops(struct device_node *np, const struct iommu_ops
>>> *ops)
>>> +{
>>> +       struct of_iommu_node *iommu = kmalloc(sizeof(*iommu),
>>> GFP_KERNEL);
>>
>>
>> kzalloc()
>>
>>> +
>>> +       if (!iommu)
>>> +               return;
>>
>>
>> Shouldn't there be a WARN() here on failure? I don't think failing
>> silently is desired.
>>
>>> +
>>> +       INIT_HLIST_NODE(&iommu->list);
>>> +       iommu->np = np;
>>> +       iommu->ops = ops;
>>> +       spin_lock(&of_iommu_lock);
>>> +       hlist_add_head(&iommu->list, &of_iommu_list);
>>> +       spin_unlock(&of_iommu_lock);
>>> +}
>>> +
>>> +struct iommu_ops *of_iommu_get_ops(struct device_node *np)
>>> +{
>>> +       struct of_iommu_node *node;
>>> +       const struct iommu_ops *ops = NULL;
>>> +
>>> +       spin_lock(&of_iommu_lock);
>>> +       hlist_for_each_entry(node, &of_iommu_list, list)
>>> +               if (node->np == np) {
>>> +                       ops = node->ops;
>>> +                       break;
>>> +               }
>>> +       spin_unlock(&of_iommu_lock);
>>> +       return (struct iommu_ops *)ops;
>>
>>
>> The cast looks fishy. If you need to use a cast, then the data types
>> are probably wrong. If you drop the const from *ops here and in the
>> structure then it should probably work fine. Due to the way it is
>> being used, there isn't any advantage to using const (unless you
>> changes of_iommu_get_ops() to return a const pointer, then const would
>> make sense).
>>
>>> +}
>>> +
>>>   struct iommu_ops *of_iommu_configure(struct device *dev)
>>>   {
>>>          struct of_phandle_args iommu_spec;
>>> diff --git a/include/linux/of_iommu.h b/include/linux/of_iommu.h
>>> index d03abbb..e27c53a 100644
>>> --- a/include/linux/of_iommu.h
>>> +++ b/include/linux/of_iommu.h
>>> @@ -31,16 +31,8 @@ static inline struct iommu_ops
>>> *of_iommu_configure(struct
>>> device *dev)
>>>
>>>   #endif /* CONFIG_OF_IOMMU */
>>>
>>> -static inline void of_iommu_set_ops(struct device_node *np,
>>> -                                   const struct iommu_ops *ops)
>>> -{
>>> -       np->data = (struct iommu_ops *)ops;
>>> -}
>>> -
>>> -static inline struct iommu_ops *of_iommu_get_ops(struct device_node *np)
>>> -{
>>> -       return np->data;
>>> -}
>>> +void of_iommu_set_ops(struct device_node *np, const struct iommu_ops
>>> *ops);
>>> +struct iommu_ops *of_iommu_get_ops(struct device_node *np);
>>>
>>>   extern struct of_device_id __iommu_of_table;
>>>
>>> --
>>> 1.9.1
>>>
>>>
>>
>
>

WARNING: multiple messages have this Message-ID (diff)
From: grant.likely@linaro.org (Grant Likely)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v6 1/8] iommu: provide early initialisation hook for IOMMU drivers
Date: Thu, 4 Dec 2014 13:58:12 +0000	[thread overview]
Message-ID: <CACxGe6taZiAJdf6s0Y5uXtu7=276d1U8hOQEpAwP+k-n44Ndqw@mail.gmail.com> (raw)
In-Reply-To: <54806504.20507@arm.com>

On Thu, Dec 4, 2014 at 1:43 PM, Robin Murphy <robin.murphy@arm.com> wrote:
> Hi Grant, thanks for the advice - silly micro-optimisations removed, and
> I'll make a note to do so from my in-development code, too ;)
>
> I didn't much like the casting either, so rather than push it elsewhere or
> out to the caller I've just changed the prototype to obviate it completely.
> Since we're also expecting to churn this again to use something more
> suitable than iommu_ops as the private data, I think keeping things simple
> wins over const-correctness for now.
>
> Thanks,
> Robin
>
> --->8---
> From b2e8c91ac49bef4008661e4628cd6b7249d84af5 Mon Sep 17 00:00:00 2001
> Message-Id:
> <b2e8c91ac49bef4008661e4628cd6b7249d84af5.1417698001.git.robin.murphy@arm.com>
> From: Robin Murphy <robin.murphy@arm.com>
> Date: Thu, 4 Dec 2014 11:53:13 +0000
> Subject: [PATCH v2] iommu: store DT-probed IOMMU data privately
>
> Since the data pointer in the DT node is public and may be overwritten
> by conflicting code, move the DT-probed IOMMU ops to a private list
> where they will be safe.
>
> Signed-off-by: Robin Murphy <robin.murphy@arm.com>

Acked-by: Grant Likely <grant.likely@linaro.org>

> ---
>  drivers/iommu/of_iommu.c | 40 ++++++++++++++++++++++++++++++++++++++++
>  include/linux/of_iommu.h | 12 ++----------
>  2 files changed, 42 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c
> index 73236d3..c7078f6 100644
> --- a/drivers/iommu/of_iommu.c
> +++ b/drivers/iommu/of_iommu.c
> @@ -94,6 +94,46 @@ int of_get_dma_window(struct device_node *dn, const char
> *prefix, int index,
>  }
>  EXPORT_SYMBOL_GPL(of_get_dma_window);
>
> +struct of_iommu_node {
> +       struct list_head list;
> +       struct device_node *np;
> +       struct iommu_ops *ops;
> +};
> +static LIST_HEAD(of_iommu_list);
> +static DEFINE_SPINLOCK(of_iommu_lock);
> +
> +void of_iommu_set_ops(struct device_node *np, struct iommu_ops *ops)
> +{
> +       struct of_iommu_node *iommu = kzalloc(sizeof(*iommu), GFP_KERNEL);
> +
> +       if (!iommu) {
> +               __WARN();
> +               return;
> +       }
> +
> +       INIT_LIST_HEAD(&iommu->list);
> +       iommu->np = np;
> +       iommu->ops = ops;
> +       spin_lock(&of_iommu_lock);
> +       list_add_tail(&iommu->list, &of_iommu_list);
> +       spin_unlock(&of_iommu_lock);
> +}
> +
> +struct iommu_ops *of_iommu_get_ops(struct device_node *np)
> +{
> +       struct of_iommu_node *node;
> +       struct iommu_ops *ops = NULL;
> +
> +       spin_lock(&of_iommu_lock);
> +       list_for_each_entry(node, &of_iommu_list, list)
> +               if (node->np == np) {
> +                       ops = node->ops;
> +                       break;
> +               }
> +       spin_unlock(&of_iommu_lock);
> +       return ops;
> +}
> +
>  struct iommu_ops *of_iommu_configure(struct device *dev)
>  {
>         struct of_phandle_args iommu_spec;
> diff --git a/include/linux/of_iommu.h b/include/linux/of_iommu.h
> index d03abbb..16c7554 100644
> --- a/include/linux/of_iommu.h
> +++ b/include/linux/of_iommu.h
> @@ -31,16 +31,8 @@ static inline struct iommu_ops *of_iommu_configure(struct
> device *dev)
>
>  #endif /* CONFIG_OF_IOMMU */
>
> -static inline void of_iommu_set_ops(struct device_node *np,
> -                                   const struct iommu_ops *ops)
> -{
> -       np->data = (struct iommu_ops *)ops;
> -}
> -
> -static inline struct iommu_ops *of_iommu_get_ops(struct device_node *np)
> -{
> -       return np->data;
> -}
> +void of_iommu_set_ops(struct device_node *np, struct iommu_ops *ops);
> +struct iommu_ops *of_iommu_get_ops(struct device_node *np);
>
>  extern struct of_device_id __iommu_of_table;
>
> --
> 1.9.1
>
> On 04/12/14 12:42, Grant Likely wrote:
>>
>> On Thu, Dec 4, 2014 at 12:26 PM, Robin Murphy <robin.murphy@arm.com>
>> wrote:
>>>
>>> Hi Arnd,
>>>
>>> On 03/12/14 19:57, Arnd Bergmann wrote:
>>> [...]
>>>>>
>>>>>
>>>>> Good catch. This is not good. The data pointer should be avoided since
>>>>> there are no controls over its use. Until a better solution can be
>>>>> implemented, probably the safest thing to do is add a struct iommu_ops
>>>>> pointer to struct device_node. However, assuming that only a small
>>>>> portion of nodes will actually have iommu_ops set, I'd rather see a
>>>>> separate registry that matches device_nodes to iommu_ops.
>>>>
>>>>
>>>>
>>>> Fair enough. Will, can you take a copy of drivers/dma/of-dma.c and
>>>> adapt it as needed? It should be exactly what we need to start
>>>> out and can be extended and generalized later.
>>>
>>>
>>>
>>> I'm quite keen to see this series go in, since I'm depending on it to
>>> make
>>> arm64 IOMMU DMA ops "just work". Will and I came to the conclusion the
>>> other
>>> day that we pretty much need to build up some kind of bus abstraction
>>> based
>>> on the probe data in order to be able to assign IOMMU groups correctly,
>>> which can also subsume this particular problem in the long run. Since
>>> I've
>>> made a start on that already, I've hacked the following short-term fix
>>> out
>>> of it. Tested on my Juno - admittedly with only two SMMUs and one master
>>> (EHCI) being probed, but it didn't blow up or regress anything.
>>>
>>> Regards,
>>> Robin.
>>>
>>> --->8---
>>>  From 1f3d2612682c239e53f2c20e2ac5d19ef3f5387c Mon Sep 17 00:00:00 2001
>>> Message-Id:
>>>
>>> <1f3d2612682c239e53f2c20e2ac5d19ef3f5387c.1417695078.git.robin.murphy@arm.com>
>>> From: Robin Murphy <robin.murphy@arm.com>
>>> Date: Thu, 4 Dec 2014 11:53:13 +0000
>>> Subject: [PATCH] iommu: store DT-probed IOMMU data privately
>>>
>>> Since the data pointer in the DT node is public and may be overwritten
>>> by conflicting code, move the DT-probed IOMMU ops to a private list
>>> where they will be safe.
>>>
>>> Signed-off-by: Robin Murphy <robin.murphy@arm.com>
>>
>>
>> Looks reasonable to me. Comments below...
>>
>>> ---
>>>   drivers/iommu/of_iommu.c | 38 ++++++++++++++++++++++++++++++++++++++
>>>   include/linux/of_iommu.h | 12 ++----------
>>>   2 files changed, 40 insertions(+), 10 deletions(-)
>>>
>>> diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c
>>> index 73236d3..5cd451c 100644
>>> --- a/drivers/iommu/of_iommu.c
>>> +++ b/drivers/iommu/of_iommu.c
>>> @@ -94,6 +94,44 @@ int of_get_dma_window(struct device_node *dn, const
>>> char
>>> *prefix, int index,
>>>   }
>>>   EXPORT_SYMBOL_GPL(of_get_dma_window);
>>>
>>> +struct of_iommu_node {
>>> +       struct hlist_node list;
>>> +       struct device_node *np;
>>> +       const struct iommu_ops *ops;
>>> +};
>>> +static HLIST_HEAD(of_iommu_list);
>>
>>
>> Just use a list_head. hlist_head merely saves one pointer in this case.
>>
>>> +static DEFINE_SPINLOCK(of_iommu_lock);
>>> +
>>> +void of_iommu_set_ops(struct device_node *np, const struct iommu_ops
>>> *ops)
>>> +{
>>> +       struct of_iommu_node *iommu = kmalloc(sizeof(*iommu),
>>> GFP_KERNEL);
>>
>>
>> kzalloc()
>>
>>> +
>>> +       if (!iommu)
>>> +               return;
>>
>>
>> Shouldn't there be a WARN() here on failure? I don't think failing
>> silently is desired.
>>
>>> +
>>> +       INIT_HLIST_NODE(&iommu->list);
>>> +       iommu->np = np;
>>> +       iommu->ops = ops;
>>> +       spin_lock(&of_iommu_lock);
>>> +       hlist_add_head(&iommu->list, &of_iommu_list);
>>> +       spin_unlock(&of_iommu_lock);
>>> +}
>>> +
>>> +struct iommu_ops *of_iommu_get_ops(struct device_node *np)
>>> +{
>>> +       struct of_iommu_node *node;
>>> +       const struct iommu_ops *ops = NULL;
>>> +
>>> +       spin_lock(&of_iommu_lock);
>>> +       hlist_for_each_entry(node, &of_iommu_list, list)
>>> +               if (node->np == np) {
>>> +                       ops = node->ops;
>>> +                       break;
>>> +               }
>>> +       spin_unlock(&of_iommu_lock);
>>> +       return (struct iommu_ops *)ops;
>>
>>
>> The cast looks fishy. If you need to use a cast, then the data types
>> are probably wrong. If you drop the const from *ops here and in the
>> structure then it should probably work fine. Due to the way it is
>> being used, there isn't any advantage to using const (unless you
>> changes of_iommu_get_ops() to return a const pointer, then const would
>> make sense).
>>
>>> +}
>>> +
>>>   struct iommu_ops *of_iommu_configure(struct device *dev)
>>>   {
>>>          struct of_phandle_args iommu_spec;
>>> diff --git a/include/linux/of_iommu.h b/include/linux/of_iommu.h
>>> index d03abbb..e27c53a 100644
>>> --- a/include/linux/of_iommu.h
>>> +++ b/include/linux/of_iommu.h
>>> @@ -31,16 +31,8 @@ static inline struct iommu_ops
>>> *of_iommu_configure(struct
>>> device *dev)
>>>
>>>   #endif /* CONFIG_OF_IOMMU */
>>>
>>> -static inline void of_iommu_set_ops(struct device_node *np,
>>> -                                   const struct iommu_ops *ops)
>>> -{
>>> -       np->data = (struct iommu_ops *)ops;
>>> -}
>>> -
>>> -static inline struct iommu_ops *of_iommu_get_ops(struct device_node *np)
>>> -{
>>> -       return np->data;
>>> -}
>>> +void of_iommu_set_ops(struct device_node *np, const struct iommu_ops
>>> *ops);
>>> +struct iommu_ops *of_iommu_get_ops(struct device_node *np);
>>>
>>>   extern struct of_device_id __iommu_of_table;
>>>
>>> --
>>> 1.9.1
>>>
>>>
>>
>
>

  parent reply	other threads:[~2014-12-04 13:58 UTC|newest]

Thread overview: 220+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-01 16:57 [PATCH v6 0/8] Introduce automatic DMA configuration for IOMMU masters Will Deacon
2014-12-01 16:57 ` Will Deacon
     [not found] ` <1417453034-21379-1-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-12-01 16:57   ` [PATCH v6 1/8] iommu: provide early initialisation hook for IOMMU drivers Will Deacon
2014-12-01 16:57     ` Will Deacon
     [not found]     ` <1417453034-21379-2-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-12-01 23:54       ` Rob Herring
2014-12-01 23:54         ` Rob Herring
     [not found]         ` <CAL_JsqKHvh9KSTYrrs1Pts5Kg=8dA1V6NiW57_2vdDH173qQGg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-12-02  9:23           ` Marek Szyprowski
2014-12-02  9:23             ` Marek Szyprowski
     [not found]             ` <547D84F4.8030204-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-12-02  9:36               ` Arnd Bergmann
2014-12-02  9:36                 ` Arnd Bergmann
2014-12-02  9:43                 ` Will Deacon
2014-12-02  9:43                   ` Will Deacon
2014-12-02 12:05                 ` Thierry Reding
2014-12-02 12:05                   ` Thierry Reding
2014-12-02 14:16           ` Grant Likely
2014-12-02 14:16             ` Grant Likely
     [not found]             ` <CACxGe6vyMkyE9ZRj_FQzi19ESEo7OV_RQoVV65xBYpdQV8cRGQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-12-03 19:57               ` Arnd Bergmann
2014-12-03 19:57                 ` Arnd Bergmann
2014-12-04  9:49                 ` Will Deacon
2014-12-04  9:49                   ` Will Deacon
     [not found]                   ` <20141204094953.GA13224-5wv7dgnIgG8@public.gmane.org>
2014-12-04 10:10                     ` Arnd Bergmann
2014-12-04 10:10                       ` Arnd Bergmann
2014-12-04 10:21                       ` Will Deacon
2014-12-04 10:21                         ` Will Deacon
     [not found]                         ` <20141204102127.GF13224-5wv7dgnIgG8@public.gmane.org>
2014-12-04 11:19                           ` Arnd Bergmann
2014-12-04 11:19                             ` Arnd Bergmann
2014-12-04 11:25                             ` Grant Likely
2014-12-04 11:25                               ` Grant Likely
     [not found]                               ` <CACxGe6v4ZVHHGcc3Lhp8+FgKakyCkJFRAT2ufj-3DGWa=wmGkA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-12-04 11:52                                 ` Will Deacon
2014-12-04 11:52                                   ` Will Deacon
     [not found]                                   ` <20141204115254.GF14519-5wv7dgnIgG8@public.gmane.org>
2014-12-04 12:43                                     ` Grant Likely
2014-12-04 12:43                                       ` Grant Likely
2014-12-04 12:26                 ` Robin Murphy
2014-12-04 12:26                   ` Robin Murphy
     [not found]                   ` <54805312.6000402-5wv7dgnIgG8@public.gmane.org>
2014-12-04 12:42                     ` Grant Likely
2014-12-04 12:42                       ` Grant Likely
     [not found]                       ` <CACxGe6uR5J4Cjdh_xYhBPoQRgeYwHPv5=AnuRmQKSD3yZrMK9Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-12-04 13:43                         ` Robin Murphy
2014-12-04 13:43                           ` Robin Murphy
     [not found]                           ` <54806504.20507-5wv7dgnIgG8@public.gmane.org>
2014-12-04 13:58                             ` Grant Likely [this message]
2014-12-04 13:58                               ` Grant Likely
2014-12-04 14:49                             ` Thierry Reding
2014-12-04 14:49                               ` Thierry Reding
     [not found]                               ` <20141204144925.GB31464-AwZRO8vwLAwmlAP/+Wk3EA@public.gmane.org>
2014-12-04 17:42                                 ` Robin Murphy
2014-12-04 17:42                                   ` Robin Murphy
     [not found]                                   ` <54809D09.2050406-5wv7dgnIgG8@public.gmane.org>
2014-12-04 17:58                                     ` Grant Likely
2014-12-04 17:58                                       ` Grant Likely
     [not found]                                       ` <CACxGe6tpFHdP1-5NWiNVAqzXx-diN1xfRbu0AQDyVJ6AU_4RXg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-12-04 19:42                                         ` Robin Murphy
2014-12-04 19:42                                           ` Robin Murphy
     [not found]                                           ` <5480B924.2010205-5wv7dgnIgG8@public.gmane.org>
2014-12-05 12:10                                             ` Will Deacon
2014-12-05 12:10                                               ` Will Deacon
     [not found]                                               ` <20141205121037.GI1630-5wv7dgnIgG8@public.gmane.org>
2014-12-05 12:21                                                 ` Arnd Bergmann
2014-12-05 12:21                                                   ` Arnd Bergmann
2014-12-05 12:35                                                 ` Robin Murphy
2014-12-05 12:35                                                   ` Robin Murphy
     [not found]                                                   ` <5481A688.4030606-5wv7dgnIgG8@public.gmane.org>
2014-12-05 13:06                                                     ` Grant Likely
2014-12-05 13:06                                                       ` Grant Likely
     [not found]                                                       ` <CACxGe6vppOQj-hJnqEEtLwDuSr4bzcbTgEFj8=x4ULu=yxswpg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-12-05 13:18                                                         ` Thierry Reding
2014-12-05 13:18                                                           ` Thierry Reding
     [not found]                                                           ` <20141205131815.GA18747-AwZRO8vwLAwmlAP/+Wk3EA@public.gmane.org>
2014-12-05 13:21                                                             ` Grant Likely
2014-12-05 13:21                                                               ` Grant Likely
     [not found]                                                               ` <CACxGe6vqstoCBiJ7TLvhNt+40TUJRB2ORoRKKtorhM-ETHXu0A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-12-05 13:31                                                                 ` Thierry Reding
2014-12-05 13:31                                                                   ` Thierry Reding
2014-12-05 13:49                                                             ` Marek Szyprowski
2014-12-05 13:49                                                               ` Marek Szyprowski
2014-12-04 12:51                     ` Arnd Bergmann
2014-12-04 12:51                       ` Arnd Bergmann
2014-12-02 10:30         ` Pantelis Antoniou
2014-12-02 10:30           ` Pantelis Antoniou
2014-12-01 16:57   ` [PATCH v6 2/8] dma-mapping: replace set_arch_dma_coherent_ops with arch_setup_dma_ops Will Deacon
2014-12-01 16:57     ` Will Deacon
     [not found]     ` <1417453034-21379-3-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-12-01 22:58       ` Rob Herring
2014-12-01 22:58         ` Rob Herring
     [not found]         ` <CAL_JsqLtN3euwXHM4BzYxkXsgE=Dmn05aXzL+kr_8x23voneZA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-12-02  9:16           ` Arnd Bergmann
2014-12-02  9:16             ` Arnd Bergmann
2014-12-01 16:57   ` [PATCH v6 3/8] iommu: add new iommu_ops callback for adding an OF device Will Deacon
2014-12-01 16:57     ` Will Deacon
2014-12-01 16:57   ` [PATCH v6 4/8] iommu: provide helper function to configure an IOMMU for an of master Will Deacon
2014-12-01 16:57     ` Will Deacon
2014-12-01 16:57   ` [PATCH v6 5/8] iommu: fix initialization without 'add_device' callback Will Deacon
2014-12-01 16:57     ` Will Deacon
2014-12-01 16:57   ` [PATCH v6 6/8] dma-mapping: detect and configure IOMMU in of_dma_configure Will Deacon
2014-12-01 16:57     ` Will Deacon
     [not found]     ` <1417453034-21379-7-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-12-01 23:06       ` Rob Herring
2014-12-01 23:06         ` Rob Herring
2014-12-10 14:52       ` Rob Clark
2014-12-10 14:52         ` Rob Clark
     [not found]         ` <CAF6AEGs6dZauq1QxY_OqBPUs0xHYjjGTi+H7Vm-mNvJtmTAHRA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-12-10 15:08           ` Will Deacon
2014-12-10 15:08             ` Will Deacon
     [not found]             ` <20141210150853.GH23639-5wv7dgnIgG8@public.gmane.org>
2014-12-10 15:54               ` Robin Murphy
2014-12-10 15:54                 ` Robin Murphy
     [not found]                 ` <54886CA2.3040406-5wv7dgnIgG8@public.gmane.org>
2014-12-10 15:56                   ` Laurent Pinchart
2014-12-10 15:56                     ` Laurent Pinchart
2014-12-14 15:49               ` Laurent Pinchart
2014-12-14 15:49                 ` Laurent Pinchart
2014-12-14 15:59                 ` Laurent Pinchart
2014-12-14 15:59                   ` Laurent Pinchart
2014-12-15 17:10                   ` Will Deacon
2014-12-15 17:10                     ` Will Deacon
2014-12-15 16:40                 ` Will Deacon
2014-12-15 16:40                   ` Will Deacon
     [not found]                   ` <20141215164041.GN20738-5wv7dgnIgG8@public.gmane.org>
2014-12-15 17:16                     ` Laurent Pinchart
2014-12-15 17:16                       ` Laurent Pinchart
2014-12-15 18:09                       ` Will Deacon
2014-12-15 18:09                         ` Will Deacon
     [not found]                         ` <20141215180933.GW20738-5wv7dgnIgG8@public.gmane.org>
2014-12-16 12:08                           ` Arnd Bergmann
2014-12-16 12:08                             ` Arnd Bergmann
2014-12-17 12:09                             ` Will Deacon
2014-12-17 12:09                               ` Will Deacon
     [not found]                               ` <20141217120948.GB870-5wv7dgnIgG8@public.gmane.org>
2014-12-17 14:15                                 ` Arnd Bergmann
2014-12-17 14:15                                   ` Arnd Bergmann
2014-12-17 14:45                                   ` Will Deacon
2014-12-17 14:45                                     ` Will Deacon
2014-12-17 15:35                                     ` Arnd Bergmann
2014-12-17 15:35                                       ` Arnd Bergmann
2014-12-17 17:17                                       ` Will Deacon
2014-12-17 17:17                                         ` Will Deacon
     [not found]                                         ` <20141217171752.GB30307-5wv7dgnIgG8@public.gmane.org>
2014-12-17 19:48                                           ` Arnd Bergmann
2014-12-17 19:48                                             ` Arnd Bergmann
2014-12-21 10:04                                             ` Will Deacon
2014-12-21 10:04                                               ` Will Deacon
     [not found]                                               ` <20141221100451.GA23242-5wv7dgnIgG8@public.gmane.org>
2014-12-22 13:36                                                 ` Arnd Bergmann
2014-12-22 13:36                                                   ` Arnd Bergmann
2015-01-07 18:57                                                   ` Will Deacon
2015-01-07 18:57                                                     ` Will Deacon
     [not found]                                                     ` <20150107185704.GV7485-5wv7dgnIgG8@public.gmane.org>
2015-01-07 19:29                                                       ` Arnd Bergmann
2015-01-07 19:29                                                         ` Arnd Bergmann
2015-01-08 10:53                                                         ` Will Deacon
2015-01-08 10:53                                                           ` Will Deacon
2014-12-17 14:27                                 ` Robin Murphy
2014-12-17 14:27                                   ` Robin Murphy
     [not found]                                   ` <549192D2.10008-5wv7dgnIgG8@public.gmane.org>
2014-12-17 15:01                                     ` Will Deacon
2014-12-17 15:01                                       ` Will Deacon
     [not found]                                       ` <20141217150158.GF870-5wv7dgnIgG8@public.gmane.org>
2014-12-17 15:38                                         ` Arnd Bergmann
2014-12-17 15:38                                           ` Arnd Bergmann
2014-12-17 17:20                                           ` Will Deacon
2014-12-17 17:20                                             ` Will Deacon
2014-12-17  0:05                           ` Laurent Pinchart
2014-12-17  0:05                             ` Laurent Pinchart
2014-12-14 15:51       ` Laurent Pinchart
2014-12-14 15:51         ` Laurent Pinchart
2014-12-15 11:32         ` Will Deacon
2014-12-15 11:32           ` Will Deacon
     [not found]           ` <20141215113252.GH20738-5wv7dgnIgG8@public.gmane.org>
2014-12-17  0:19             ` Laurent Pinchart
2014-12-17  0:19               ` Laurent Pinchart
2014-12-17 11:14               ` Will Deacon
2014-12-17 11:14                 ` Will Deacon
2014-12-01 16:57   ` [PATCH v6 7/8] arm: call iommu_init before of_platform_populate Will Deacon
2014-12-01 16:57     ` Will Deacon
2014-12-01 16:57   ` [PATCH v6 8/8] arm: dma-mapping: plumb our iommu mapping ops into arch_setup_dma_ops Will Deacon
2014-12-01 16:57     ` Will Deacon
     [not found]     ` <1417453034-21379-9-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2015-01-14  9:00       ` Alexandre Courbot
2015-01-14  9:00         ` Alexandre Courbot
     [not found]         ` <54B63028.3090701-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2015-01-14 10:46           ` Will Deacon
2015-01-14 10:46             ` Will Deacon
2015-01-14 13:51             ` Heiko Stübner
2015-01-14 13:51               ` Heiko Stübner
2015-01-14 19:17               ` Will Deacon
2015-01-14 19:17                 ` Will Deacon
     [not found]                 ` <20150114191749.GL4050-5wv7dgnIgG8@public.gmane.org>
2015-01-15  8:30                   ` Thierry Reding
2015-01-15  8:30                     ` Thierry Reding
2015-01-15 11:13                     ` Will Deacon
2015-01-15 11:13                       ` Will Deacon
     [not found]             ` <20150114104610.GC4050-5wv7dgnIgG8@public.gmane.org>
2015-01-15  2:57               ` Alexandre Courbot
2015-01-15  2:57                 ` Alexandre Courbot
2015-01-15  8:28               ` Thierry Reding
2015-01-15  8:28                 ` Thierry Reding
2015-01-15 11:12                 ` Will Deacon
2015-01-15 11:12                   ` Will Deacon
     [not found]                   ` <20150115111211.GF23475-5wv7dgnIgG8@public.gmane.org>
2015-01-15 23:18                     ` Laurent Pinchart
2015-01-15 23:18                       ` Laurent Pinchart
2015-01-18  6:54                       ` Alexandre Courbot
2015-01-18  6:54                         ` Alexandre Courbot
     [not found]                         ` <54BB58AA.5070407-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2015-01-18 11:18                           ` Laurent Pinchart
2015-01-18 11:18                             ` Laurent Pinchart
2015-01-19 11:12                             ` Will Deacon
2015-01-19 11:12                               ` Will Deacon
     [not found]                               ` <20150119111202.GD32131-5wv7dgnIgG8@public.gmane.org>
2015-01-19 11:34                                 ` Laurent Pinchart
2015-01-19 11:34                                   ` Laurent Pinchart
2015-01-19 12:31                                   ` Thierry Reding
2015-01-19 12:31                                     ` Thierry Reding
     [not found]                                     ` <20150119123058.GA7312-AwZRO8vwLAwmlAP/+Wk3EA@public.gmane.org>
2015-01-20 15:14                                       ` Laurent Pinchart
2015-01-20 15:14                                         ` Laurent Pinchart
2015-01-20 15:19                                         ` Will Deacon
2015-01-20 15:19                                           ` Will Deacon
     [not found]                                           ` <20150120151910.GD1549-5wv7dgnIgG8@public.gmane.org>
2015-01-20 15:21                                             ` Will Deacon
2015-01-20 15:21                                               ` Will Deacon
2015-01-20 15:35                                             ` Laurent Pinchart
2015-01-20 15:35                                               ` Laurent Pinchart
2015-01-19 12:43                             ` Thierry Reding
2015-01-19 12:43                               ` Thierry Reding
     [not found]                               ` <20150119124305.GC7312-AwZRO8vwLAwmlAP/+Wk3EA@public.gmane.org>
2015-01-19 12:50                                 ` Will Deacon
2015-01-19 12:50                                   ` Will Deacon
     [not found]                                   ` <20150119125051.GI32131-5wv7dgnIgG8@public.gmane.org>
2015-01-19 13:36                                     ` Thierry Reding
2015-01-19 13:36                                       ` Thierry Reding
     [not found]                                       ` <20150119133633.GA23778-AwZRO8vwLAwmlAP/+Wk3EA@public.gmane.org>
2015-01-20 13:50                                         ` Laurent Pinchart
2015-01-20 13:50                                           ` Laurent Pinchart
2015-01-19 16:13                             ` Arnd Bergmann
2015-01-19 16:13                               ` Arnd Bergmann
2015-01-20 16:41                               ` Laurent Pinchart
2015-01-20 16:41                                 ` Laurent Pinchart
2015-01-19 12:36                       ` Thierry Reding
2015-01-19 12:36                         ` Thierry Reding
     [not found]                         ` <20150119123623.GB7312-AwZRO8vwLAwmlAP/+Wk3EA@public.gmane.org>
2015-01-19 15:52                           ` Arnd Bergmann
2015-01-19 15:52                             ` Arnd Bergmann
2015-01-19 16:21                             ` Thierry Reding
2015-01-19 16:21                               ` Thierry Reding
     [not found]                               ` <20150119162111.GA7751-AwZRO8vwLAwmlAP/+Wk3EA@public.gmane.org>
2015-01-19 17:02                                 ` Arnd Bergmann
2015-01-19 17:02                                   ` Arnd Bergmann
2015-01-20 13:47                                 ` Laurent Pinchart
2015-01-20 13:47                                   ` Laurent Pinchart
2015-01-19 12:49                       ` Thierry Reding
2015-01-19 12:49                         ` Thierry Reding
     [not found]                         ` <20150119124934.GD7312-AwZRO8vwLAwmlAP/+Wk3EA@public.gmane.org>
2015-01-20 14:05                           ` Laurent Pinchart
2015-01-20 14:05                             ` Laurent Pinchart
2014-12-05  7:12   ` [PATCH v6 0/8] Introduce automatic DMA configuration for IOMMU masters Olof Johansson
2014-12-05  7:12     ` Olof Johansson
     [not found]     ` <CAOesGMg9BpL3AyDjuAvH_H5fOm-uga+_CZuJZ5p8zpHpJLg0qA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-12-05 12:11       ` Will Deacon
2014-12-05 12:11         ` Will Deacon
2014-12-15  0:24   ` [PATCH/RFC] iommu/ipmmu-vmsa: Use DT-based instantiation Laurent Pinchart
2014-12-15  0:24     ` Laurent Pinchart

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='CACxGe6taZiAJdf6s0Y5uXtu7=276d1U8hOQEpAwP+k-n44Ndqw@mail.gmail.com' \
    --to=grant.likely-qsej5fyqhm4dnm+yrofe0a@public.gmane.org \
    --cc=Varun.Sethi-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
    --cc=Will.Deacon-5wv7dgnIgG8@public.gmane.org \
    --cc=arnd-r2nGTMty4D4@public.gmane.org \
    --cc=dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
    --cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=jroedel-l3A5Bk7waGM@public.gmane.org \
    --cc=laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=pantelis.antoniou-OWPKS81ov/FWk0Htik3J/w@public.gmane.org \
    --cc=robin.murphy-5wv7dgnIgG8@public.gmane.org \
    --cc=thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    /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.