diff options
author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2009-11-10 05:46:15 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-11-10 06:31:30 -0500 |
commit | ea1b0d3945c7374849235b6ecaea1191ee1d9d50 (patch) | |
tree | f7a8edc5817784ac74d6a9c2e26e7b8df1599ab9 /arch/x86/kernel/amd_iommu_init.c | |
parent | de957628ce7c84764ff41331111036b3ae5bad0f (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.c | 17 |
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 | */ |
1179 | int __init amd_iommu_init(void) | 1180 | static 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 | ||