linux/drivers/char/agp
Yinghai Lu 1edc1ab3f6 x86: agp_gart size checking for buggy device
while looking at Rafael J. Wysocki's system boot log,

I found a funny printout:

	Node 0: aperture @ de000000 size 32 MB
	Aperture too small (32 MB)
	AGP bridge at 00:04:00
	Aperture from AGP @ de000000 size 4096 MB (APSIZE 0)
	Aperture too small (0 MB)
	Your BIOS doesn't leave a aperture memory hole
	Please enable the IOMMU option in the BIOS setup
	This costs you 64 MB of RAM
	Mapping aperture over 65536 KB of RAM @ 4000000

	...

	agpgart: Detected AGP bridge 20
	agpgart: Aperture pointing to RAM
	agpgart: Aperture from AGP @ de000000 size 4096 MB
	agpgart: Aperture too small (0 MB)
	agpgart: No usable aperture found.
	agpgart: Consider rebooting with iommu=memaper=2 to get a good aperture.

it means BIOS allocated the correct gart on the NB and AGP bridge, but
because a bug in the silicon (the agp bridge reports the wrong order,
it wants 4G instead) the kernel will reject that allocation.

Also, because the size is only 32MB, and we try to get another 64M for gart,
late fix_northbridge can not revert that change because it still reads
the wrong size from agp bridge.

So try to double check the order value from the agp bridge, before calling
aperture_valid().

[ mingo@elte.hu: 32-bit fix. ]

Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2008-05-12 21:28:10 +02:00
..
agp.h drivers/char: replace remaining __FUNCTION__ occurrences 2008-04-30 08:29:54 -07:00
ali-agp.c x86: cpa: move flush to cpa 2008-01-30 13:34:07 +01:00
alpha-agp.c agp: alpha nopage 2008-02-05 09:44:22 -08:00
amd64-agp.c x86: agp_gart size checking for buggy device 2008-05-12 21:28:10 +02:00
amd-k7-agp.c agp: fix shadowed variable warning in amd-k7-agp.c 2008-04-26 18:38:04 +10:00
ati-agp.c agp: fix missing casts that produced a warning. 2008-02-20 10:37:08 +10:00
backend.c agp: add chipset flushing support to AGP interface 2008-02-05 14:33:32 +10:00
compat_ioctl.c agp: add chipset flushing support to AGP interface 2008-02-05 14:33:32 +10:00
compat_ioctl.h agp: add chipset flushing support to AGP interface 2008-02-05 14:33:32 +10:00
efficeon-agp.c x86: Create clflush() inline, remove hardcoded wbinvd 2007-10-17 20:16:12 +02:00
frontend.c agp: convert drivers/char/agp/frontend.c to use unlocked_ioctl 2008-04-26 18:43:20 +10:00
generic.c fix historic ioremap() abuse in AGP 2008-02-19 14:46:39 +10:00
hp-agp.c convert ill defined log2() to ilog2() 2007-10-17 08:42:48 -07:00
i460-agp.c x86: cpa: move flush to cpa 2008-01-30 13:34:07 +01:00
intel-agp.c agp: remove flush_agp_mappings calls from new flush handling code 2008-02-05 15:05:23 +10:00
isoch.c [AGPGART] Lots of CodingStyle/whitespace cleanups. 2006-02-28 00:54:25 -05:00
Kconfig x86 gart: rename CONFIG_IOMMU to CONFIG_GART_IOMMU 2007-10-30 00:22:22 +01:00
Makefile [AGPGART] Fix modular agpgart ia64 allmodconfig 2007-02-20 14:18:01 -05:00
nvidia-agp.c agp: balance ioremap checks 2007-08-25 18:14:00 +10:00
parisc-agp.c convert ill defined log2() to ilog2() 2007-10-17 08:42:48 -07:00
sgi-agp.c agp: don't lock pages 2007-07-27 10:46:26 +10:00
sis-agp.c agp: add support for 662/671 to agp driver 2008-02-20 10:18:46 +10:00
sworks-agp.c agp: fix missing casts that produced a warning. 2008-02-20 10:37:08 +10:00
uninorth-agp.c [POWERPC] Rename get_property to of_get_property: drivers 2007-05-02 20:04:32 +10:00
via-agp.c agp: Add device id for P4M900 to via-agp module 2007-08-25 18:10:52 +10:00