[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <1259389057.3691.2186.camel@macbook.infradead.org>
Date: Sat, 28 Nov 2009 06:17:37 +0000
From: David Woodhouse <dwmw2@...radead.org>
To: Yinghai Lu <yhlu.kernel@...il.com>
Cc: Fenghua Yu <fenghua.yu@...el.com>,
"Barnes, Jesse" <jesse.barnes@...el.com>, Greg KH <gregkh@...e.de>,
Andrew Morton <akpm@...ux-foundation.org>,
torvalds@...ux-foundation.org, jbarnes@...tuousgeek.org,
stable@...nel.org, iommu@...ts.linux-foundation.org,
linux-kernel@...r.kernel.org
Subject: Re: [stable][PATCH] PCIe hot-plug for Intel IOMMU
On Wed, 2009-11-11 at 13:27 -0800, Yinghai Lu wrote:
> On Wed, Nov 11, 2009 at 7:23 AM, Fenghua Yu <fenghua.yu@...el.com> wrote:
> > To support PCIe hot plug in IOMMU, we register a notifier to respond to device
> > change action.
> >
> > When the notifier gets BUS_NOTIFY_UNBOUND_DRIVER, it removes the device from its
> > DMAR domain.
> >
> > A hot added device will be added into an IOMMU domain when it first does IOMMU
> > op. So there is no need to add more code for hot add.
> >
> > Without the patch, after a hot-remove, a hot-added device on the same slot will
> > not work.
> >
> > Signed-off-by: Fenghua Yu <fenghua.yu@...el.com>
>
> Tested-by: Yinghai Lu <yinghai@...nel.org>
But not with 'intel_iommu=igfx_off', I note. The call to find_domain()
will oops when it runs on the graphics device with ->archdata.iommu ==
DUMMY_DEVICE_DOMAIN_INFO (== -1). All other calls to find_domain() are
guaranteed not to happen for such devices.
One might argue that find_domain() should cope, but do we really want to
be doing that extra check in the unmap fast path?
Testing this fix now...
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
index 1840a05..f44a015 100644
--- a/drivers/pci/intel-iommu.c
+++ b/drivers/pci/intel-iommu.c
@@ -3228,6 +3228,9 @@ static int device_notifier(struct notifier_block *nb,
struct pci_dev *pdev = to_pci_dev(dev);
struct dmar_domain *domain;
+ if (iommu_no_mapping(dev))
+ return 0;
+
domain = find_domain(pdev);
if (!domain)
return 0;
--
David Woodhouse Open Source Technology Centre
David.Woodhouse@...el.com Intel Corporation
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists