lkml.org 
[lkml]   [2009]   [Nov]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: [stable][PATCH] PCIe hot-plug for Intel IOMMU
    From
    Date
    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@intel.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@intel.com>
    >
    > Tested-by: Yinghai Lu <yinghai@kernel.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@intel.com Intel Corporation



    \
     
     \ /
      Last update: 2009-11-28 07:21    [W:0.020 / U:29.552 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site