From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755783AbcE0Axa (ORCPT ); Thu, 26 May 2016 20:53:30 -0400 Received: from mailout2.samsung.com ([203.254.224.25]:40784 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755729AbcE0Ax0 (ORCPT ); Thu, 26 May 2016 20:53:26 -0400 X-AuditID: cbfee68d-f79646d000001386-26-57479a83b6c2 Message-id: <57479A84.4080207@samsung.com> Date: Fri, 27 May 2016 09:53:24 +0900 From: Jaehoon Chung User-Agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-version: 1.0 To: Shawn Lin , Ulf Hansson Cc: linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, Doug Anderson , linux-rockchip@lists.infradead.org Subject: Re: [RFC PATCH 2/2] mmc: dw_mmc: check card present before starting request References: <1464232091-24882-1-git-send-email-shawn.lin@rock-chips.com> In-reply-to: <1464232091-24882-1-git-send-email-shawn.lin@rock-chips.com> Content-type: text/plain; charset=windows-1252 Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprNIsWRmVeSWpSXmKPExsWyRsSkWLd5lnu4wY6f5hZnlx1ks7i8aw6b xZH//YwWnx78Z7a482Q9q8XxteEObB6zGy6yeNy5tofNY/OSeo+/s/azeHzeJBfAGsVlk5Ka k1mWWqRvl8CV8frgSsaCU7wVL5fdYGlgfM/VxcjJISFgIrG/bz87hC0mceHeerYuRi4OIYEV jBIbfy5lhSk6teMuE0RiFqPEwmMHoKoeMEr8+3GApYuRg4NXQEviyPICkAYWAVWJI29eM4LY bAI6Etu/HWcCsUUFwiQerNsLNpRXQFDix+R7LCC2iICfxNYdW8FmMgt0MEo8WzEVLCEM1PBm 6gqozfMYJaZ9fQqW4BTwlJjS+pYJZDGzgJ7E/YtaIGFmAXmJzWveMkNcfY5dYv/kMoiDBCS+ TT4EdqeEgKzEpgNQJZISB1fcYJnAKDYLyUmzEIbOQjJ0ASPzKkbR1ILkguKk9CJDveLE3OLS vHS95PzcTYzAODv971nvDsbbB6wPMQpwMCrx8Ea4uocLsSaWFVfmHmI0BTpiIrOUaHI+MJrz SuINjc2MLExNTI2NzC3NlMR5FaV+BgsJpCeWpGanphakFsUXleakFh9iZOLglGpg3GfCZSKj 3R8tU7/K13jDsqyVnb2GYre/xp3h5l4nzawiGvjZnTvwE9dJKX33vXxdV+f/F+yp0HBa/t7r 236Gc/ukd7xP6bkiny3afulH7mPvy0/mLdnUfb1WO7rhw52jPCdXhF3ZERl/YrrEhRzBzLgn uy9p8hXde2O8aFVwityi5Yb70yebKbEUZyQaajEXFScCAHt12gSuAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrJIsWRmVeSWpSXmKPExsVy+t9jQd3mWe7hBt0PjCzOLjvIZnF51xw2 iyP/+xktPj34z2xx58l6Vovja8Md2DxmN1xk8bhzbQ+bx+Yl9R5/Z+1n8fi8SS6ANaqB0SYj NTEltUghNS85PyUzL91WyTs43jne1MzAUNfQ0sJcSSEvMTfVVsnFJ0DXLTMH6AAlhbLEnFKg UEBicbGSvh2mCaEhbroWMI0Rur4hQXA9RgZoIGENY8brgysZC07xVrxcdoOlgfE9VxcjJ4eE gInEqR13mSBsMYkL99azdTFycQgJzGKUWHjsAJTzgFHi348DLF2MHBy8AloSR5YXgDSwCKhK HHnzmhHEZhPQkdj+7TjYIFGBMIkH6/aygti8AoISPybfYwGxRQT8JLbu2Ao2k1mgg1Hi2Yqp YAlhoIY3U1cwQSybxygx7etTsASngKfElNa3TCCLmQX0JO5f1AIJMwvIS2xe85Z5AiPQmQg7 ZiFUzUJStYCReRWjRGpBckFxUnquYV5quV5xYm5xaV66XnJ+7iZGcDQ/k9rBeHCX+yFGAQ5G JR5eBmf3cCHWxLLiytxDjBIczEoivJtnAoV4UxIrq1KL8uOLSnNSiw8xmgIDYSKzlGhyPjDR 5JXEGxqbmBlZGpkbWhgZmyuJ8z7+vy5MSCA9sSQ1OzW1ILUIpo+Jg1OqgfHSzk0srez8fN6L Nhx4ulboPkPila1vrS9YcTLPdeeuzJ5ZbX500svL1/mWSSZd2lwTrLRj0+5bvrfS3GJV/j7x T31l4e1au+OZSQ1n+IdnZdUzhEPPi235enVe+rdkhZ67K/77v9nfvq+9LIM3f8vh1PnBoqZa 9Z+cKhb/1vQwFBeeM/HMm6dKLMUZiYZazEXFiQB2NV/m/AIAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Shawn, On 05/26/2016 12:08 PM, Shawn Lin wrote: > The main reason to add this check is to avoid unnecessary > mmc_request if the card is removed. Although we have already > check this in dw_mci_handle_cd for runtime usage of sd card and > dw_mci_init_slot for noremovable devices, but there is a timing > gap before it really calls dw_mci_get_cd as mmc_detect_change needs > some delay here. What's unnecessary mmc_request? > > Another gain here is that we could save some checkings of card status > after sd card been removed. > > Signed-off-by: Shawn Lin > --- > > drivers/mmc/host/dw_mmc.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c > index cb30e91..2940d24 100644 > --- a/drivers/mmc/host/dw_mmc.c > +++ b/drivers/mmc/host/dw_mmc.c > @@ -105,6 +105,7 @@ struct idmac_desc { > static bool dw_mci_reset(struct dw_mci *host); > static bool dw_mci_ctrl_reset(struct dw_mci *host, u32 reset); > static int dw_mci_card_busy(struct mmc_host *mmc); > +static int dw_mci_get_cd(struct mmc_host *mmc); > > #if defined(CONFIG_DEBUG_FS) > static int dw_mci_req_show(struct seq_file *s, void *v) > @@ -1248,6 +1249,8 @@ static void dw_mci_request(struct mmc_host *mmc, struct mmc_request *mrq) > > WARN_ON(slot->mrq); > > + dw_mci_get_cd(mmc); > + If my understanding is right, it can be replaced if (!test_bit(DW_MMC_CARD_PRESENT, &slot->flags)) to if (!dw_mci_get_cd(mmc)) Best Regards, Jaehoon Chung > /* > * The check for card presence and queueing of the request must be > * atomic, otherwise the card could be removed in between and the >