Merge tag 'iommu-fixes-v4.14-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu
Pull IOMMU fixes from Joerg Roedel: - keep an important data structure in the Exynos driver around after kernel-init to fix a kernel-oops - keep SWIOTLB enabled when SME is active in the AMD IOMMU driver - add a missing IOTLB sync to the AMD IOMMU driver * tag 'iommu-fixes-v4.14-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: iommu/amd: Finish TLB flush in amd_iommu_unmap() iommu/exynos: Remove initconst attribute to avoid potential kernel oops iommu/amd: Do not disable SWIOTLB if SME is active
This commit is contained in:
@@ -2773,14 +2773,16 @@ int __init amd_iommu_init_api(void)
|
||||
|
||||
int __init amd_iommu_init_dma_ops(void)
|
||||
{
|
||||
swiotlb = iommu_pass_through ? 1 : 0;
|
||||
swiotlb = (iommu_pass_through || sme_me_mask) ? 1 : 0;
|
||||
iommu_detected = 1;
|
||||
|
||||
/*
|
||||
* In case we don't initialize SWIOTLB (actually the common case
|
||||
* when AMD IOMMU is enabled), make sure there are global
|
||||
* dma_ops set as a fall-back for devices not handled by this
|
||||
* driver (for example non-PCI devices).
|
||||
* when AMD IOMMU is enabled and SME is not active), make sure there
|
||||
* are global dma_ops set as a fall-back for devices not handled by
|
||||
* this driver (for example non-PCI devices). When SME is active,
|
||||
* make sure that swiotlb variable remains set so the global dma_ops
|
||||
* continue to be SWIOTLB.
|
||||
*/
|
||||
if (!swiotlb)
|
||||
dma_ops = &nommu_dma_ops;
|
||||
@@ -3046,6 +3048,7 @@ static size_t amd_iommu_unmap(struct iommu_domain *dom, unsigned long iova,
|
||||
mutex_unlock(&domain->api_lock);
|
||||
|
||||
domain_flush_tlb_pde(domain);
|
||||
domain_flush_complete(domain);
|
||||
|
||||
return unmap_size;
|
||||
}
|
||||
|
||||
@@ -709,7 +709,7 @@ static const struct dev_pm_ops sysmmu_pm_ops = {
|
||||
pm_runtime_force_resume)
|
||||
};
|
||||
|
||||
static const struct of_device_id sysmmu_of_match[] __initconst = {
|
||||
static const struct of_device_id sysmmu_of_match[] = {
|
||||
{ .compatible = "samsung,exynos-sysmmu", },
|
||||
{ },
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user