On Fri, Nov 11, 2011 at 8:48 AM, Per Forlin <[email protected]> wrote:
> On Fri, Nov 11, 2011 at 7:51 AM, Dong, Chuanxiao
> <[email protected]> wrote:
>> Hi Jaehoon,
>>
>>> -----Original Message-----
>>> From: Jaehoon Chung [mailto:[email protected]]
>>> Sent: Wednesday, November 02, 2011 6:29 PM
>>> To: linux-mmc
>>> Cc: Chris Ball; Kyungmin Park; Hanumath Prasad; Sebastian Rasmussen; Per
>>> Forlin;
>>> [email protected]; 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 <[email protected]>
>>> Signed-off-by: Kyungmin Park <[email protected]>
>>> CC: Hanumath Prasad <[email protected]>
>>>
>>> ---
>>> 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.
>>
> Good point! I'm in favor of this change.
Or, put the check before the switch-case.
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html