lkml.org 
[lkml]   [2009]   [Dec]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[016/151] x86/amd-iommu: attach devices to pre-allocated domains early
    2.6.32-stable review patch.  If anyone has any objections, please let us know.

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

    From: Joerg Roedel <joerg.roedel@amd.com>

    commit be831297716036de5b24308447ecb69f1706a846 upstream.

    For some devices the ACPI table may define unity map
    requirements which must me met when the IOMMU is enabled. So
    we need to attach devices to their domains as early as
    possible so that these mappings are in place when needed.
    This patch assigns the domains right after they are
    allocated. Otherwise this can result in I/O page faults
    before a driver binds to a device and BIOS is still using
    it.

    Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    arch/x86/kernel/amd_iommu.c | 8 ++++++--
    1 file changed, 6 insertions(+), 2 deletions(-)

    --- a/arch/x86/kernel/amd_iommu.c
    +++ b/arch/x86/kernel/amd_iommu.c
    @@ -2047,10 +2047,10 @@ static void prealloc_protection_domains(
    struct pci_dev *dev = NULL;
    struct dma_ops_domain *dma_dom;
    struct amd_iommu *iommu;
    - u16 devid;
    + u16 devid, __devid;

    while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) {
    - devid = calc_devid(dev->bus->number, dev->devfn);
    + __devid = devid = calc_devid(dev->bus->number, dev->devfn);
    if (devid > amd_iommu_last_bdf)
    continue;
    devid = amd_iommu_alias_table[devid];
    @@ -2065,6 +2065,10 @@ static void prealloc_protection_domains(
    init_unity_mappings_for_device(dma_dom, devid);
    dma_dom->target_dev = devid;

    + attach_device(iommu, &dma_dom->domain, devid);
    + if (__devid != devid)
    + attach_device(iommu, &dma_dom->domain, __devid);
    +
    list_add_tail(&dma_dom->list, &iommu_pd_list);
    }
    }



    \
     
     \ /
      Last update: 2009-12-17 05:47    [W:0.029 / U:0.152 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site