+ Adrian, Christoph On Thu, 21 Jan 2021 at 09:13, Liu Xiang <liu.xiang@xxxxxxxxxxxxxx> wrote: > > After commit "40d09b53bfc557af7481b9d80f060a7ac9c7d314", request is > completed in softirq. This may cause the system to suffer bad preemptoff > time. > The mmc driver has its own complete workqueue, but it can not work > well now. > The REQ_HIPRI flag can be used to complete request directly in its own > complete workqueue and the preemptoff problem could be avoided. I am trying to understand all of the problem, but I don't quite get it, sorry. Would it be possible for you to extend the description in the commit message a bit? More exactly, what will happen if we tag a request with REQ_HIPRI before completing it? Apologize for my ignorance, but I am currently a bit overwhelmed with work, so I didn't have the time to really look it up myself. > > Signed-off-by: Liu Xiang <liu.xiang@xxxxxxxxxxxxxx> > --- > drivers/mmc/core/block.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c > index 42e27a298..c27239a89 100644 > --- a/drivers/mmc/core/block.c > +++ b/drivers/mmc/core/block.c > @@ -1985,8 +1985,10 @@ static void mmc_blk_mq_post_req(struct mmc_queue *mq, struct request *req) > */ > if (mq->in_recovery) > mmc_blk_mq_complete_rq(mq, req); > - else if (likely(!blk_should_fake_timeout(req->q))) > + else if (likely(!blk_should_fake_timeout(req->q))) { > + req->cmd_flags |= REQ_HIPRI; > blk_mq_complete_request(req); Is there a specific reason why REQ_HIPRI is applicable only for mmc_blk_mq_post_req() case? We have other paths where we complete requests for MMC as well, are those not relevant? > + } > > mmc_blk_mq_dec_in_flight(mq, req); > } > -- > 2.17.1 > Kind regards Uffe