From patchwork Mon Nov 11 07:34:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "\(Exiting\) Baolin Wang" X-Patchwork-Id: 179058 Delivered-To: patch@linaro.org Received: by 2002:a92:38d5:0:0:0:0:0 with SMTP id g82csp6294227ilf; Sun, 10 Nov 2019 23:35:29 -0800 (PST) X-Google-Smtp-Source: APXvYqym4gjuwFqK6qIo5iwrueiAPlYyI6/waFRJIL2XXxFuQjStISbVpfijrJRYTSX0W/cbI+z8 X-Received: by 2002:a50:9850:: with SMTP id h16mr25388432edb.193.1573457729011; Sun, 10 Nov 2019 23:35:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573457729; cv=none; d=google.com; s=arc-20160816; b=DU9gBHeQ4aWo7jkn8VlgSLwUvZONJ/nzImbumC+WMq1HTW8Wv4SoT65R7P7Imvx1FS sLq18AW1rISOXrOv9cv2jfiujqFUH5WfQv3DFXjx4eO+xaUvkf0FyXCLtLalUe7FfLTl nxv9KFTJlLs4CY9p7LijXoSsC8R7RL4xGmhlFW9hd40RBgSEksmepSMPRXnhIQbQGsd8 Uw0IrsPqXuJ50ZCfzGTiiqUsxcg2BRoUVu+ygWWe9BJfIDX+UIiCZrXIRYAWlSEDv7t/ c6H5XNv1O6YyS1oC90ZvCvgQpRPVKFKA3fo1Rzhrnaopga1rqSIXqUKcoWIIoq2Ju6J3 WOrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=i6cJtP2GLYXrWSbffAAlWqbiBaFJmvg9QhFIx0JCR4w=; b=r8zlgARfBtOqnXsp7rI25rRo4MNYwpKP+hnOuHHX1xoMGio+LKzRGPmPOEPN/R24E8 kv2VBuJkDldax/cEeyjxJ3m/dBbRnh3fasgq5nwhKGXH3XM68Q0QdxNJMBZ6URklMrIJ 4VN0fNRqlcH6lewNfEIT3YtLBU/tiTEOYPAi9ExQ3vL7ZgSq7pC5tH+5jkk673srtEWO VzCOItukxXCF11xNK9EVXHT9Jjmn4JgTgxR3R3euVsSatu11iPQHcIAQjmVA84KQgEZP N4QpGJ+32vzyXnw1g6Jh442QcAfygFl2V1+iO1HOcqoTY/84u2/F7tzhzsDGQ4MsJT7v hgUw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="fDhq0K+/"; spf=pass (google.com: best guess record for domain of linux-mmc-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-mmc-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f13si9369704ejt.61.2019.11.10.23.35.28; Sun, 10 Nov 2019 23:35:29 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-mmc-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=@linaro.org header.s=google header.b="fDhq0K+/"; spf=pass (google.com: best guess record for domain of linux-mmc-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-mmc-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727023AbfKKHf2 (ORCPT + 5 others); Mon, 11 Nov 2019 02:35:28 -0500 Received: from mail-pf1-f193.google.com ([209.85.210.193]:44035 "EHLO mail-pf1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726805AbfKKHf1 (ORCPT ); Mon, 11 Nov 2019 02:35:27 -0500 Received: by mail-pf1-f193.google.com with SMTP id q26so10073748pfn.11 for ; Sun, 10 Nov 2019 23:35:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=i6cJtP2GLYXrWSbffAAlWqbiBaFJmvg9QhFIx0JCR4w=; b=fDhq0K+/Rn0iuKKs10LO1snJBg6va0XLJdJa4Bz/h7Q5iuKxXTGigB77w3v0ezUGv7 wN9k5uqyPodAtGkyVOPY1YOlstq2rqxsBmFs+7tsqE/tF95NyFrwW0NiWsFmcMGxuSN6 7Xb7zSaRRZhZylx+27eHpbgWmeIuJJnbcxODRj7yqS8s6p6QeUUvcHiAsWaB9fQQviHo Hr4Xjv7NOWumj6n+AstBAJWIR3KJv8kWTHv8S9I8HlkSk1pAQnxR46/Cf6MoevHFfc+F 3B1CnqUYgyBVz60ZWMH/yaITJlVlDcDZ0zSZYP4AMXYEp4bRi42ls1WEsp+JLbcS/OFP PgeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=i6cJtP2GLYXrWSbffAAlWqbiBaFJmvg9QhFIx0JCR4w=; b=uGHa/RWuiZJYI1R1Nh79n3KYU48vIbk3j41X5Ogn7S5lA2PfHGdKSmrFaTzKugx0P8 +b7YKiUxdQNKIJh32HbwqvfJqGj9xJjVpmRRJEtY5oHtvMdijzg1QNuppMDNIyDxabdF kYkpEuyNXEfS0XzpK79YUPvG1WNnerL8TOjZIzVoBC87EvINTC1gWm+xaSFIFvA3djlz RwHoszG4T7USpeI0O4GtXRf+sQQ07jVBWvdoogF9nOlNJ/KGPtN4eVmzuo+SdT9i5xBi eburvr4hQGlJO4qfSNMe8Dxo4wEP04GX1YzwquK4/yUVVA0M4A1DSYlOHKF506wTv0hL AelA== X-Gm-Message-State: APjAAAVQ+2Wx+OwHyGUSdqhI/R7u73elpcyoTUHZe9jkretwBxiCRJL9 N8dZ+2hMp7ccxx4ogdUIP2lAng== X-Received: by 2002:a63:9a12:: with SMTP id o18mr26772073pge.379.1573457727181; Sun, 10 Nov 2019 23:35:27 -0800 (PST) Received: from baolinwangubtpc.spreadtrum.com ([117.18.48.82]) by smtp.gmail.com with ESMTPSA id c184sm17345285pfc.159.2019.11.10.23.35.23 (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 10 Nov 2019 23:35:26 -0800 (PST) From: Baolin Wang To: adrian.hunter@intel.com, ulf.hansson@linaro.org, asutoshd@codeaurora.org Cc: orsonzhai@gmail.com, zhang.lyra@gmail.com, arnd@arndb.de, linus.walleij@linaro.org, vincent.guittot@linaro.org, baolin.wang@linaro.org, baolin.wang7@gmail.com, linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v6 4/4] mmc: host: sdhci: Add a variable to defer to complete requests if needed Date: Mon, 11 Nov 2019 15:34:00 +0800 Message-Id: <119d3285ab610967b43f7c822dfdc0ebb8d521cb.1573456284.git.baolin.wang@linaro.org> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: References: In-Reply-To: References: Sender: linux-mmc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-mmc@vger.kernel.org When using the host software queue, it will trigger the next request in irq handler without a context switch. But the sdhci_request() can not be called in interrupt context when using host software queue for some host drivers, due to the get_cd() ops can be sleepable. But for some host drivers, such as Spreadtrum host driver, the card is nonremovable, so the get_cd() ops is not sleepable, which means we can complete the data request and trigger the next request in irq handler to remove the context switch for the Spreadtrum host driver. Thus we still need introduce a variable in struct sdhci_host to indicate that we will always to defer to complete requests if the sdhci_request() can not be called in interrupt context for some host drivers, when using the host software queue. Suggested-by: Adrian Hunter Signed-off-by: Baolin Wang --- drivers/mmc/host/sdhci.c | 2 +- drivers/mmc/host/sdhci.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) -- 1.7.9.5 diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 850241f..4bef066 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -3035,7 +3035,7 @@ static inline bool sdhci_defer_done(struct sdhci_host *host, { struct mmc_data *data = mrq->data; - return host->pending_reset || + return host->pending_reset || host->always_defer_done || ((host->flags & SDHCI_REQ_USE_DMA) && data && data->host_cookie == COOKIE_MAPPED); } diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h index d89cdb9..a73ce89 100644 --- a/drivers/mmc/host/sdhci.h +++ b/drivers/mmc/host/sdhci.h @@ -533,6 +533,7 @@ struct sdhci_host { bool pending_reset; /* Cmd/data reset is pending */ bool irq_wake_enabled; /* IRQ wakeup is enabled */ bool v4_mode; /* Host Version 4 Enable */ + bool always_defer_done; /* Always defer to complete requests */ struct mmc_request *mrqs_done[SDHCI_MAX_MRQS]; /* Requests done */ struct mmc_command *cmd; /* Current command */