diff options
-rw-r--r-- | arch/x86/kernel/amd_iommu_init.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c index bae4a76a3b54..d1aa2344cd90 100644 --- a/arch/x86/kernel/amd_iommu_init.c +++ b/arch/x86/kernel/amd_iommu_init.c | |||
@@ -644,6 +644,16 @@ static int __init init_memory_definitions(struct acpi_table_header *table) | |||
644 | return 0; | 644 | return 0; |
645 | } | 645 | } |
646 | 646 | ||
647 | static void __init enable_iommus(void) | ||
648 | { | ||
649 | struct amd_iommu *iommu; | ||
650 | |||
651 | list_for_each_entry(iommu, &amd_iommu_list, list) { | ||
652 | iommu_set_exclusion_range(iommu); | ||
653 | iommu_enable(iommu); | ||
654 | } | ||
655 | } | ||
656 | |||
647 | int __init amd_iommu_init(void) | 657 | int __init amd_iommu_init(void) |
648 | { | 658 | { |
649 | int i, ret = 0; | 659 | int i, ret = 0; |
@@ -731,6 +741,12 @@ int __init amd_iommu_init(void) | |||
731 | if (acpi_table_parse("IVRS", init_memory_definitions) != 0) | 741 | if (acpi_table_parse("IVRS", init_memory_definitions) != 0) |
732 | goto free; | 742 | goto free; |
733 | 743 | ||
744 | ret = amd_iommu_init_dma_ops(); | ||
745 | if (ret) | ||
746 | goto free; | ||
747 | |||
748 | enable_iommus(); | ||
749 | |||
734 | printk(KERN_INFO "AMD IOMMU: aperture size is %d MB\n", | 750 | printk(KERN_INFO "AMD IOMMU: aperture size is %d MB\n", |
735 | (1 << (amd_iommu_aperture_order-20))); | 751 | (1 << (amd_iommu_aperture_order-20))); |
736 | 752 | ||