Message ID | 20190226161606.18569-3-faiz_abbas@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fixes for command errors during tuning | expand |
Hi Faiz, Thank you for the patch! Yet something to improve: [auto build test ERROR on ulf.hansson-mmc/next] [also build test ERROR on v5.0-rc8 next-20190228] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Faiz-Abbas/Fixes-for-command-errors-during-tuning/20190228-083200 base: git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc.git next config: ia64-allmodconfig (attached as .config) compiler: ia64-linux-gcc (GCC) 8.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree GCC_VERSION=8.2.0 make.cross ARCH=ia64 All errors (new ones prefixed by >>): ERROR: "ia64_delay_loop" [drivers/spi/spi-thunderx.ko] undefined! ERROR: "__sw_hweight8" [drivers/net/wireless/mediatek/mt76/mt76.ko] undefined! ERROR: "ia64_delay_loop" [drivers/net/phy/mdio-cavium.ko] undefined! >> ERROR: "sdhci_cmd_err" [drivers/mmc/host/sdhci-omap.ko] undefined! >> ERROR: "sdhci_finish_command" [drivers/mmc/host/sdhci-omap.ko] undefined! --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Hi, On 01/03/19 12:52 PM, kbuild test robot wrote: > Hi Faiz, > > Thank you for the patch! Yet something to improve: > > [auto build test ERROR on ulf.hansson-mmc/next] > [also build test ERROR on v5.0-rc8 next-20190228] > [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] > > url: https://github.com/0day-ci/linux/commits/Faiz-Abbas/Fixes-for-command-errors-during-tuning/20190228-083200 > base: git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc.git next > config: ia64-allmodconfig (attached as .config) > compiler: ia64-linux-gcc (GCC) 8.2.0 > reproduce: > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > # save the attached .config to linux build tree > GCC_VERSION=8.2.0 make.cross ARCH=ia64 > > All errors (new ones prefixed by >>): > > ERROR: "ia64_delay_loop" [drivers/spi/spi-thunderx.ko] undefined! > ERROR: "__sw_hweight8" [drivers/net/wireless/mediatek/mt76/mt76.ko] undefined! > ERROR: "ia64_delay_loop" [drivers/net/phy/mdio-cavium.ko] undefined! >>> ERROR: "sdhci_cmd_err" [drivers/mmc/host/sdhci-omap.ko] undefined! >>> ERROR: "sdhci_finish_command" [drivers/mmc/host/sdhci-omap.ko] undefined! Looks like EXPORT_SYMBOL_GPL is required here. Will add in v2. Thanks, Faiz
diff --git a/drivers/mmc/host/sdhci-omap.c b/drivers/mmc/host/sdhci-omap.c index c11c18a9aacb..f73ded5cc527 100644 --- a/drivers/mmc/host/sdhci-omap.c +++ b/drivers/mmc/host/sdhci-omap.c @@ -797,6 +797,29 @@ void sdhci_omap_reset(struct sdhci_host *host, u8 mask) sdhci_reset(host, mask); } +void sdhci_omap_cmd_err(struct sdhci_host *host, u32 intmask, u32 *intmask_p) +{ + struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); + struct sdhci_omap_host *omap_host = sdhci_pltfm_priv(pltfm_host); + + if (omap_host->is_tuning) { + /* + * Since we are not resetting data lines during tuning + * operation, data error or data complete interrupts + * might still arrive. Mark this request as a failure + * but still wait for the data interrupt + */ + if (intmask & SDHCI_INT_TIMEOUT) + host->cmd->error = -ETIMEDOUT; + else + host->cmd->error = -EILSEQ; + + sdhci_finish_command(host); + } else { + sdhci_cmd_err(host, intmask, intmask_p); + } +} + static struct sdhci_ops sdhci_omap_ops = { .set_clock = sdhci_omap_set_clock, .set_power = sdhci_omap_set_power, @@ -807,6 +830,7 @@ static struct sdhci_ops sdhci_omap_ops = { .platform_send_init_74_clocks = sdhci_omap_init_74_clocks, .reset = sdhci_omap_reset, .set_uhs_signaling = sdhci_omap_set_uhs_signaling, + .platform_cmd_err = sdhci_omap_cmd_err, }; static int sdhci_omap_set_capabilities(struct sdhci_omap_host *omap_host)
commit 5b0d62108b46 ("mmc: sdhci-omap: Add platform specific reset callback") skips data resets during tuning operation. Because of this, a data error or data finish interrupt might still arrive after a command error has been handled and the mrq ended. This ends up with a "mmc0: Got data interrupt 0x00000002 even though no data operation was in progress" error message. Fix this by adding a platform specific callback for command errors. Mark the mrq as a failure but wait for a data interrupt instead of calling finish_mrq(). Fixes: 5b0d62108b46 ("mmc: sdhci-omap: Add platform specific reset callback") Signed-off-by: Faiz Abbas <faiz_abbas@ti.com> --- drivers/mmc/host/sdhci-omap.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)