iommu/amd: Move gart fallback to amd_iommu_init
The fallback to the GART driver in the case amd_iommu doesn't work was executed in a function called free_iommu_resources, which didn't really make sense. This was even being called twice if amd_iommu=off was specified on the command line. The only complication is that it needs to be verified that amd_iommu has fully relinquished control by calling free_iommu_resources and emptying the amd_iommu_list. Signed-off-by: Kevin Mitchell <kevmitch@arista.com> Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
3ddbe913e5
commit
bf4bff46ea
|
@ -2340,15 +2340,6 @@ static void __init free_iommu_resources(void)
|
|||
amd_iommu_dev_table = NULL;
|
||||
|
||||
free_iommu_all();
|
||||
|
||||
#ifdef CONFIG_GART_IOMMU
|
||||
/*
|
||||
* We failed to initialize the AMD IOMMU - try fallback to GART
|
||||
* if possible.
|
||||
*/
|
||||
gart_iommu_init();
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
/* SB IOAPIC is always on this device in AMD systems */
|
||||
|
@ -2767,6 +2758,16 @@ static int __init amd_iommu_init(void)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_GART_IOMMU
|
||||
if (ret && list_empty(&amd_iommu_list)) {
|
||||
/*
|
||||
* We failed to initialize the AMD IOMMU - try fallback
|
||||
* to GART if possible.
|
||||
*/
|
||||
gart_iommu_init();
|
||||
}
|
||||
#endif
|
||||
|
||||
for_each_iommu(iommu)
|
||||
amd_iommu_debugfs_setup(iommu);
|
||||
|
||||
|
|
Loading…
Reference in New Issue