On 08/21/2012 06:43 PM, Ben Hutchings wrote:
On Tue, 2012-08-21 at 18:38 -0700, H. Peter Anvin wrote:
quoted
On 08/21/2012 06:17 PM, Ben Hutchings wrote:
quoted
Current Solarflare network controllers have 128-bit memory-mapped
registers which are normally accessed through a series of I/O
operations. However, it is also possible to access them with a single
MOVAPS instruction on x86_64, and this is measurably faster as it
requires only one PCIe transaction.
Also, have you considered doing this with write combining instead?
We tried it, and it goes horribly wrong. On some systems, the writes
are not combined, but they are reordered in a way the hardware doesn't
support. See the comment at the top of drivers/net/ethernet/sfc/io.h.
Yes, you have to make sure you properly enforce the necessary ordering
requirements manually (I think you can do that with sfence).
-hpa