John McCorquodale <mcq1@viz.cacr.caltech.edu> writes:
Andreas and other interested folks,
I just grabbed the 2.4.21-139 kernel, built it and installed it on my Tyan S2885ANRF. It now finds the 8151 AGP controller correctly, and seems to correctly identify both AGP110 (ATI X1) and older AGP v2 cards, go into 4x/8x modes fine and the like.
That kernel especially contained a fix for the 2885 after we got hold of it a few days earlier.
However, if you take video-card-of-your-choice, map its framebuffer and set the AGP bridge for fast writes, the write bandwidth to the framebuffer is BAD. About a factor of 40 slower than it should be. A 1x card writes at about 18MB/s, a 4x card at 25 and an 8x card at 48MB/s. These numbers should be 256MB/s, 1GB/s and 2GB/s. Under no circumstances (1x, fast writes off) should the bandwidth be less than 256MB/s.
Do you have some simple test program that I can run locally?
I've tired this on lots of 760MPX machines and get the performance I expect, but I am at a loss as to what could possibly be causing this slowness.
I notice that the Tyan board sets up the MTRR for the whole PCI physical address space to be uncachable:
linux:~ # cat /proc/mtrr reg00: base=0xc0000000 (3072MB), size=1024MB: uncachable, count=1 reg01: base=0xbe000000 (3040MB), size= 32MB: uncachable, count=1
Yes, this looks strange. How much memory do you have?
In previous framebuffer drivers, I have set the MTRR for the frame buffer to be write combining, which does have an effect on performance ('tho I've never known the effect to be a factor of 40!). I'd like to do the same thing on the Tyan board, but unsetting the c0000000-ffffffff uncacheable MTRR, or fragmenting it so that everything in that region EXCEPT the framebuffer is uncacheable both quickly lead to system crasshes (why? how could caching the framebuffer hang the system in text mode (corrupt screen contents, sure)? is this a race while the region is uncacheable?)
It seems there's something strange going on. Could this be some kind of IOMMU interaction? The AGP aperture ends up at e0000000, which I cover with an uncacheable MTRR entry when I try the fragments, so I don't THINK I'm hurting anything.
Any ideas why it could possibly be so slow or what I might do to get it back up to reasonable write speeds? Hard to do video when you can only get 2 frames/sec into the card's RAM.
Andreas -- Andreas Jaeger, aj@suse.de, http://www.suse.de/~aj SuSE Linux AG, Deutschherrnstr. 15-19, 90429 Nürnberg, Germany GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126