• Michael Zoran's avatar
    staging: vc04_services: Replace dmac_map_area with dmac_map_sg · cf9caf19
    Michael Zoran authored
    The original arm implementation uses dmac_map_area which is not
    portable.  Replace it with an architecture neutral version
    which uses dma_map_sg.
    
    As you can see that for larger page sizes, the dma_map_sg
    implementation is faster then the original unportable dma_map_area
    implementation.
    
    Test                       dmac_map_area   dma_map_page dma_map_sg
    vchiq_test -b 4 10000      51us/iter       76us/iter    76us
    vchiq_test -b 8 10000      70us/iter       82us/iter    91us
    vchiq_test -b 16 10000     94us/iter       118us/iter   121us
    vchiq_test -b 32 10000     146us/iter      173us/iter   187us
    vchiq_test -b 64 10000     263us/iter      328us/iter   299us
    vchiq_test -b 128 10000    529us/iter      631us/iter   595us
    vchiq_test -b 256 10000    2285us/iter     2275us/iter  2001us
    vchiq_test -b 512 10000    4372us/iter     4616us/iter  4123us
    
    For message sizes >= 64KB, dma_map_sg is faster then dma_map_page.
    
    For message size >= 256KB, the dma_map_sg is the fastest
    implementation.
    
    "Normal" messages sizes should be about 1MB which is beyond
    the length that this change shows a speed increase.
    
    This is v2 of the patch which includes extra WARN_ONs and
    incorporates feedback from Eric Anholt <eric@anholt.net>.
    Signed-off-by: default avatarMichael Zoran <mzoran@crowfest.net>
    Reviewed-by: default avatarEric Anholt <eric@anholt.net>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    cf9caf19
vchiq_2835_arm.c 16 KB