On Wed, Oct 11, 2017 at 3:58 PM, Ulf Hansson <ulf.hansson@xxxxxxxxxx> wrote: > Actually completing the request in the ->done callback, may still be > possible, because in principle it only needs to inform the other > prepared request that it may start, before it continues to post > process/completes the current one. I try to do that in this patch: https://marc.info/?l=linux-mmc&m=148665460925587&w=2 I'm trying to rebase this work now. > However, by looking at for example how mmci.c works, it actually holds > its spinlock while it calls mmc_request_done(). The same spinlock is > taken in the ->request() function, but not in the ->post_req() > function. In other words, completing the request in the ->done() > callback, would make mmci to keep the spinlock held throughout the > post processing cycle, which then prevents the next request from being > started. It seems my patch would not deliver in some drivers until we look into the locking semantics in the drivers. Yours, Linus Walleij