aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/amd_iommu_init.c
diff options
context:
space:
mode:
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2009-11-10 05:46:15 -0500
committerIngo Molnar <mingo@elte.hu>2009-11-10 06:31:30 -0500
commitea1b0d3945c7374849235b6ecaea1191ee1d9d50 (patch)
treef7a8edc5817784ac74d6a9c2e26e7b8df1599ab9 /arch/x86/kernel/amd_iommu_init.c
parentde957628ce7c84764ff41331111036b3ae5bad0f (diff)
x86: amd_iommu: Convert amd_iommu_detect() to use iommu_init hook
This changes amd_iommu_detect() to set amd_iommu_init to iommu_init hook if amd_iommu_detect() finds the AMD IOMMU. We can kill the code to check if we found the IOMMU in amd_iommu_init() since amd_iommu_detect() sets amd_iommu_init() only when it found the IOMMU. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Cc: chrisw@sous-sol.org Cc: dwmw2@infradead.org Cc: joerg.roedel@amd.com Cc: muli@il.ibm.com LKML-Reference: <1257849980-22640-5-git-send-email-fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/amd_iommu_init.c')
-rw-r--r--arch/x86/kernel/amd_iommu_init.c17
1 files changed, 3 insertions, 14 deletions
diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c
index 6acd43e9afd7..c41aabddaa2a 100644
--- a/arch/x86/kernel/amd_iommu_init.c
+++ b/arch/x86/kernel/amd_iommu_init.c
@@ -29,6 +29,7 @@
29#include <asm/amd_iommu.h> 29#include <asm/amd_iommu.h>
30#include <asm/iommu.h> 30#include <asm/iommu.h>
31#include <asm/gart.h> 31#include <asm/gart.h>
32#include <asm/x86_init.h>
32 33
33/* 34/*
34 * definitions for the ACPI scanning code 35 * definitions for the ACPI scanning code
@@ -1176,19 +1177,10 @@ static struct sys_device device_amd_iommu = {
1176 * functions. Finally it prints some information about AMD IOMMUs and 1177 * functions. Finally it prints some information about AMD IOMMUs and
1177 * the driver state and enables the hardware. 1178 * the driver state and enables the hardware.
1178 */ 1179 */
1179int __init amd_iommu_init(void) 1180static int __init amd_iommu_init(void)
1180{ 1181{
1181 int i, ret = 0; 1182 int i, ret = 0;
1182 1183
1183
1184 if (no_iommu) {
1185 printk(KERN_INFO "AMD-Vi disabled by kernel command line\n");
1186 return 0;
1187 }
1188
1189 if (!amd_iommu_detected)
1190 return -ENODEV;
1191
1192 /* 1184 /*
1193 * First parse ACPI tables to find the largest Bus/Dev/Func 1185 * First parse ACPI tables to find the largest Bus/Dev/Func
1194 * we need to handle. Upon this information the shared data 1186 * we need to handle. Upon this information the shared data
@@ -1344,10 +1336,7 @@ void __init amd_iommu_detect(void)
1344 if (acpi_table_parse("IVRS", early_amd_iommu_detect) == 0) { 1336 if (acpi_table_parse("IVRS", early_amd_iommu_detect) == 0) {
1345 iommu_detected = 1; 1337 iommu_detected = 1;
1346 amd_iommu_detected = 1; 1338 amd_iommu_detected = 1;
1347#ifdef CONFIG_GART_IOMMU 1339 x86_init.iommu.iommu_init = amd_iommu_init;
1348 gart_iommu_aperture_disabled = 1;
1349 gart_iommu_aperture = 0;
1350#endif
1351 } 1340 }
1352} 1341}
1353 1342