linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: m.szyprowski@samsung.com (Marek Szyprowski)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 7/8] iommu: of: Handle IOMMU lookup failure with deferred probing or error
Date: Fri, 02 Sep 2016 10:09:55 +0200	[thread overview]
Message-ID: <1c5dde1d-1ffb-d045-c090-032b9f1c7de2@samsung.com> (raw)
In-Reply-To: <000901d1f4af$e26b6c00$a7424400$@codeaurora.org>

Hi Sricharan,


On 2016-08-12 17:40, Sricharan wrote:
> Hi Tomaz,
>
>>> +               if (ops->add_device)
>>> +                       ops = ops->add_device(dev) ? ops : NULL;
>> Patch description fails to mention anything about this change. Also it
>> looks slightly incorrect to lose the error condition here. I think we
>> should at least print some error message here and tell the user that
>> we are falling back to non-IOMMU setup.
>      Ok, will have to improve the patch description to add this and will
>      fix the error value as well. Will also add the remove_device during
>       deconfigure as well.
>
>>
>>>                  of_node_put(np);
>>>                  idx++;
>>> @@ -200,7 +213,7 @@ const struct iommu_ops *of_iommu_configure(struct device *dev,
>>>
>>>   err_put_node:
>>>          of_node_put(np);
>>> -       return NULL;
>>> +       return ops;
>>>   }
>>>
>>>   void __init of_iommu_init(void)
>>> @@ -211,7 +224,7 @@ void __init of_iommu_init(void)
>>>          for_each_matching_node_and_match(np, matches, &match) {
>>>                  const of_iommu_init_fn init_fn = match->data;
>>>
>>> -               if (init_fn(np))
>>> +               if (init_fn && init_fn(np))
>> When is it possible to have NULL init_fn?
>     ya wrong, should not be needed.

init_fn can be NULL if you convert IOMMU driver to use platform device
infrastructure based initialization and you don't need to do anything
before the driver gets probed, so please keep this check.

I used this approach here:
https://git.linaro.org/people/marek.szyprowski/linux-srpol.git/commitdiff/a30735973573128b14bb4a25cf4debaa0979a655
(this commit is a part of v4.8-clocks-pm branch)

IOMMU_OF_DECLARE() with NULL init_fn is needed to notify IOMMU core that
this IOMMU driver is available in the system and core has to defer
probing of drivers before the IOMMU driver gets initialized from its
controller's platform device.

>
>>
>>>                          pr_err("Failed to initialise IOMMU %s\n",
>>>                                  of_node_full_name(np));
>>>          }
>>> diff --git a/drivers/of/device.c b/drivers/of/device.c
>>> index e1fad50..92e02dc 100644
>>> --- a/drivers/of/device.c
>>> +++ b/drivers/of/device.c
>>> @@ -149,6 +149,8 @@ int of_dma_configure_ops(struct device *dev, struct device_node *np)
>>>                  coherent ? " " : " not ");
>>>
>>>          iommu = of_iommu_configure(dev, np);
>>> +       if (IS_ERR(iommu))
>>> +               return PTR_ERR(iommu);
>> nit: Would be good to add a blank line here for improved readability.
>     ok, will add.

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland

  reply	other threads:[~2016-09-02  8:09 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-08 22:49 [PATCH 0/8] IOMMU Probe deferral support Sricharan R
2016-08-08 22:49 ` [PATCH 1/8] arm: dma-mapping: Don't override dma_ops in arch_setup_dma_ops() Sricharan R
2016-09-02  8:16   ` Marek Szyprowski
2016-09-07  6:24     ` Sricharan
2016-08-08 22:49 ` [PATCH 2/8] of: dma: Move range size workaround to of_dma_get_range() Sricharan R
2016-08-08 22:49 ` [PATCH 3/8] of: dma: Make of_dma_deconfigure() public Sricharan R
2016-08-08 22:49 ` [PATCH 4/8] of: dma: Split of_configure_dma() into mask and ops configuration Sricharan R
2016-08-12  7:31   ` Tomasz Figa
2016-08-12 15:18     ` Laurent Pinchart
2016-08-12 15:45       ` Sricharan
2016-09-09  6:53   ` Magnus Damm
2016-09-09  9:48     ` Sricharan
2016-08-08 22:49 ` [PATCH 5/8] drivers: platform: Configure dma operations at probe time Sricharan R
2016-08-16  9:25   ` Laurent Pinchart
2016-08-16 12:28     ` Sricharan
2016-08-08 22:49 ` [PATCH 6/8] drivers: platform: Remove call to of_dma_(con/decon)figure_ops Sricharan R
2016-08-12  7:33   ` Tomasz Figa
2016-08-12 15:42     ` Sricharan
2016-08-08 22:49 ` [PATCH 7/8] iommu: of: Handle IOMMU lookup failure with deferred probing or error Sricharan R
2016-08-12  7:46   ` Tomasz Figa
2016-08-12 15:40     ` Sricharan
2016-09-02  8:09       ` Marek Szyprowski [this message]
2016-09-07  6:16         ` Sricharan
2016-09-02 12:52   ` Marek Szyprowski
2016-09-07  6:29     ` Sricharan
2016-08-08 22:49 ` [PATCH 8/8] drivers: iommu: arm-smmu: Set iommu_ops in probe Sricharan R

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=1c5dde1d-1ffb-d045-c090-032b9f1c7de2@samsung.com \
    --to=m.szyprowski@samsung.com \
    --cc=linux-arm-kernel@lists.infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).