diff options
| -rw-r--r-- | arch/x86/kernel/aperture_64.c | 11 | ||||
| -rw-r--r-- | arch/x86/kernel/pci-gart_64.c | 3 |
2 files changed, 8 insertions, 6 deletions
diff --git a/arch/x86/kernel/aperture_64.c b/arch/x86/kernel/aperture_64.c index e0dfb6856aa2..3704997e8b25 100644 --- a/arch/x86/kernel/aperture_64.c +++ b/arch/x86/kernel/aperture_64.c | |||
| @@ -280,7 +280,8 @@ void __init early_gart_iommu_check(void) | |||
| 280 | * or BIOS forget to put that in reserved. | 280 | * or BIOS forget to put that in reserved. |
| 281 | * try to update e820 to make that region as reserved. | 281 | * try to update e820 to make that region as reserved. |
| 282 | */ | 282 | */ |
| 283 | int i, fix, slot; | 283 | u32 agp_aper_base = 0, agp_aper_order = 0; |
| 284 | int i, fix, slot, valid_agp = 0; | ||
| 284 | u32 ctl; | 285 | u32 ctl; |
| 285 | u32 aper_size = 0, aper_order = 0, last_aper_order = 0; | 286 | u32 aper_size = 0, aper_order = 0, last_aper_order = 0; |
| 286 | u64 aper_base = 0, last_aper_base = 0; | 287 | u64 aper_base = 0, last_aper_base = 0; |
| @@ -290,6 +291,8 @@ void __init early_gart_iommu_check(void) | |||
| 290 | return; | 291 | return; |
| 291 | 292 | ||
| 292 | /* This is mostly duplicate of iommu_hole_init */ | 293 | /* This is mostly duplicate of iommu_hole_init */ |
| 294 | agp_aper_base = search_agp_bridge(&agp_aper_order, &valid_agp); | ||
| 295 | |||
| 293 | fix = 0; | 296 | fix = 0; |
| 294 | for (i = 0; i < ARRAY_SIZE(bus_dev_ranges); i++) { | 297 | for (i = 0; i < ARRAY_SIZE(bus_dev_ranges); i++) { |
| 295 | int bus; | 298 | int bus; |
| @@ -342,10 +345,10 @@ void __init early_gart_iommu_check(void) | |||
| 342 | } | 345 | } |
| 343 | } | 346 | } |
| 344 | 347 | ||
| 345 | if (!fix) | 348 | if (valid_agp) |
| 346 | return; | 349 | return; |
| 347 | 350 | ||
| 348 | /* different nodes have different setting, disable them all at first*/ | 351 | /* disable them all at first */ |
| 349 | for (i = 0; i < ARRAY_SIZE(bus_dev_ranges); i++) { | 352 | for (i = 0; i < ARRAY_SIZE(bus_dev_ranges); i++) { |
| 350 | int bus; | 353 | int bus; |
| 351 | int dev_base, dev_limit; | 354 | int dev_base, dev_limit; |
| @@ -458,8 +461,6 @@ out: | |||
| 458 | 461 | ||
| 459 | if (aper_alloc) { | 462 | if (aper_alloc) { |
| 460 | /* Got the aperture from the AGP bridge */ | 463 | /* Got the aperture from the AGP bridge */ |
| 461 | } else if (!valid_agp) { | ||
| 462 | /* Do nothing */ | ||
| 463 | } else if ((!no_iommu && max_pfn > MAX_DMA32_PFN) || | 464 | } else if ((!no_iommu && max_pfn > MAX_DMA32_PFN) || |
| 464 | force_iommu || | 465 | force_iommu || |
| 465 | valid_agp || | 466 | valid_agp || |
diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c index e6a0d402f171..56c0e730d3fe 100644 --- a/arch/x86/kernel/pci-gart_64.c +++ b/arch/x86/kernel/pci-gart_64.c | |||
| @@ -710,7 +710,8 @@ static void gart_iommu_shutdown(void) | |||
| 710 | struct pci_dev *dev; | 710 | struct pci_dev *dev; |
| 711 | int i; | 711 | int i; |
| 712 | 712 | ||
| 713 | if (no_agp) | 713 | /* don't shutdown it if there is AGP installed */ |
| 714 | if (!no_agp) | ||
| 714 | return; | 715 | return; |
| 715 | 716 | ||
| 716 | for (i = 0; i < num_k8_northbridges; i++) { | 717 | for (i = 0; i < num_k8_northbridges; i++) { |
