At Tue, 22 Nov 2011 11:17:45 +0100, Tim Blechmann wrote:
today, i was able to bisect the issue and the first bad commit is:
commit 6175ddf06b6172046a329e3abfd9c901a43efd2e Author: Brian Gerst brgerst@gmail.com Date: Fri Feb 5 09:37:07 2010 -0500
x86: Clean up mem*io functions.
the communication with the device is done by passing simple commands via memcpy_fromio and memcpy_toio (compare sound/pci/lx6464es/lx_core.c, lines 75 to 99). any idea, what is going wrong there?
The old and new implementations of memcpy_*io do not have any differences in the documented API, but the new ones are much more optimized, so they might not use 8- or 32-bit accesses or a different access pattern.
Does the card's mapped I/O region behave exactly like memory, or has it any restrictions on how it can be used? In the latter case, you should implement your readbuf/writebuf functions by hand to use plain 32-bit accesses in order (or whatever is required).
indeed, emulating memcpy_*io with ioread32/iowrite32 fixes the issue.
Good to hear. Could you submit a patch?
thanks,
Takashi