]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
x86/PCI: don't call e820_all_mapped with -1 in the mmconfig case
authorYinghai Lu <yinghai@kernel.org>
Sat, 18 Apr 2009 08:43:46 +0000 (01:43 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 8 May 2009 22:45:03 +0000 (15:45 -0700)
commit 044cd80942e47b9de0915b627902adf05c52377f upstream.

e820_all_mapped need end is (addr + size) instead of (addr + size - 1)

Cc: stable@kernel.org
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/x86/pci/mmconfig-shared.c

index 89bf9242c80a3b068fa2c1fcf3f6cba4b447193d..91369469a8510b6bb0eec7fe07f09d054b311ba9 100644 (file)
@@ -254,7 +254,7 @@ static acpi_status __init check_mcfg_resource(struct acpi_resource *res,
                if (!fixmem32)
                        return AE_OK;
                if ((mcfg_res->start >= fixmem32->address) &&
-                   (mcfg_res->end < (fixmem32->address +
+                   (mcfg_res->end <= (fixmem32->address +
                                      fixmem32->address_length))) {
                        mcfg_res->flags = 1;
                        return AE_CTRL_TERMINATE;
@@ -271,7 +271,7 @@ static acpi_status __init check_mcfg_resource(struct acpi_resource *res,
                return AE_OK;
 
        if ((mcfg_res->start >= address.minimum) &&
-           (mcfg_res->end < (address.minimum + address.address_length))) {
+           (mcfg_res->end <= (address.minimum + address.address_length))) {
                mcfg_res->flags = 1;
                return AE_CTRL_TERMINATE;
        }
@@ -318,7 +318,7 @@ static int __init is_mmconf_reserved(check_reserved_t is_reserved,
        u64 old_size = size;
        int valid = 0;
 
-       while (!is_reserved(addr, addr + size - 1, E820_RESERVED)) {
+       while (!is_reserved(addr, addr + size, E820_RESERVED)) {
                size >>= 1;
                if (size < (16UL<<20))
                        break;