Received: by 2002:ac0:aed5:0:0:0:0:0 with SMTP id t21csp2284174imb; Mon, 4 Mar 2019 00:46:49 -0800 (PST) X-Google-Smtp-Source: AHgI3IYUxnbK/h7Q0glWJuKWZxOJ9z9DWtqq1qOSSwOQlRJbWDBUh9ulo7dJmGas0PtHBmL7XTgd X-Received: by 2002:a62:6046:: with SMTP id u67mr19058630pfb.46.1551689208973; Mon, 04 Mar 2019 00:46:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551689208; cv=none; d=google.com; s=arc-20160816; b=txKfGXSwZsCIloEBdJD/lPtw3WXUFanCFZWBkl/9A1oybH+F0yvL5cP3H/F9yevSH+ xNOoVeXIryDf1+uSDyfR7YE4uCqamQAy2+WT4Qh5JTz1sIC5rfYqVzgZ7gElTCq6LEJc zVWiCkwOjnoxT7LbMwKqbeb0kdRvWYyZlR1m/NGtJF8uLjc8tDQWJKT1v/D5Vdo3K58f YF4Qtu6+QIJkdLEzWgf4zzUSSbvLxVA72kAtXvxraEDcdukb1udpBUyqlm5cQ8LdK3FY GVaB047cJqRfebLyDHTQb22lDuxAtrlBj+kInj3IlR9M05sIRL6faygeaTf9GqXXkC0g RgNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=2OMyNzfkZQJ8hj9hw9NTbT4x/hLTxRUMEzAVsqvBFHI=; b=MkFRZh2LUwV342I0IJiTyzLKy17nhfb+ng6DeyfkGz74xQwRYv3ZBzvUMCgX7AS6aA jdEsq1V7Fadv76+55wsS8/5tNgcY5iYA5y5dyYFM1vkuIH3cBk2FeQgcIvZnrwOusQ0Q CE2O1+DiYoReCwOIqXsNKkImrZmfRC70WV5D9rXrNh8t9Xzeb8BNCafqaFrgNz2SdlPc uCov1q6I1x3xz4CuvHa+A+DWhxo0QP7etXIDQQNPyk+DQ8NJrk9KLzF/OvPflOCxR1ry 3V/l7qNvOuFRcFo1nlm3bDTPKJ5SH6jf8o5EYP02IGJ9rZ4TqzAwp3BeYMBHepkqtxZX orMg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ErYapC++; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l68si5317733plb.90.2019.03.04.00.46.31; Mon, 04 Mar 2019 00:46:48 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ErYapC++; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727139AbfCDIpn (ORCPT + 99 others); Mon, 4 Mar 2019 03:45:43 -0500 Received: from mail.kernel.org ([198.145.29.99]:51080 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726591AbfCDI13 (ORCPT ); Mon, 4 Mar 2019 03:27:29 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id A5F7D20823; Mon, 4 Mar 2019 08:27:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1551688048; bh=F2U/OcCtAzPTwXcZFO4GBLjKermEkDNLZeXrVqKQu5o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ErYapC++x4rzgY93ZjvrtwpzmF1vQ18HslcG2oe2WRHGefoUwRhgkXihcuJVWCtxz mrO4yIzT4byvDTm902qVKXnzIwGixNb80cmQfZvGdXGSnNkWFaVtcRE/XIJ7En2Jnm APfiNsy6NNBmZC/DdwcqOni4L4SlhdnGYk5cOIm0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Sergei Shtylyov , Wolfram Sang , Simon Horman , Ulf Hansson Subject: [PATCH 4.14 46/52] mmc: tmio_mmc_core: dont claim spurious interrupts Date: Mon, 4 Mar 2019 09:22:44 +0100 Message-Id: <20190304081619.749399174@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190304081617.159014799@linuxfoundation.org> References: <20190304081617.159014799@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Sergei Shtylyov commit 5c27ff5db1491a947264d6d4e4cbe43ae6535bae upstream. I have encountered an interrupt storm during the eMMC chip probing (and the chip finally didn't get detected). It turned out that U-Boot left the DMAC interrupts enabled while the Linux driver didn't use those. The SDHI driver's interrupt handler somehow assumes that, even if an SDIO interrupt didn't happen, it should return IRQ_HANDLED. I think that if none of the enabled interrupts happened and got handled, we should return IRQ_NONE -- that way the kernel IRQ code recoginizes a spurious interrupt and masks it off pretty quickly... Fixes: 7729c7a232a9 ("mmc: tmio: Provide separate interrupt handlers") Signed-off-by: Sergei Shtylyov Reviewed-by: Wolfram Sang Tested-by: Wolfram Sang Reviewed-by: Simon Horman Cc: stable@vger.kernel.org Signed-off-by: Ulf Hansson Signed-off-by: Greg Kroah-Hartman --- drivers/mmc/host/tmio_mmc_core.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) --- a/drivers/mmc/host/tmio_mmc_core.c +++ b/drivers/mmc/host/tmio_mmc_core.c @@ -688,7 +688,7 @@ static bool __tmio_mmc_sdcard_irq(struct return false; } -static void __tmio_mmc_sdio_irq(struct tmio_mmc_host *host) +static bool __tmio_mmc_sdio_irq(struct tmio_mmc_host *host) { struct mmc_host *mmc = host->mmc; struct tmio_mmc_data *pdata = host->pdata; @@ -696,7 +696,7 @@ static void __tmio_mmc_sdio_irq(struct t unsigned int sdio_status; if (!(pdata->flags & TMIO_MMC_SDIO_IRQ)) - return; + return false; status = sd_ctrl_read16(host, CTL_SDIO_STATUS); ireg = status & TMIO_SDIO_MASK_ALL & ~host->sdio_irq_mask; @@ -709,6 +709,8 @@ static void __tmio_mmc_sdio_irq(struct t if (mmc->caps & MMC_CAP_SDIO_IRQ && ireg & TMIO_SDIO_STAT_IOIRQ) mmc_signal_sdio_irq(mmc); + + return ireg; } irqreturn_t tmio_mmc_irq(int irq, void *devid) @@ -727,9 +729,10 @@ irqreturn_t tmio_mmc_irq(int irq, void * if (__tmio_mmc_sdcard_irq(host, ireg, status)) return IRQ_HANDLED; - __tmio_mmc_sdio_irq(host); + if (__tmio_mmc_sdio_irq(host)) + return IRQ_HANDLED; - return IRQ_HANDLED; + return IRQ_NONE; } EXPORT_SYMBOL_GPL(tmio_mmc_irq);