x86_64: off-by-two error in aperture.c

I'm using a custom BIOS to configure the northbridge GART at address
0x80000000, size 2G.  Linux complains:

"Aperture from northbridge cpu 0 beyond 4GB. Ignoring."

I think there's an off-by-two error in arch/x86_64/kernel/aperture.c:

AK: use correct types for i386

Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Andrew Hastings 2007-05-11 11:23:19 +02:00 committed by Linus Torvalds
parent fd0581bbb4
commit 547c5355d1
3 changed files with 3 additions and 3 deletions

View File

@ -86,7 +86,7 @@ static int __init aperture_valid(u64 aper_base, u32 aper_size)
printk("Aperture too small (%d MB)\n", aper_size>>20); printk("Aperture too small (%d MB)\n", aper_size>>20);
return 0; return 0;
} }
if (aper_base + aper_size >= 0xffffffff) { if (aper_base + aper_size > 0x100000000UL) {
printk("Aperture beyond 4GB. Ignoring.\n"); printk("Aperture beyond 4GB. Ignoring.\n");
return 0; return 0;
} }

View File

@ -476,7 +476,7 @@ static __init unsigned read_aperture(struct pci_dev *dev, u32 *size)
aper_base <<= 25; aper_base <<= 25;
aper_size = (32 * 1024 * 1024) << aper_order; aper_size = (32 * 1024 * 1024) << aper_order;
if (aper_base + aper_size >= 0xffffffff || !aper_size) if (aper_base + aper_size > 0x100000000UL || !aper_size)
aper_base = 0; aper_base = 0;
*size = aper_size; *size = aper_size;

View File

@ -268,7 +268,7 @@ static int __devinit aperture_valid(u64 aper, u32 size)
printk(KERN_ERR PFX "Aperture too small (%d MB)\n", size>>20); printk(KERN_ERR PFX "Aperture too small (%d MB)\n", size>>20);
return 0; return 0;
} }
if (aper + size > 0xffffffff) { if ((u64)aper + size > 0x100000000ULL) {
printk(KERN_ERR PFX "Aperture out of bounds\n"); printk(KERN_ERR PFX "Aperture out of bounds\n");
return 0; return 0;
} }