Hardware Environment: Irongate (AMD-751, AMD-761) chipset motherboards (UP1000, UP1100, UP1500) Problem Description: AGP GART support is missing on Irongate motherboards (UP1000, UP1100, and UP1500) due to memory coherency issues. See arch/alpha/kernel/core_irongate.c, 251 static void __init 252 irongate_setup_agp(void) 253 { 254 /* Disable the GART window. AGPGART doesn't work due to yet 255 unresolved memory coherency issues... */ 256 IRONGATE0->agpva = IRONGATE0->agpva & ~0xf; 257 alpha_agpgart_size = 0; 258 } Just a reminder that there are Alpha users still here with this equipment, and that there is still a bug in this code somewhere. Unfortunately, lacking AGP GART support reduces what would be 2x and 4x AGP buses on UP1{0,1}00 and UP1500 respectively to 1x AGP, or the bandwidth of a standard PCI bus.
Send patches. Realistically that is the only way you will get this changed for such old hardware.
It seems it was supported in the 2.4.x kernels and was quietly dropped in the 2.6.x release?!?! ftp://ftp.az.kernel.org/pub/linux/kernel/v2.4/patch-html/patch-2.4.10/linux_arch_alpha_kernel_core_irongate.c.html Even though we don't 'complain', there are still plenty of UP1x00 out there. I just recently purchased a UP1500 NIB (new in box).
AMD Chipset documentation is easily available, but unfortunately I don't believe the code dealing with it is at fault. AMD 751-Docs: http://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_739_1133%5E1137,00.html AMD-761 Docs: http://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_739_1133,00.html More unfortunately, the only email address in the file is @dec.com. The other three names are from Alpha Processor, Inc. :( Ivan, Jay, and rth, can you confirm that this is definitely an Alpha problem and not an AGP problem? Any insight or suggestions for fixing this?
http://www.alphalinux.org/archives/linux-alpha/December1999/0049.html Richard Henderson seems to have previously worked on this. The mail and patch are from 1999, but may be somehow useful. Richard, I'll email you directly as well, but I think I have a UP1500 for you.
Created attachment 19713 [details] Original irongate_setup_agp function Attached is a patch which includes the original irongate_setup_agp function code. That is, before it was disabled and removed. It _will_ not magically fix this bug, but it may provide a starting point for at minimum reproducing the bug(s) that caused its removal. Reassigning this bug to Ivan Kokshaysky since he appears to have made non-trivial changes to core_irongate.c.
Actually I worked on this back in 2003 (kernel 2.5.69 or something around that): http://lkml.org/lkml/2003/5/14/76 Later I found that PALcode is indeed broken (at least on UP1500) and it's not possible to work around the AGP related machine checks. So I had to give up on that stuff. In theory, it's possible to fix the PALcode ;-) - all you need is up-to-date SRM source code for nautilus, OpenVMS box and something like Console Development Kit (cannot recall its correct name). But realistically, I think we should wipe out remaining traces of AGP from core_irongate and stick to PCI GART mode.
OK, here's the story: After discussion with Ivan and review of the hardware reference manual, it was determined that AGP and Alphas are inherently incompatible for a number of reasons, namely that Alpha is cache coherent, AGP is not. So the easy way isn't possible. Possibly, AGP GART support could be implemented using the "magic" 16 Gb offset, but given the restrictions, it's probably not worth it. Please close this bug as WONTFIX or whichever.