On Fri, 2014-04-04 at 17:31 +0900, Masahiro Yamada wrote: > So my question is, what should we do to improve the performance? > Is it a bad idea to use DMA? > > > The sequence of page_read in this patch is like this: > (1) Cache flush of DMA buffer area > (2) DMA transfer from NAND device to DMA buffer > (3) memcpy() from DMA buffer to destination memory > > In Linux Kernel, I guess there is DMA sync process between (2) and (3). > But we don't have DMA API in U-Boot.
flush_dcache_range() plays the same role as the Linux DMA sync. > If we do not use DMA, the read sequence is like this > (1) Copy data directly from NAND register to destination memory > > According to my benchmark, this is about twice faster. Have you measured the performance in the Linux driver? > Scott, do you have any advice? Do some profiling to see where the time is spent. I don't know how easy it is to do automated profiling of U-Boot, but you could add some manual instrumentation of the driver to measure min/avg/max/total time taken over various intervals. -Scott _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot