lkml.org 
[lkml]   [2009]   [May]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 49/58] intel-iommu: Fix device-to-iommu mapping for PCI-PCI bridges.
    2.6.29-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    From: David Woodhouse <dwmw2@infradead.org>

    (cherry picked from commit 924b6231edfaf1e764ffb4f97ea382bf4facff58)

    When the DMAR table identifies that a PCI-PCI bridge belongs to a given
    IOMMU, that means that the bridge and all devices behind it should be
    associated with the IOMMU. Not just the bridge itself.

    This fixes the device_to_iommu() function accordingly.

    (It's broken if you have the same PCI bus numbers in multiple domains,
    but this function was always broken in that way; I'll be dealing with
    that later).

    Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/pci/intel-iommu.c | 7 ++++++-
    1 file changed, 6 insertions(+), 1 deletion(-)

    --- a/drivers/pci/intel-iommu.c
    +++ b/drivers/pci/intel-iommu.c
    @@ -447,11 +447,16 @@ static struct intel_iommu *device_to_iom
    if (drhd->ignored)
    continue;

    - for (i = 0; i < drhd->devices_cnt; i++)
    + for (i = 0; i < drhd->devices_cnt; i++) {
    if (drhd->devices[i] &&
    drhd->devices[i]->bus->number == bus &&
    drhd->devices[i]->devfn == devfn)
    return drhd->iommu;
    + if (drhd->devices[i]->subordinate &&
    + drhd->devices[i]->subordinate->number <= bus &&
    + drhd->devices[i]->subordinate->subordinate >= bus)
    + return drhd->iommu;
    + }

    if (drhd->include_all)
    return drhd->iommu;



    \
     
     \ /
      Last update: 2009-05-07 00:19    [W:0.022 / U:2.436 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site