From 1c678897a08d7abdcb798687d9d84249170a037b Mon Sep 17 00:00:00 2001 From: Pavel Machek Date: Mon, 26 May 2008 20:40:47 +0200 Subject: [PATCH] --- yaml --- r: 99451 b: refs/heads/master c: fa5b8a30cf03520737e9a0ee2ee03a61b2eccf05 h: refs/heads/master i: 99449: d3e8453d2d9c57faa7315909e60b9ddc9942dfb3 99447: b01849bd3f4d38f095cee19c9e5791dfc38e1e55 v: v3 --- [refs] | 2 +- trunk/arch/x86/kernel/aperture_64.c | 21 ++++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index 9a6e037e83c8..676f6a2f7222 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: dd564d0cf08686cf0cc332bf9d48cba5b26a8171 +refs/heads/master: fa5b8a30cf03520737e9a0ee2ee03a61b2eccf05 diff --git a/trunk/arch/x86/kernel/aperture_64.c b/trunk/arch/x86/kernel/aperture_64.c index 6eea42eb287b..e5b17f910f8b 100644 --- a/trunk/arch/x86/kernel/aperture_64.c +++ b/trunk/arch/x86/kernel/aperture_64.c @@ -271,16 +271,16 @@ void __init early_gart_iommu_check(void) * or BIOS forget to put that in reserved. * try to update e820 to make that region as reserved. */ - int fix, slot; + int i, fix, slot; u32 ctl; u32 aper_size = 0, aper_order = 0, last_aper_order = 0; u64 aper_base = 0, last_aper_base = 0; - int aper_enabled = 0, last_aper_enabled = 0; - int i; + int aper_enabled = 0, last_aper_enabled = 0, last_valid = 0; if (!early_pci_allowed()) return; + /* This is mostly duplicate of iommu_hole_init */ fix = 0; for (i = 0; i < ARRAY_SIZE(bus_dev_ranges); i++) { int bus; @@ -301,19 +301,22 @@ void __init early_gart_iommu_check(void) aper_base = read_pci_config(bus, slot, 3, AMD64_GARTAPERTUREBASE) & 0x7fff; aper_base <<= 25; - if ((last_aper_order && aper_order != last_aper_order) || - (last_aper_base && aper_base != last_aper_base) || - (last_aper_enabled && aper_enabled != last_aper_enabled)) { - fix = 1; - goto out; + if (last_valid) { + if ((aper_order != last_aper_order) || + (aper_base != last_aper_base) || + (aper_enabled != last_aper_enabled)) { + fix = 1; + break; + } } + last_aper_order = aper_order; last_aper_base = aper_base; last_aper_enabled = aper_enabled; + last_valid = 1; } } -out: if (!fix && !aper_enabled) return;