From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7A83FC282CE for ; Mon, 11 Feb 2019 15:43:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4C5DF222A7 for ; Mon, 11 Feb 2019 15:43:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1549899828; bh=wKVaU5y7Q6cAXk2kRqcGwCHx5Hbsh8EwjHiPXNd/c1o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=cMlPCh9PJ9ndwjovSRz7sZk5tSv0huwNfNHYBU7czEMhQb2naQat5hpu/oWRXc7+j 1DLHRsiOhDdXD0MAuJBkm8ScJZCQ4txkSoaIgXu52A1nEF1hzL79xBUPF8q2Dm4l8Y gMesTOCLoLq3Dd7S11Xev6pqphEN64MW6GY6lY8g= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732994AbfBKOpT (ORCPT ); Mon, 11 Feb 2019 09:45:19 -0500 Received: from mail.kernel.org ([198.145.29.99]:58330 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1733008AbfBKOpS (ORCPT ); Mon, 11 Feb 2019 09:45:18 -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 84C572081B; Mon, 11 Feb 2019 14:45:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1549896318; bh=wKVaU5y7Q6cAXk2kRqcGwCHx5Hbsh8EwjHiPXNd/c1o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PLz839LbGO8PQt/bU1R5QTUQMdfXGzLX7dzQIeH9CLNEBt3zY+WYo51+PhCVCg390 owTpYbUhcxmhXcBUH5Bb5JuDSI13e8ZyquqvJ+RYBVMdKBPGUgE8KE1mZrkmH6/lK8 +F/o8BJ3gd1L48BmYpaEAsbvpRqKJGZz75iiXdTM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Michal Suchanek , Stefan Wahren , Eric Anholt , Ulf Hansson , Sasha Levin Subject: [PATCH 4.19 144/313] mmc: bcm2835: reset host on timeout Date: Mon, 11 Feb 2019 15:17:04 +0100 Message-Id: <20190211141903.244115824@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190211141852.749630980@linuxfoundation.org> References: <20190211141852.749630980@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: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org 4.19-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit f6000a4eb34e6462bc0dd39809c1bb99f9633269 ] The bcm2835 mmc host tends to lock up for unknown reason so reset it on timeout. The upper mmc block layer tries retransimitting with single blocks which tends to work out after a long wait. This is better than giving up and leaving the machine broken for no obvious reason. Fixes: 660fc733bd74 ("mmc: bcm2835: Add new driver for the sdhost controller.") Signed-off-by: Michal Suchanek Signed-off-by: Stefan Wahren Acked-by: Eric Anholt Signed-off-by: Ulf Hansson Signed-off-by: Sasha Levin --- drivers/mmc/host/bcm2835.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/mmc/host/bcm2835.c b/drivers/mmc/host/bcm2835.c index abf1f3c8b0c3..5301302fb531 100644 --- a/drivers/mmc/host/bcm2835.c +++ b/drivers/mmc/host/bcm2835.c @@ -286,6 +286,7 @@ static void bcm2835_reset(struct mmc_host *mmc) if (host->dma_chan) dmaengine_terminate_sync(host->dma_chan); + host->dma_chan = NULL; bcm2835_reset_internal(host); } @@ -846,6 +847,8 @@ static void bcm2835_timeout(struct work_struct *work) dev_err(dev, "timeout waiting for hardware interrupt.\n"); bcm2835_dumpregs(host); + bcm2835_reset(host->mmc); + if (host->data) { host->data->error = -ETIMEDOUT; bcm2835_finish_data(host); -- 2.19.1