On Wed, 11 Dec 2002 17:59:28 EST, Doug Ledford said:
> This sounds like the problem some chipsets had with wrapping counters in
> the dma pointer read code. Basically, when the sg segment is advanced to
> the next segment, the offset counter would not be simultaneously cleared
> but instead would be momentarily delayed before the clear occured and a
> read at just the wrong time could result in us thinking that the buffer
> was a full sg segment farther than it was. There were changes made to the
> oss i810 driver around version 0.18 to solve this problem if I remember
> correctly. Similar code may be needed in the alsa driver, I'm not sure
> because I have looked at it or tried it (my machine with an i810 doesn't
> run 2.5 kernels).
Ahh... That would exactly explain what I was seeing, and why it worked under
2.4.18 for me, and gives me a good idea where to look (the relevant code in the
alsa and oss drivers is pretty similar, there's only so many ways to code a
ring buffer when the other part is cast in silicon. ;)
/Valdis
This archive was generated by hypermail 2b29 : Sun Dec 15 2002 - 22:00:24 EST