All of lore.kernel.org
 help / color / mirror / Atom feed
From: Suman Anna <s-anna-l0cyMroinI0@public.gmane.org>
To: Laurent Pinchart
	<laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>,
	Thierry Reding
	<thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Nicolas Chauvet <kwizart-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Tony Lindgren <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>,
	iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
Subject: Re: [PATCH 2/4] iommu/omap: Play nice in multi-platform builds
Date: Wed, 4 Feb 2015 11:37:52 -0600	[thread overview]
Message-ID: <54D258F0.8040905@ti.com> (raw)
In-Reply-To: <1718219.kRa6INVfJa@avalon>

Hi Thierry,

On 02/04/2015 08:31 AM, Laurent Pinchart wrote:
> Hi Thierry,
> 
> Thank you for the patch.
> 
> On Wednesday 04 February 2015 08:58:08 Thierry Reding wrote:
>> From: Thierry Reding <treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
>>
>> The OMAP IOMMU driver unconditionally executes code and registers a
>> struct iommu_ops with the platform bus irrespective of whether it runs
>> on an OMAP SoC or not. This causes problems in multi-platform kernels
>> where drivers for other SoCs will no longer be able to register their
>> own struct iommu_ops or even try to use a struct iommu_ops for an IOMMU
>> that obviously isn't there.
>>
>> The smallest fix I could think of is to check for the existence of any
>> OMAP IOMMU devices in the device tree and skip initialization otherwise.
>>
>> This fixes a problem on Tegra20 where the DRM driver will try to use the
>> obviously non-existent OMAP IOMMU.
>>
>> Reported-by: Nicolas Chauvet <kwizart-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>> Cc: Tony Lindgren <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>
>> Cc: Suman Anna <s-anna-l0cyMroinI0@public.gmane.org>
>> Cc: Laurent Pinchart <laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
>> Signed-off-by: Thierry Reding <treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
>> ---
>>  drivers/iommu/omap-iommu.c | 6 ++++++
>>  1 file changed, 6 insertions(+)
>>
>> diff --git a/drivers/iommu/omap-iommu.c b/drivers/iommu/omap-iommu.c
>> index bbb7dcef02d3..e4d4f133a3b3 100644
>> --- a/drivers/iommu/omap-iommu.c
>> +++ b/drivers/iommu/omap-iommu.c
>> @@ -1377,6 +1377,9 @@ static int __init omap_iommu_init(void)
>>  	const unsigned long flags = SLAB_HWCACHE_ALIGN;
>>  	size_t align = 1 << 10; /* L2 pagetable alignement */
>>
>> +	if (!of_find_matching_node(NULL, omap_iommu_of_match))
>> +		return 0;
>> +

Need to call the of_node_put on the cases it succeeds right, you should
change this to the semantics you used in the arm-smmu driver.

> 
> We should convert the omap-iommu driver to proper DT instantiation, but this 
> should do for now.

Agreed, and I think this check is better than the iommu_present check
used in some of the other IOMMU drivers, as that would work for a SoC
family only if that is the first one getting registered.

regards
Suman

> 
>>  	p = kmem_cache_create("iopte_cache", IOPTE_TABLE_SIZE, align, flags,
>>  			      iopte_cachep_ctor);
>>  	if (!p)
>> @@ -1394,6 +1397,9 @@ subsys_initcall(omap_iommu_init);
>>
>>  static void __exit omap_iommu_exit(void)
>>  {
>> +	if (!of_find_matching_node(NULL, omap_iommu_of_match))
>> +		return;
>> +
>>  	kmem_cache_destroy(iopte_cachep);
>>
>>  	platform_driver_unregister(&omap_iommu_driver);
> 
> The exit function will never be called as the omap-iommu driver is always 
> built-in. You could just remove the exit function.
> 

  reply	other threads:[~2015-02-04 17:37 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-04  7:58 [PATCH 0/4] iommu: A couple of urgent fixes Thierry Reding
     [not found] ` <1423036690-3862-1-git-send-email-thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-02-04  7:58   ` [PATCH 1/4] iommu/exynos: Play nice in multi-platform builds Thierry Reding
     [not found]     ` <1423036690-3862-2-git-send-email-thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-02-04 11:26       ` Marek Szyprowski
2015-02-04  7:58   ` [PATCH 2/4] iommu/omap: " Thierry Reding
     [not found]     ` <1423036690-3862-3-git-send-email-thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-02-04 14:31       ` Laurent Pinchart
2015-02-04 17:37         ` Suman Anna [this message]
     [not found]           ` <54D258F0.8040905-l0cyMroinI0@public.gmane.org>
2015-02-06 10:48             ` Thierry Reding
2015-02-06 10:47         ` Thierry Reding
2015-02-04  7:58   ` [PATCH 3/4] iommu/rockchip: " Thierry Reding
     [not found]     ` <1423036690-3862-4-git-send-email-thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-02-05  8:30       ` Heiko Stübner
2015-02-04  7:58   ` [PATCH 4/4] iommu/msm: Mark driver BROKEN Thierry Reding
     [not found]     ` <1423036690-3862-5-git-send-email-thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-02-04 18:54       ` Olav Haugan
     [not found]         ` <54D26AF8.2010101-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2015-02-04 19:32           ` Rob Clark

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=54D258F0.8040905@ti.com \
    --to=s-anna-l0cymroini0@public.gmane.org \
    --cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=kwizart-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org \
    --cc=thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=tony-4v6yS6AI5VpBDgjK7y7TUQ@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.