diff options
author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2009-11-10 05:46:14 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-11-10 06:31:23 -0500 |
commit | de957628ce7c84764ff41331111036b3ae5bad0f (patch) | |
tree | d13dcb1c152e738e079a03fc3bb0b87d1a4d3dab /arch/x86/kernel/pci-gart_64.c | |
parent | d7b9f7be216b04ff9d108f856bc03d96e7b3439c (diff) |
x86: GART: Convert gart_iommu_hole_init() to use iommu_init hook
This changes gart_iommu_hole_init() to set gart_iommu_init() to
iommu_init hook if gart_iommu_hole_init() finds the GART IOMMU.
We can kill the code to check if we found the IOMMU in
gart_iommu_init() since gart_iommu_hole_init() sets
gart_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-4-git-send-email-fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/pci-gart_64.c')
-rw-r--r-- | arch/x86/kernel/pci-gart_64.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c index eb46ab3f52b2..0410bd30060d 100644 --- a/arch/x86/kernel/pci-gart_64.c +++ b/arch/x86/kernel/pci-gart_64.c | |||
@@ -709,7 +709,7 @@ static void gart_iommu_shutdown(void) | |||
709 | } | 709 | } |
710 | } | 710 | } |
711 | 711 | ||
712 | void __init gart_iommu_init(void) | 712 | int __init gart_iommu_init(void) |
713 | { | 713 | { |
714 | struct agp_kern_info info; | 714 | struct agp_kern_info info; |
715 | unsigned long iommu_start; | 715 | unsigned long iommu_start; |
@@ -719,7 +719,7 @@ void __init gart_iommu_init(void) | |||
719 | long i; | 719 | long i; |
720 | 720 | ||
721 | if (cache_k8_northbridges() < 0 || num_k8_northbridges == 0) | 721 | if (cache_k8_northbridges() < 0 || num_k8_northbridges == 0) |
722 | return; | 722 | return 0; |
723 | 723 | ||
724 | #ifndef CONFIG_AGP_AMD64 | 724 | #ifndef CONFIG_AGP_AMD64 |
725 | no_agp = 1; | 725 | no_agp = 1; |
@@ -731,13 +731,6 @@ void __init gart_iommu_init(void) | |||
731 | (agp_copy_info(agp_bridge, &info) < 0); | 731 | (agp_copy_info(agp_bridge, &info) < 0); |
732 | #endif | 732 | #endif |
733 | 733 | ||
734 | if (swiotlb) | ||
735 | return; | ||
736 | |||
737 | /* Did we detect a different HW IOMMU? */ | ||
738 | if (iommu_detected && !gart_iommu_aperture) | ||
739 | return; | ||
740 | |||
741 | if (no_iommu || | 734 | if (no_iommu || |
742 | (!force_iommu && max_pfn <= MAX_DMA32_PFN) || | 735 | (!force_iommu && max_pfn <= MAX_DMA32_PFN) || |
743 | !gart_iommu_aperture || | 736 | !gart_iommu_aperture || |
@@ -747,7 +740,7 @@ void __init gart_iommu_init(void) | |||
747 | "but GART IOMMU not available.\n"); | 740 | "but GART IOMMU not available.\n"); |
748 | printk(KERN_WARNING "falling back to iommu=soft.\n"); | 741 | printk(KERN_WARNING "falling back to iommu=soft.\n"); |
749 | } | 742 | } |
750 | return; | 743 | return 0; |
751 | } | 744 | } |
752 | 745 | ||
753 | /* need to map that range */ | 746 | /* need to map that range */ |
@@ -840,6 +833,8 @@ void __init gart_iommu_init(void) | |||
840 | flush_gart(); | 833 | flush_gart(); |
841 | dma_ops = &gart_dma_ops; | 834 | dma_ops = &gart_dma_ops; |
842 | x86_platform.iommu_shutdown = gart_iommu_shutdown; | 835 | x86_platform.iommu_shutdown = gart_iommu_shutdown; |
836 | |||
837 | return 0; | ||
843 | } | 838 | } |
844 | 839 | ||
845 | void __init gart_parse_options(char *p) | 840 | void __init gart_parse_options(char *p) |