On 2/26/2018 12:36 AM, Arnd Bergmann wrote:
Unfortunately, this is still broken on all big-endian architectures. You could
use __raw_writeq() here to fix it, or change the if() clause at the beginning
to include '!IS_ENABLED(CONFIG_CPU_BIG_ENDIAN)' to avoid that.
Arnd
Please explain. There doesn't seem to be a definitive guide on which of
the several routines for bar mapping and the several routines for memory
copying should be used. We've gone with what we tested and measured.
Also, this code is disabled on everything but X86 right now - so the
patch should be fine. We settled on the combination which our testing
showed the best results. We tried other architectures, but there wasn't
a combination that showed great results. If we figure a combination out,
we will update the code.
Note: when we used ioremap_wc() both PPC/BE and X86 dropped in overall
performance as it seems to make things cacheable and the speculation is
the caching aspects delayed the results just enough to make the overall
gain go down.
-- james