On Wed, 2008-10-08 at 12:40 -0500, Scott Wood wrote:
The performance difference most likely comes from the fact that copy
to/from user can assume that the memory is cacheable, while memcpy is
occasionally used on cache-inhibited memory -- so dcbz isn't used. We
may be better off handling the alignment fault on those occasions, and
we should use dcba on chips that support it.
Note that the kernel memcpy isn't supposed to be used for non-cacheable
memory. That's what memcpy_to/fromio are for.
But Paul has a point that for small copies especially, the cost of
the cache instructions outweigh their benefit.
Cheers,
Ben.