Linux IOMMU Development
 help / color / mirror / Atom feed
From: Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org>
To: Joerg Roedel <jroedel-l3A5Bk7waGM@public.gmane.org>
Cc: Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>,
	iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	David Woodhouse <dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
Subject: Re: [PATCH 06/11] iommu: Add iommu_device_set_fwnode() interface
Date: Fri, 10 Feb 2017 16:59:43 +0000	[thread overview]
Message-ID: <af8ef45f-d8e4-41a6-0ff6-88d60864075c@arm.com> (raw)
In-Reply-To: <20170210161122.GB18474-l3A5Bk7waGM@public.gmane.org>

On 10/02/17 16:11, Joerg Roedel wrote:
> On Fri, Feb 10, 2017 at 04:03:07PM +0000, Robin Murphy wrote:
>> Yeah, on reflection explicit initialisation is certainly easier to read
>> than a bunch of arguments handled implicitly by register(), but then
>> from that angle, even more clear would be to simply have the drivers
>> write the relevant struct members directly - I'd be quite happy with
>> that, and we then don't have to add another setter to iommu.h for every
>> new struct member (and risk it looking like Java code...)
> 
> Yeah, that was my first approach. But there is the Intel VT-d anomaly,
> where a part of the driver can be built-in (dmar.c) with
> CONFIG_IOMMU_API=N. In this case 'struct iommu_device' is empty, and
> trying to access the members directly doesn't compile anymore.
> 
> I have to look if this anomaly could be removed, then it is probably the
> best to set the struct members directly without wrapper functions.

Ah, I hadn't managed to spot that - I assume there probably is some
valid edge case for wanting x2APIC functionality without DMA remapping
which prevents us from just adding the dependency. Looking at the code,
though, that situation does seem to rely on the call never actually
executing at runtime - not only is it conditional on a static variable
which is only ever set by non-present code, it would fail the probe if
it were called - so I think it would be perfectly reasonable to just
address that particular problem as below (untested, but if it lets us
get rid of the dummy !IOMMU_API definitions of the registration
functions I'd say we've done the right thing).

Robin.

----->8-----
diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c
index 8ccbd7023194..161641caff79 100644
--- a/drivers/iommu/dmar.c
+++ b/drivers/iommu/dmar.c
@@ -1077,6 +1077,7 @@ static int alloc_iommu(struct dmar_drhd_unit *drhd)

        raw_spin_lock_init(&iommu->register_lock);

+#ifdef CONFIG_IOMMU_API
        if (intel_iommu_enabled) {
                iommu->iommu_dev = iommu_device_create(NULL, iommu,
                                                       intel_iommu_groups,
@@ -1087,6 +1088,7 @@ static int alloc_iommu(struct dmar_drhd_unit *drhd)
                        goto err_unmap;
                }
        }
+#endif

        drhd->iommu = iommu;

  parent reply	other threads:[~2017-02-10 16:59 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-09 11:32 [PATCH 00/11 v3] Let IOMMU core know about individual IOMMUs Joerg Roedel
     [not found] ` <1486639981-32368-1-git-send-email-joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-02-09 11:32   ` [PATCH 01/11] iommu: Rename iommu_get_instance() Joerg Roedel
     [not found]     ` <1486639981-32368-2-git-send-email-joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-02-10 14:12       ` Robin Murphy
     [not found]         ` <baf8d059-8c74-baa4-1806-ca1e3733cd93-5wv7dgnIgG8@public.gmane.org>
2017-02-10 15:36           ` Joerg Roedel
2017-02-09 11:32   ` [PATCH 02/11] iommu: Rename struct iommu_device Joerg Roedel
2017-02-09 11:32   ` [PATCH 03/11] iommu: Introduce new 'struct iommu_device' Joerg Roedel
     [not found]     ` <1486639981-32368-4-git-send-email-joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-02-09 20:42       ` kbuild test robot
2017-02-09 11:32   ` [PATCH 04/11] iommu: Add sysfs bindings for struct iommu_device Joerg Roedel
2017-02-09 11:32   ` [PATCH 05/11] iommu: Make iommu_device_link/unlink take a " Joerg Roedel
2017-02-09 11:32   ` [PATCH 06/11] iommu: Add iommu_device_set_fwnode() interface Joerg Roedel
     [not found]     ` <1486639981-32368-7-git-send-email-joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-02-10 14:16       ` Robin Murphy
     [not found]         ` <417eee8c-4e1b-57f0-2c00-d6c3926ce66d-5wv7dgnIgG8@public.gmane.org>
2017-02-10 15:22           ` Joerg Roedel
     [not found]             ` <20170210152254.GI7339-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-02-10 16:03               ` Robin Murphy
     [not found]                 ` <f770249b-ad98-10d8-ea79-dc10cef7f4df-5wv7dgnIgG8@public.gmane.org>
2017-02-10 16:11                   ` Joerg Roedel
     [not found]                     ` <20170210161122.GB18474-l3A5Bk7waGM@public.gmane.org>
2017-02-10 16:59                       ` Robin Murphy [this message]
2017-02-09 11:32   ` [PATCH 07/11] iommu/arm-smmu: Make use of the iommu_register interface Joerg Roedel
     [not found]     ` <1486639981-32368-8-git-send-email-joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-02-10 14:20       ` Robin Murphy
     [not found]         ` <9bba214f-4d83-1e37-2df8-2f7db11f7d1f-5wv7dgnIgG8@public.gmane.org>
2017-02-10 15:25           ` Joerg Roedel
     [not found]             ` <20170210152553.GJ7339-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-02-10 17:07               ` Robin Murphy
2017-02-09 11:32   ` [PATCH 08/11] iommu/msm: Make use of iommu_device_register interface Joerg Roedel
     [not found]     ` <1486639981-32368-9-git-send-email-joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-02-10 14:35       ` Robin Murphy
     [not found]         ` <5bda5842-45b4-fc3c-7eea-351e4c2261b1-5wv7dgnIgG8@public.gmane.org>
2017-02-10 15:33           ` Joerg Roedel
     [not found]             ` <20170210153339.GK7339-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-02-10 17:36               ` Robin Murphy
2017-02-09 11:32   ` [PATCH 09/11] iommu/mediatek: " Joerg Roedel
2017-02-09 11:32   ` [PATCH 10/11] iommu/exynos: " Joerg Roedel
     [not found]     ` <1486639981-32368-11-git-send-email-joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-02-10 13:46       ` Marek Szyprowski
     [not found]         ` <9a1997dd-5835-cb9a-6478-7fb276151e52-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2017-02-10 13:59           ` Joerg Roedel
2017-02-09 11:33 ` [PATCH 11/11] iommu: Remove iommu_register_instance interface Joerg Roedel

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=af8ef45f-d8e4-41a6-0ff6-88d60864075c@arm.com \
    --to=robin.murphy-5wv7dgnigg8@public.gmane.org \
    --cc=dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
    --cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=jroedel-l3A5Bk7waGM@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=will.deacon-5wv7dgnIgG8@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox