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:
parent
fd0581bbb4
commit
547c5355d1
3 changed files with 3 additions and 3 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue