diff options
author | David S. Miller <davem@davemloft.net> | 2016-06-30 05:03:36 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-06-30 05:03:36 -0400 |
commit | ee58b57100ca953da7320c285315a95db2f7053d (patch) | |
tree | 77b815a31240adc4d6326346908137fc6c2c3a96 /drivers/iommu/intel-iommu.c | |
parent | 6f30e8b022c8e3a722928ddb1a2ae0be852fcc0e (diff) | |
parent | e7bdea7750eb2a64aea4a08fa5c0a31719c8155d (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Several cases of overlapping changes, except the packet scheduler
conflicts which deal with the addition of the free list parameter
to qdisc_enqueue().
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/iommu/intel-iommu.c')
-rw-r--r-- | drivers/iommu/intel-iommu.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c index a644d0cec2d8..10700945994e 100644 --- a/drivers/iommu/intel-iommu.c +++ b/drivers/iommu/intel-iommu.c | |||
@@ -3222,11 +3222,6 @@ static int __init init_dmars(void) | |||
3222 | } | 3222 | } |
3223 | } | 3223 | } |
3224 | 3224 | ||
3225 | iommu_flush_write_buffer(iommu); | ||
3226 | iommu_set_root_entry(iommu); | ||
3227 | iommu->flush.flush_context(iommu, 0, 0, 0, DMA_CCMD_GLOBAL_INVL); | ||
3228 | iommu->flush.flush_iotlb(iommu, 0, 0, 0, DMA_TLB_GLOBAL_FLUSH); | ||
3229 | |||
3230 | if (!ecap_pass_through(iommu->ecap)) | 3225 | if (!ecap_pass_through(iommu->ecap)) |
3231 | hw_pass_through = 0; | 3226 | hw_pass_through = 0; |
3232 | #ifdef CONFIG_INTEL_IOMMU_SVM | 3227 | #ifdef CONFIG_INTEL_IOMMU_SVM |
@@ -3235,6 +3230,18 @@ static int __init init_dmars(void) | |||
3235 | #endif | 3230 | #endif |
3236 | } | 3231 | } |
3237 | 3232 | ||
3233 | /* | ||
3234 | * Now that qi is enabled on all iommus, set the root entry and flush | ||
3235 | * caches. This is required on some Intel X58 chipsets, otherwise the | ||
3236 | * flush_context function will loop forever and the boot hangs. | ||
3237 | */ | ||
3238 | for_each_active_iommu(iommu, drhd) { | ||
3239 | iommu_flush_write_buffer(iommu); | ||
3240 | iommu_set_root_entry(iommu); | ||
3241 | iommu->flush.flush_context(iommu, 0, 0, 0, DMA_CCMD_GLOBAL_INVL); | ||
3242 | iommu->flush.flush_iotlb(iommu, 0, 0, 0, DMA_TLB_GLOBAL_FLUSH); | ||
3243 | } | ||
3244 | |||
3238 | if (iommu_pass_through) | 3245 | if (iommu_pass_through) |
3239 | iommu_identity_mapping |= IDENTMAP_ALL; | 3246 | iommu_identity_mapping |= IDENTMAP_ALL; |
3240 | 3247 | ||