From patchwork Tue May 31 10:18:23 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dong Aisheng X-Patchwork-Id: 9144153 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 404E060757 for ; Tue, 31 May 2016 10:23:51 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 31A01272D8 for ; Tue, 31 May 2016 10:23:51 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2664B27E72; Tue, 31 May 2016 10:23:51 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 91EFA272D8 for ; Tue, 31 May 2016 10:23:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750750AbcEaKXt (ORCPT ); Tue, 31 May 2016 06:23:49 -0400 Received: from mail-pa0-f65.google.com ([209.85.220.65]:36227 "EHLO mail-pa0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750740AbcEaKXs (ORCPT ); Tue, 31 May 2016 06:23:48 -0400 Received: by mail-pa0-f65.google.com with SMTP id fg1so24407717pad.3 for ; Tue, 31 May 2016 03:23:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=pGv9q/CGG7YlX2mG12nsYZUGlBbMehBQNak5lGtdci4=; b=lfytwDd4tqVBwutonJMkCC56i1ZQ5C3Ttf2qeVvUi7LxPpJY4L23gJPWa+iSYRwaAL Gua72bZg2XUfTITqLKwQpPdcDa+Jvd0/3z6Dnhn/C0r9uDEPK2GgZOG/R5GC/u6WHGdn yFGGjwP9x6HnEbdfBi9RgyWTqGw7GiAAuKUpjJCWryaPfH0r63/PQPeQ18Eev9NdPNeL FUkWWBzzGxFpmmKnLSs7neAVA5Bd0bRVgdIpbgYZXuKYvsmt9wHiisQR3zchPoB4Oa1F xNLPB9eoURNMEo0pVdY48YnP2iaN8Wi0T0IZtTLsafW32nBoMlJaeHMnaBzSww1iuelj xUFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=pGv9q/CGG7YlX2mG12nsYZUGlBbMehBQNak5lGtdci4=; b=hGG6eH93Kf0VPjqrfqKkF3vqf25CLe+Iseg9D8WjLGjT0UdxoEdiwcpdFEcf7OnSA7 E0lWZeg9+osP2zuDe3OZ7i7Q+80AVcfJ4TN0EEhDjgzl+gUSQTT4G4uyHGKeGhpbJ4x8 yzL2dyyhbScVQy57+MN3SgJCBirpUavXUHxpIWh8GDrwubUK5blFWonlGBs53/GJM3OK H0+rMPoPBiSL/3SzXs5rZfyAofZ19UaMO5jx4cFsf4mXuSYEBClxEtyKgjpHAzAS4Pgh +NAnFhiOg60vka9f77fzLasGFJ8FaCUhOX239LmH3/tuEERxWssrl33ORqnxw/WdlZnZ nDtg== X-Gm-Message-State: ALyK8tLaTM/iqR9ZGK55HBoLhf8tMrhnmF8f6VxTDqxEsEzJfdFn6wKcxseZ0DucvLsgIg== X-Received: by 10.66.43.51 with SMTP id t19mr54595951pal.48.1464690227876; Tue, 31 May 2016 03:23:47 -0700 (PDT) Received: from shlinux2 (gate-zmy3.freescale.com. [192.88.167.1]) by smtp.gmail.com with ESMTPSA id to9sm53757392pab.27.2016.05.31.03.23.43 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Tue, 31 May 2016 03:23:46 -0700 (PDT) Date: Tue, 31 May 2016 18:18:23 +0800 From: Dong Aisheng To: Adrian Hunter Cc: Dong Aisheng , "linux-mmc@vger.kernel.org" , Ulf Hansson , Chris Ball , Shawn Guo , "linux-arm-kernel@lists.infradead.org" , haibo.chen@nxp.com Subject: Re: [PATCH 10/23] mmc: core: disable auto retune during card detection process Message-ID: <20160531101823.GB4096@shlinux2> References: <1460741387-23815-1-git-send-email-aisheng.dong@nxp.com> <1460741387-23815-11-git-send-email-aisheng.dong@nxp.com> <571A1D85.3020200@intel.com> <5721B602.6010306@intel.com> <20160428132249.GB27560@shlinux2.ap.freescale.net> <57230515.9030602@intel.com> <20160429074258.GA28427@shlinux2.ap.freescale.net> <573185FC.5060506@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <573185FC.5060506@intel.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-mmc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On Tue, May 10, 2016 at 09:55:56AM +0300, Adrian Hunter wrote: > On 29/04/16 10:42, Dong Aisheng wrote: > > And IMX6DL ARD is even worser due to it's using common > > mmc_send_tuning() function. > > root@imx6qdlsolo:~# > > root@imx6qdlsolo:~# [ 129.462564] sysrq: SysRq : Changing Loglevel > > [ 129.466902] sysrq: Loglevel set to 8 > > [ 131.616078] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: 198000000, actual: 198000000 > > [ 131.625311] sdhci-esdhc-imx 2198000.usdhc: change pinctrl state for uhs 6 > > [ 131.632133] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: 198000000, actual: 198000000 > > [ 131.642121] mmc0: starting CMD13 arg 59b40000 flags 00000195 > > [ 131.648925] sdhci-esdhc-imx 2198000.usdhc: tunning with delay 0x0 ESDHC_TUNE_CTRL_STATUS 0x0 > > [ 131.657818] mmc0: starting CMD19 arg 00000000 flags 00000035 > > [ 131.663518] mmc0: blksz 64 blocks 1 flags 00000200 tsac 150 ms nsac 0 > > [ 131.670835] mmc0: req done (CMD19): -123: 00000000 00000000 00000000 00000000 > > You should stop here because -123 is -ENOMEDIUM > Hi Adrian, This is the last issue before V2. I just tried the way you proposed (see detailed log below). A few questions if we decide to let tuning routine to handle the card remove case: 1) we may have to fix it for all platforms tuning code. Below is the example i did for IMX uSDHC and common SDHCI. If yes, then we probably could move all the normal host CD check before sending CMD in MMC core (__mmc_start_request()) as well? 2) MMC core will print out tuning error for card remove case which is not before. e.g [ 98.730597] mmc0: tuning execution failed: -123 We probably may need make it debug level since it's meaningless for card removed case. Detailed log below: After the fix, card remove with calling mmc_send_tuning(): root@imx6qdlsolo:~# [ 98.664049] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: 198000000, actual: 198000000 [ 98.673280] sdhci-esdhc-imx 2198000.usdhc: change pinctrl state for uhs 6 [ 98.680102] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: 198000000, actual: 198000000 [ 98.689560] mmc0: starting CMD13 arg aaaa0000 flags 00000195 [ 98.696336] sdhci-esdhc-imx 2198000.usdhc: tunning with delay 0x0 ESDHC_TUNE_CTRL_STATUS 0x0 [ 98.705407] mmc0: starting CMD19 arg 00000000 flags 00000035 [ 98.711121] mmc0: blksz 64 blocks 1 flags 00000200 tsac 150 ms nsac 0 [ 98.718144] mmc0: req done (CMD19): -123: 00000000 00000000 00000000 00000000 [ 98.725351] mmc0: 0 bytes transferred: 0 [ 98.730597] mmc0: tuning execution failed: -123 [ 98.735255] mmc0: req failed (CMD13): -123, retrying... [ 98.740921] mmc0: req failed (CMD13): -123, retrying... [ 98.746344] mmc0: req failed (CMD13): -123, retrying... [ 98.751909] mmc0: req done (CMD13): -123: 00000000 00000000 00000000 00000000 [ 98.759206] mmc0: card remove detected [ 98.763514] mmc0: card aaaa removed [ 98.780475] mmc0: clock 0Hz busmode 2 powermode 0 cs 0 Vdd 0 width 1 timing 0 [ 98.787730] sdhci-esdhc-imx 2198000.usdhc: change pinctrl state for uhs 0 [ 99.028432] FAT-fs (mmcblk0p1): FAT read failed (blocknr 32)q card remove with calling standard sdhci_execute_tuning(): root@imx6qdlsolo:~# [ 210.555330] sysrq: SysRq : Changing Loglevel [ 210.559665] sysrq: Loglevel set to 8 [ 212.244148] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: 198000000, actual: 198000000 [ 212.253376] sdhci-esdhc-imx 2198000.usdhc: change pinctrl state for uhs 6 [ 212.260199] sdhci-esdhc-imx 2198000.usdhc: desired SD clock: 198000000, actual: 198000000 [ 212.269637] mmc0: starting CMD13 arg aaaa0000 flags 00000195 [ 212.275399] mmc0: tuning execution failed: -123 [ 212.280601] mmc0: req failed (CMD13): -123, retrying... [ 212.286094] mmc0: req failed (CMD13): -123, retrying... [ 212.291763] mmc0: req failed (CMD13): -123, retrying... [ 212.297226] mmc0: req done (CMD13): -123: 00000000 00000000 00000000 00000000 [ 212.304899] mmc0: card remove detected [ 212.308948] mmc0: card aaaa removed [ 212.318162] mmc0: clock 0Hz busmode 2 powermode 0 cs 0 Vdd 0 width 1 timing 0 [ 212.325415] sdhci-esdhc-imx 2198000.usdhc: change pinctrl state for uhs 0 [ 212.580621] FAT-fs (mmcblk0p1): FAT read failed (blocknr 32) Regards Dong Aisheng --- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c @@ -757,7 +757,11 @@ static void esdhc_post_tuning(struct sdhci_host *host) static int esdhc_executing_tuning(struct sdhci_host *host, u32 opcode) { - int min, max, avg, ret; + int min, max, avg, ret, present; + + present = host->mmc->ops->get_cd(host->mmc); + if (!present) + return -ENOMEDIUM; /* find the mininum delay first which can pass tuning */ min = ESDHC_TUNE_CTRL_MIN; diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 0027b8707ebd..7b7545dd1a4b 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -1767,6 +1767,11 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode) unsigned long flags; unsigned int tuning_count = 0; bool hs400_tuning; + int present; + + present = mmc->ops->get_cd(mmc); + if (!present) + return -ENOMEDIUM; And if we need fix all platforms, do you think we should do it in MMC core mmc_execute_tuning()?