x86/amd-iommu: Fix IOMMU-API initialization for iommu=pt

commit f532509437 upstream

This patch moves the initialization of the iommu-api out of
the dma-ops initialization code. This ensures that the
iommu-api is initialized even with iommu=pt.

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Joerg Roedel
2010-02-03 16:13:08 +01:00
committed by Greg Kroah-Hartman
parent 6d14e6b46a
commit 16ecf8a237
3 changed files with 9 additions and 2 deletions

View File

@@ -32,6 +32,7 @@ extern void amd_iommu_flush_all_domains(void);
extern void amd_iommu_flush_all_devices(void);
extern void amd_iommu_shutdown(void);
extern void amd_iommu_apply_erratum_63(u16 devid);
extern void amd_iommu_init_api(void);
#else
static inline int amd_iommu_init(void) { return -ENODEV; }
static inline void amd_iommu_detect(void) { }

View File

@@ -2083,6 +2083,11 @@ static struct dma_map_ops amd_iommu_dma_ops = {
.dma_supported = amd_iommu_dma_supported,
};
void __init amd_iommu_init_api(void)
{
register_iommu(&amd_iommu_ops);
}
/*
* The function which clues the AMD IOMMU driver into dma_ops.
*/
@@ -2124,8 +2129,6 @@ int __init amd_iommu_init_dma_ops(void)
/* Make the driver finally visible to the drivers */
dma_ops = &amd_iommu_dma_ops;
register_iommu(&amd_iommu_ops);
bus_register_notifier(&pci_bus_type, &device_nb);
amd_iommu_stats_init();

View File

@@ -1288,9 +1288,12 @@ int __init amd_iommu_init(void)
ret = amd_iommu_init_passthrough();
else
ret = amd_iommu_init_dma_ops();
if (ret)
goto free;
amd_iommu_init_api();
enable_iommus();
if (iommu_pass_through)