I just wanted to contribute the following piece of information that might help with R300 lockups. I do not know whether it applies or not in this case, but just something to be aware about.

Radeon has a memory controller which translates internal address space of the chip into accesses of different memory - framebuffer, agp, system ram.

So from the point of view of Radeon chip there is a single flat 32 bit address space which contains everything. This is nice because you can simply set texture offset to a particular number and the chip will pull it from appropriate memory - be it video memory, agp or system ram. (albeit system ram access is done via PCI, not AGP commands and thus is much slower).

It used to be that Radeon DRM driver had two modes for usage of scratch registers - a mode when it polled Radeon chip directly and a mode when the contents of the registers were "mirrored" in the system RAM. The driver would try mirroring during startup and if it fails uses polling method.

The mirroring works as follows: each time scratch register is written the radeon controller uses PCI to write their value to a specific location in system memory.

This, of course, would not work if the memory controller is misprogrammed - which was the cause of failures.

Which way can memory controller be misprogrammed ? The part that concerns us are positions of Video RAM, AGP and System Ram in Radeon address space.
(these are specified by RADEON_MC_AGP_LOCATION, RADEON_MC_FB_LOCATION).

The memory controller *always* assumes that system RAM (accessible via PCI) starts at 0. So, if RADEON_MC_FB_LOCATION, for example, is set to 0 then we have video RAM overlapping system RAM. However, the size of video RAM is usually much smaller than the size of system RAM. So if the scratch registers image in system memory had small physical address you might get a lockup and if it was high you don't. You also would be more likely to get a lockup when load on system memory increased.

This problem has been fixed for plain Radeon drivers, but it could be that something similar is manifesting again on R300..

Note that old driver was able to test whether mirroring works, so it would correspond to behaviour of RV350 cards. It could be that R300 cards
are more touchy in this regard.

 On the other hand, all of this might not be relevant at all..

                       best

                        Vladimir Dergachev


-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.  How far can you shotput
a projector? How fast can you ride your desk chair down the office luge track?
If you want to score the big prize, get to know the little guy. Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to