lkml.org 
[lkml]   [2019]   [Mar]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH v2 5/7] iommu/vt-d: Enable DMA remapping after rmrr mapped
    From
    Date
    The rmrr devices require identity map of the rmrr regions before
    enabling DMA remapping. Otherwise, there will be a window during
    which DMA from/to the rmrr regions will be blocked. In order to
    alleviate this, we move enabling DMA remapping after all rmrr
    regions get mapped.

    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    ---
    drivers/iommu/intel-iommu.c | 16 ++++++++++------
    1 file changed, 10 insertions(+), 6 deletions(-)

    diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
    index 104d36f225a7..35821df70f78 100644
    --- a/drivers/iommu/intel-iommu.c
    +++ b/drivers/iommu/intel-iommu.c
    @@ -3518,11 +3518,6 @@ static int __init init_dmars(void)
    ret = dmar_set_interrupt(iommu);
    if (ret)
    goto free_iommu;
    -
    - if (!translation_pre_enabled(iommu))
    - iommu_enable_translation(iommu);
    -
    - iommu_disable_protect_mem_regions(iommu);
    }

    return 0;
    @@ -4912,7 +4907,6 @@ int __init intel_iommu_init(void)
    goto out_free_reserved_range;
    }
    up_write(&dmar_global_lock);
    - pr_info("Intel(R) Virtualization Technology for Directed I/O\n");

    #if defined(CONFIG_X86) && defined(CONFIG_SWIOTLB)
    swiotlb = 0;
    @@ -4935,6 +4929,16 @@ int __init intel_iommu_init(void)
    register_memory_notifier(&intel_iommu_memory_nb);
    cpuhp_setup_state(CPUHP_IOMMU_INTEL_DEAD, "iommu/intel:dead", NULL,
    intel_iommu_cpu_dead);
    +
    + /* Finally, we enable the DMA remapping hardware. */
    + for_each_iommu(iommu, drhd) {
    + if (!translation_pre_enabled(iommu))
    + iommu_enable_translation(iommu);
    +
    + iommu_disable_protect_mem_regions(iommu);
    + }
    + pr_info("Intel(R) Virtualization Technology for Directed I/O\n");
    +
    intel_iommu_enabled = 1;
    intel_iommu_debugfs_init();

    --
    2.17.1
    \
     
     \ /
      Last update: 2019-03-14 13:00    [W:2.489 / U:0.120 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site