Hi Jaehoon, Seungwon, Ulf, On Thu, 2015-06-25 at 11:25 +0300, Alexey Brodkin wrote: > As per DW MobileStorage databook "each descriptor can transfer up to > 4kB > of data in chained mode", moreover buffer size that is put in "des1" > is > limited to 13 bits, i.e. for example on attempt to > IDMAC_SET_BUFFER1_SIZE(desc, 8192) size value that's effectively > written > will be 0. > > On the platform with 8kB PAGE_SIZE I see dw_mmc gets data blocks in > SG-list of 8kB size and that leads to unpredictable behavior of the > SD/MMC controller. > > In particular on write to FAT partition of SD-card the controller > will > stuck in the middle of DMA transaction. > > Solution to the problem is simple - we need to pass large (> 4kB) > data > buffers to the controller via multiple descriptors. And that's what > that change does. > > What's interesting I did try original driver on same platform but > configured with 4kB PAGE_SIZE and may confirm that data blocks passed > in SG-list to dw_mmc never exeed 4kB limit - that explains why nobody > ever faced a problem I did. > > Signed-off-by: Alexey Brodkin <[email protected]> > Cc: Seungwon Jeon <[email protected]> > Cc: Jaehoon Chung <[email protected]> > Cc: Ulf Hansson <[email protected]> > Cc: [email protected] > Cc: [email protected] > --- > drivers/mmc/host/dw_mmc.c | 109 ++++++++++++++++++++++++++++++------ > ----------
I'm wondering if there're any comments on that patch or if it could be applied? It fixes a real problem on systems on 4K PAGE_SIZE so would be good to have it in upstream. In particular this is the case with ARC AXS board which made its way in upstream kernel recently. Regards, Alexey-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

