From: "Andi Kleen" <ak@suse.de>

Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/arch/x86_64/kernel/pci-gart.c |   20 +++++---------------
 1 files changed, 5 insertions(+), 15 deletions(-)

diff -puN arch/x86_64/kernel/pci-gart.c~x86_64-clean-up-the-iommu-initialisation-a-bit arch/x86_64/kernel/pci-gart.c
--- 25/arch/x86_64/kernel/pci-gart.c~x86_64-clean-up-the-iommu-initialisation-a-bit	Wed Mar 23 15:39:16 2005
+++ 25-akpm/arch/x86_64/kernel/pci-gart.c	Wed Mar 23 15:39:16 2005
@@ -720,6 +720,7 @@ static __init int init_k8_gatt(struct ag
 	unsigned aper_base, new_aper_base;
 	unsigned aper_size, gatt_size, new_aper_size;
 	
+	printk(KERN_INFO "PCI-DMA: Disabling AGP.\n");
 	aper_size = aper_base = info->aper_size = 0;
 	for_all_nb(dev) { 
 		new_aper_base = read_aperture(dev, &new_aper_size); 
@@ -798,26 +799,15 @@ static int __init pci_iommu_init(void)
 		return -1; 
 	} 
 	
-	if (no_iommu || (!force_iommu && end_pfn < 0xffffffff>>PAGE_SHIFT) || 
-	    !iommu_aperture) {
+	if (no_iommu ||
+	    (!force_iommu && end_pfn < 0xffffffff>>PAGE_SHIFT) ||
+	    !iommu_aperture ||
+	    (no_agp && init_k8_gatt(&info) < 0)) {
 		printk(KERN_INFO "PCI-DMA: Disabling IOMMU.\n"); 
 		no_iommu = 1;
 		return -1;
 	}
 
-	if (no_agp) { 
-		int err = -1;
-		printk(KERN_INFO "PCI-DMA: Disabling AGP.\n");
-		no_agp = 1;
-		if (force_iommu || end_pfn >= 0xffffffff>>PAGE_SHIFT)
-			err = init_k8_gatt(&info);
-		if (err < 0) { 
-			printk(KERN_INFO "PCI-DMA: Disabling IOMMU.\n"); 
-			no_iommu = 1;
-			return -1;
-		}
-	} 
-
 	aper_size = info.aper_size * 1024 * 1024;	
 	iommu_size = check_iommu_size(info.aper_base, aper_size); 
 	iommu_pages = iommu_size >> PAGE_SHIFT; 
_