Hi, On Tue, Nov 20, 2018 at 03:21:21PM -0300, Ezequiel Garcia wrote: > As reported by Aaro, the JZ4740 MMC driver throws a warning > when the kernel is built without preemption (CONFIG_PREEMPT_NONE=y). > > [ 16.461094] jz4740-mmc 13450000.mmc: [jz4740_mmc_prepare_dma_data] invalid cookie: data->host_cookie 567 host->next_data.cookie 568 [...] > [ 16.601092] jz4740-mmc 13450000.mmc: [jz4740_mmc_prepare_dma_data] invalid cookie: data->host_cookie 582 host->next_data.cookie 583 > > The problem seems to be related to how pre_req/post_req is implemented. > Currently, it seems the driver expects jz4740_mmc_prepare_dma_data() > to be called with monotonically increasing host_cookie values, > which is wrong. > > Moreover, the implementation is overly complicated, keeping track > of unneeded "next cookie" state. > > So, instead of attempting to fix the current pre_req/post_req > implementation, this commit refactors the driver, dropping > the state, following other drivers such as dw_mmc and sdhci. > > Cc: Paul Cercueil <paul@xxxxxxxxxxxxxxx> > Cc: Mathieu Malaterre <malat@xxxxxxxxxx> > Reported-by: Aaro Koskinen <aaro.koskinen@xxxxxx> > Signed-off-by: Ezequiel Garcia <ezequiel@xxxxxxxxxxxxx> Thanks for this! I tested this on top of v4.19 on CI20 with PREEMPT_NONE=y and MMC works now fine without spam. I also did a longer stress test compiling Python natively on a file system on MMC. Also briefly checked with the PREEMPT=y kernel config and at least the rootfs got mounted fine. So: Tested-by: Aaro Koskinen <aaro.koskinen@xxxxxx> A.