From patchwork Thu Jan 27 20:56:41 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philip Rakity X-Patchwork-Id: 513181 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p0RKwSEs017940 for ; Thu, 27 Jan 2011 20:58:29 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752763Ab1A0U62 (ORCPT ); Thu, 27 Jan 2011 15:58:28 -0500 Received: from na3sys009aog103.obsmtp.com ([74.125.149.71]:58331 "EHLO na3sys009aog103.obsmtp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752564Ab1A0U61 convert rfc822-to-8bit (ORCPT ); Thu, 27 Jan 2011 15:58:27 -0500 Received: from source ([65.219.4.130]) (using TLSv1) by na3sys009aob103.postini.com ([74.125.148.12]) with SMTP ID DSNKTUHccdtN/eNrNBK4McmhAHcv0EqnDT0O@postini.com; Thu, 27 Jan 2011 12:58:27 PST Received: from SC-vEXCH3.marvell.com ([10.93.76.133]) by sc-owa02.marvell.com ([10.93.76.22]) with mapi; Thu, 27 Jan 2011 12:56:42 -0800 From: Philip Rakity To: "linux-mmc@vger.kernel.org" CC: Mark Brown Date: Thu, 27 Jan 2011 12:56:41 -0800 Subject: [PATCH] sdhci: Do not hold spin_lock while waiting in set_ios Thread-Topic: [PATCH] sdhci: Do not hold spin_lock while waiting in set_ios Thread-Index: Acu+ZLLXh6F0BwMmTkKGw0BqrGv1Dw== Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US MIME-Version: 1.0 Sender: linux-mmc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Thu, 27 Jan 2011 20:58:29 +0000 (UTC) diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 627c8cf..49394a2 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -1205,12 +1205,12 @@ static void sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq) static void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) { struct sdhci_host *host; - unsigned long flags; u8 ctrl; host = mmc_priv(mmc); - spin_lock_irqsave(&host->lock, flags); + disable_irq(host->irq); + spin_lock(&host->lock); if (host->flags & SDHCI_DEVICE_DEAD) goto out; @@ -1286,7 +1286,8 @@ static void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) out: mmiowb(); - spin_unlock_irqrestore(&host->lock, flags); + spin_unlock(&host->lock); + enable_irq(host->irq); } static int sdhci_get_ro(struct mmc_host *mmc)