Hi Jaehoon, > -----Original Message----- > From: Jaehoon Chung [mailto:jh80.chung@xxxxxxxxxxx] > Sent: Wednesday, November 02, 2011 6:29 PM > To: linux-mmc > Cc: Chris Ball; Kyungmin Park; Hanumath Prasad; Sebastian Rasmussen; Per Forlin; > svenkatr@xxxxxx; Dong, Chuanxiao > Subject: [PATCH v2] mmc: support BKOPS feature for eMMC > > Enable eMMC background operations (BKOPS) feature. > > If URGENT_BKOPS is set after a response, note that BKOPS > are required. After all I/O requests are finished, run > BKOPS if required. Should read/write operations be requested > during BKOPS, first issue HPI to interrupt the ongoing BKOPS > and then service the request. > > If you want to enable this feature, set MMC_CAP2_BKOPS. > > Signed-off-by: Jaehoon Chung <jh80.chung@xxxxxxxxxxx> > Signed-off-by: Kyungmin Park <kyungmin.park@xxxxxxxxxxx> > CC: Hanumath Prasad <hanumath.prasad@xxxxxxxxxxxxxx> > > --- > Changelog V2: > - Use EXCEPTION_STATUS instead of URGENT_BKOPS > - Add function to check Exception_status(for eMMC4.5) > - remove unnecessary code. > > drivers/mmc/card/block.c | 9 +++++ > drivers/mmc/card/queue.c | 4 ++ > drivers/mmc/core/core.c | 87 > ++++++++++++++++++++++++++++++++++++++++++++ > drivers/mmc/core/mmc.c | 9 ++++- > drivers/mmc/core/mmc_ops.c | 4 ++ > include/linux/mmc/card.h | 12 ++++++ > include/linux/mmc/core.h | 3 ++ > include/linux/mmc/host.h | 1 + > include/linux/mmc/mmc.h | 14 +++++++ > 9 files changed, 142 insertions(+), 1 deletions(-) > > diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c > index a1cb21f..fbfb405 100644 > --- a/drivers/mmc/card/block.c > +++ b/drivers/mmc/card/block.c > @@ -1192,6 +1192,15 @@ static int mmc_blk_issue_rw_rq(struct mmc_queue > *mq, struct request *rqc) > case MMC_BLK_SUCCESS: > case MMC_BLK_PARTIAL: > /* > + * Check BKOPS urgency from each R1 response > + */ > + if (mmc_card_mmc(card) && > + (brq->cmd.resp[0] & R1_EXCEPTION_EVENT)) { > + if (mmc_is_exception_event(card, > + EXT_CSD_URGENT_BKOPS)) > + mmc_card_set_need_bkops(card); > + } > + /* Have you thought about moving this into mmc_wait_for_req_done()? We can check if the command is a R1 or R1B or not, and set BKOPS bit in there if needed. I was just thinking if we put such code here, we may only cover the successful scenario but not for the failed cases. Putting in mmc_wait_for_req_done can cover all cases. Thanks Chuanxiao -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html