EXA "nv" vs AGP writes

Benjamin Herrenschmidt benh at kernel.crashing.org
Thu Oct 6 23:57:58 PDT 2005


Hi Lars !

I've been testing/hacking a bit your NV patch (or rather Ajax' modified
version of it) on a 5200FX in an iMac G5. I've run into various trouble
with AGP so I started with disabling all the hooks that touch it
(UploadToScreen and DownloadFromScreen typically) and I've left
composite disabled for now.

Then, I've been trying to get AGP working with UTS. I added some timeout
code to the function that waits for a notifier to complete since the
server was systematically locking up looping in there waiting for ever
for completion.

I noticed that if timeout after a little while, it actually works. That
is, my pixmap was properly blitted to the framebuffer. That tend to show
that transfers AGP -> fb seem to work, but for some reason, the notifier
wasn't getting updated (it stayed all 0xffffffff's, I verified all 32
bytes). 

I've then changed the notifier by putting it in the framebuffer instead
of AGP memory (at the top of the FB, just after the command ring). And
miracle  ... it actually worked.

So it seems that writes to AGP memory don't work on this machine. Well,
I know some Apple chipsets don't support it indeed, but I expected that
one to work since it looks like the Darwin driver does not set the
"CantWrite" flag bit on this one. Oh well...

I then tried getting DFS to work, but it always timesout, wherever the
notifier is. That tend to confirm my idea that something is wrong with
writes to AGP memory.

Now, I'm not sure if hte problem is with my host chipset, or if some
magic bit in the nvidia chip need to be tweaked at this point. I think
however that it might be useful to implement a fallback mecanism using
PCI SG DMA instead with kernel help. I'm currently working on some DRM
bits to do that on radeon which I'll publish as soon as I get something
working.

Any other idea welcome,

Cheers,
Ben.





More information about the xorg mailing list