Loading drivers/mmc/card/block.c +24 −5 Original line number Diff line number Diff line Loading @@ -3340,14 +3340,27 @@ static int mmc_blk_cmdq_issue_rq(struct mmc_queue *mq, struct request *req) unsigned int cmd_flags = req ? req->cmd_flags : 0; mmc_get_card(card); if (!card->host->cmdq_ctx.active_reqs && mmc_card_doing_bkops(card)) { ret = mmc_cmdq_halt(card->host, true); if (ret) goto out; ret = mmc_stop_bkops(card); if (ret) { pr_err("%s: %s: mmc_stop_bkops failed %d\n", md->disk->disk_name, __func__, ret); goto out; } ret = mmc_cmdq_halt(card->host, false); if (ret) goto out; } ret = mmc_blk_cmdq_part_switch(card, md); if (ret) { pr_err("%s: %s: partition switch failed %d\n", md->disk->disk_name, __func__, ret); if (req) blk_end_request_all(req, ret); mmc_put_card(card); goto switch_failure; goto out; } if (req) { Loading @@ -3364,7 +3377,13 @@ static int mmc_blk_cmdq_issue_rq(struct mmc_queue *mq, struct request *req) } } switch_failure: return ret; out: if (req) blk_end_request_all(req, ret); mmc_put_card(card); return ret; } Loading drivers/mmc/core/core.c +2 −1 Original line number Diff line number Diff line Loading @@ -335,7 +335,8 @@ static bool mmc_is_valid_state_for_clk_scaling(struct mmc_host *host) * this mode. */ if (!card || (mmc_card_mmc(card) && card->part_curr == EXT_CSD_PART_CONFIG_ACC_RPMB)) (card->part_curr == EXT_CSD_PART_CONFIG_ACC_RPMB || mmc_card_doing_bkops(card)))) return false; if (mmc_send_status(card, &status)) { Loading Loading
drivers/mmc/card/block.c +24 −5 Original line number Diff line number Diff line Loading @@ -3340,14 +3340,27 @@ static int mmc_blk_cmdq_issue_rq(struct mmc_queue *mq, struct request *req) unsigned int cmd_flags = req ? req->cmd_flags : 0; mmc_get_card(card); if (!card->host->cmdq_ctx.active_reqs && mmc_card_doing_bkops(card)) { ret = mmc_cmdq_halt(card->host, true); if (ret) goto out; ret = mmc_stop_bkops(card); if (ret) { pr_err("%s: %s: mmc_stop_bkops failed %d\n", md->disk->disk_name, __func__, ret); goto out; } ret = mmc_cmdq_halt(card->host, false); if (ret) goto out; } ret = mmc_blk_cmdq_part_switch(card, md); if (ret) { pr_err("%s: %s: partition switch failed %d\n", md->disk->disk_name, __func__, ret); if (req) blk_end_request_all(req, ret); mmc_put_card(card); goto switch_failure; goto out; } if (req) { Loading @@ -3364,7 +3377,13 @@ static int mmc_blk_cmdq_issue_rq(struct mmc_queue *mq, struct request *req) } } switch_failure: return ret; out: if (req) blk_end_request_all(req, ret); mmc_put_card(card); return ret; } Loading
drivers/mmc/core/core.c +2 −1 Original line number Diff line number Diff line Loading @@ -335,7 +335,8 @@ static bool mmc_is_valid_state_for_clk_scaling(struct mmc_host *host) * this mode. */ if (!card || (mmc_card_mmc(card) && card->part_curr == EXT_CSD_PART_CONFIG_ACC_RPMB)) (card->part_curr == EXT_CSD_PART_CONFIG_ACC_RPMB || mmc_card_doing_bkops(card)))) return false; if (mmc_send_status(card, &status)) { Loading