[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <6a801ff9e6471bda7c6f510dfa2ba7e7c35cb559.camel@intel.com>
Date: Mon, 13 Apr 2020 22:10:50 +0000
From: "Derrick, Jonathan" <jonathan.derrick@...el.com>
To: "heiko@...ech.de" <heiko@...ech.de>,
"kgene@...nel.org" <kgene@...nel.org>,
"jonathanh@...dia.com" <jonathanh@...dia.com>,
"robin.murphy@....com" <robin.murphy@....com>,
"baolu.lu@...ux.intel.com" <baolu.lu@...ux.intel.com>,
"thierry.reding@...il.com" <thierry.reding@...il.com>,
"bjorn.andersson@...aro.org" <bjorn.andersson@...aro.org>,
"dwmw2@...radead.org" <dwmw2@...radead.org>,
"m.szyprowski@...sung.com" <m.szyprowski@...sung.com>,
"joro@...tes.org" <joro@...tes.org>,
"will@...nel.org" <will@...nel.org>,
"jean-philippe@...aro.org" <jean-philippe@...aro.org>,
"krzk@...nel.org" <krzk@...nel.org>,
"robdclark@...il.com" <robdclark@...il.com>,
"matthias.bgg@...il.com" <matthias.bgg@...il.com>,
"gerald.schaefer@...ibm.com" <gerald.schaefer@...ibm.com>,
"agross@...nel.org" <agross@...nel.org>
CC: "linux-s390@...r.kernel.org" <linux-s390@...r.kernel.org>,
"virtualization@...ts.linux-foundation.org"
<virtualization@...ts.linux-foundation.org>,
"linux-tegra@...r.kernel.org" <linux-tegra@...r.kernel.org>,
"linux-samsung-soc@...r.kernel.org"
<linux-samsung-soc@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"iommu@...ts.linux-foundation.org" <iommu@...ts.linux-foundation.org>,
"linux-rockchip@...ts.infradead.org"
<linux-rockchip@...ts.infradead.org>,
"linux-arm-msm@...r.kernel.org" <linux-arm-msm@...r.kernel.org>,
"linux-mediatek@...ts.infradead.org"
<linux-mediatek@...ts.infradead.org>,
"jroedel@...e.de" <jroedel@...e.de>
Subject: Re: [RFC PATCH 11/34] iommu: Split off default domain allocation
from group assignment
Hi Joerg,
On Tue, 2020-04-07 at 20:37 +0200, Joerg Roedel wrote:
> From: Joerg Roedel <jroedel@...e.de>
>
> When a bus is initialized with iommu-ops, all devices on the bus are
> scanned and iommu-groups are allocated for them, and each groups will
> also get a default domain allocated.
>
> Until now this happened as soon as the group was created and the first
> device added to it. When other devices with different default domain
> requirements were added to the group later on, the default domain was
> re-allocated, if possible.
>
> This resulted in some back and forth and unnecessary allocations, so
> change the flow to defer default domain allocation until all devices
> have been added to their respective IOMMU groups.
>
> The default domains are allocated for newly allocated groups after
> each device on the bus is handled and was probed by the IOMMU driver.
>
> Signed-off-by: Joerg Roedel <jroedel@...e.de>
> ---
[snip]
I had to add the following for initial VMD support. The new PCIe domain
added on VMD endpoint probe didn't have the dev_iommu member set on the
VMD subdevices, which I'm guessing is due to probe_iommu_group already
having been run on the VMD endpoint's group prior to those subdevices
being added.
diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
index 8a5e1ac328dd..ac1e4fb9bf48 100644
--- a/drivers/iommu/iommu.c
+++ b/drivers/iommu/iommu.c
@@ -1577,6 +1577,9 @@ static int iommu_bus_notifier(struct notifier_block *nb,
if (action == BUS_NOTIFY_ADD_DEVICE) {
int ret;
+ if (!dev_iommu_get(dev))
+ return -ENOMEM;
+
ret = iommu_probe_device(dev);
return (ret) ? NOTIFY_DONE : NOTIFY_OK;
} else if (action == BUS_NOTIFY_REMOVED_DEVICE) {
Powered by blists - more mailing lists