[PATCH 2/2] staging: vc04_services: Replace dmac_map_area with dmac_map_sg

Michael Zoran mzoran at crowfest.net
Mon Oct 24 14:01:48 UTC 2016


On Mon, 2016-10-24 at 15:24 +0200, Greg KH wrote:
> On Sun, Oct 23, 2016 at 10:29:32PM -0700, mzoran at crowfest.net wrote:
> > From: Michael Zoran <mzoran at crowfest.net>
> > 
> > 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.
> 
> What is the "normal" message size value when using this driver?
> 
> thanks,
> 
> greg k-h

I honestly have no idea.  From what I understand, the only code that
actually uses this code path is the closed source multimedia drivers
which I know nothing about.

Obviously, one approach would be to have the kernel collect data on
what the typical size is after running some benchmarks.




More information about the devel mailing list