From patchwork Tue Jan 19 16:38:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bean Huo X-Patchwork-Id: 12030539 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=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham 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 1C0BDC18E17 for ; Tue, 19 Jan 2021 18:28:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DBCE620706 for ; Tue, 19 Jan 2021 18:28:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389816AbhASRDT (ORCPT ); Tue, 19 Jan 2021 12:03:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52438 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730595AbhASQjq (ORCPT ); Tue, 19 Jan 2021 11:39:46 -0500 Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com [IPv6:2a00:1450:4864:20::62d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 04CCAC061574; Tue, 19 Jan 2021 08:39:02 -0800 (PST) Received: by mail-ej1-x62d.google.com with SMTP id rv9so10624787ejb.13; Tue, 19 Jan 2021 08:39:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ksmspH25ZE9JAlOy0UzAxXX6kDfsAEZCpKdtY20OyMw=; b=o1dCZFcyJqwovn485um1zkf+SXnql6nXsQ6U/YUeNfldQEO5BhrQHV8KYb3SAWCHbk mh3wXNbIC7O7q6V/4JZiu1MUSWGPicM839InSoxmGmU7FOqH+/XCGZfsDX/KoW+Vm0Hn gPDu1yQ5OneKQIHMFWSQvx8f3feKssSrpzT8eanubGe8DaYWWVnBgcZ62sCrHQZ9s4Jw bltCCQjd2gdAPuWHF2ycpOJhdzGF2HfJP1236FmPknAUGY+PIiZfQ1NYrRJtbTvYaw6v 4PX34UE8Ojv7ylvfj/QY79wvgPaoi/usm5Ym9OOdy2YShS1E58+ha1KDMa1ElSwSopo0 3ayQ== 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; bh=ksmspH25ZE9JAlOy0UzAxXX6kDfsAEZCpKdtY20OyMw=; b=KWpYlcai8vzFeaveVlwQopmupSOoUVP98JcfSxNQoIdy5+8RCJNkvlp7KDzwmsjPOE OULEOn9Om2YYmPQMofT0nqlOsp7/2cY2dDzNJnwpSJB+GW5HzDbCJ9M7ocH1ZJBYs+it djnj3d8aqOW/vdj3EfXsn18pMrArlRzLwrO45xHeYXJba3+/DW9+ra7eNrnzAGjKaQop vVUxjh2M7WSGsgQsl0nneaKXgkDVXarOe+96skukBLt0+IiXCzFv9RrZe/CRwy6628uj SA5/qWJTi4eKJz2rmhpfScCt6dTSQ5kev0LoJWqOB38msbcoKc7lzFud+FVqGH/MQA1E uBcQ== X-Gm-Message-State: AOAM531JWvGn3CecVISZafdIWmYMR1UkGnPn+cFCAjembZQ0IeumMtvw 53LUg8JN9kwA/woomNIdxck= X-Google-Smtp-Source: ABdhPJzMVhFvdrQeOW+QLHmntsHSp8+d6AaMZ/hiJTEWt/QaJ/f3W2MVv/WxpgOpzK7T85/XDwu/+g== X-Received: by 2002:a17:906:4b48:: with SMTP id j8mr3516470ejv.112.1611074340773; Tue, 19 Jan 2021 08:39:00 -0800 (PST) Received: from localhost.localdomain (ip5f5bee1b.dynamic.kabel-deutschland.de. [95.91.238.27]) by smtp.gmail.com with ESMTPSA id k22sm9589993eji.101.2021.01.19.08.38.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Jan 2021 08:39:00 -0800 (PST) From: Bean Huo To: alim.akhtar@samsung.com, avri.altman@wdc.com, asutoshd@codeaurora.org, jejb@linux.ibm.com, martin.petersen@oracle.com, stanley.chu@mediatek.com, beanhuo@micron.com, bvanassche@acm.org, tomas.winkler@intel.com, cang@codeaurora.org Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 1/6] scsi: ufs: Add "wb_on" sysfs node to control WB on/off Date: Tue, 19 Jan 2021 17:38:42 +0100 Message-Id: <20210119163847.20165-2-huobean@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210119163847.20165-1-huobean@gmail.com> References: <20210119163847.20165-1-huobean@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org From: Bean Huo Currently UFS WriteBooster driver uses clock scaling up/down to set WB on/off, for the platform which doesn't support UFSHCD_CAP_CLK_SCALING, WB will be always on. Provide a sysfs attribute to enable/disable WB during runtime. Write 1/0 to "wb_on" sysfs node to enable/disable UFS WB. Reviewed-by: Avri Altman Reviewed-by: Stanley Chu Signed-off-by: Bean Huo --- drivers/scsi/ufs/ufs-sysfs.c | 46 ++++++++++++++++++++++++++++++++++++ drivers/scsi/ufs/ufshcd.c | 3 +-- drivers/scsi/ufs/ufshcd.h | 2 ++ 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/ufs/ufs-sysfs.c b/drivers/scsi/ufs/ufs-sysfs.c index c092f249d6f9..76db8593ca09 100644 --- a/drivers/scsi/ufs/ufs-sysfs.c +++ b/drivers/scsi/ufs/ufs-sysfs.c @@ -209,6 +209,50 @@ static ssize_t auto_hibern8_store(struct device *dev, return ret ? ret : count; } +static ssize_t wb_on_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct ufs_hba *hba = dev_get_drvdata(dev); + + return sysfs_emit(buf, "%d\n", hba->wb_enabled); +} + +static ssize_t wb_on_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) +{ + struct ufs_hba *hba = dev_get_drvdata(dev); + unsigned int wb_enable; + ssize_t res; + + if (!ufshcd_is_wb_allowed(hba) || ufshcd_is_clkscaling_supported(hba)) { + /* + * If the platform supports UFSHCD_CAP_CLK_SCALING, turn WB + * on/off will be done while clock scaling up/down. + */ + dev_warn(dev, "To control WB through wb_on is not allowed!\n"); + return -EOPNOTSUPP; + } + + if (kstrtouint(buf, 0, &wb_enable)) + return -EINVAL; + + if (wb_enable != 0 && wb_enable != 1) + return -EINVAL; + + down(&hba->host_sem); + if (!ufshcd_is_user_access_allowed(hba)) { + res = -EBUSY; + goto out; + } + + pm_runtime_get_sync(hba->dev); + res = ufshcd_wb_ctrl(hba, wb_enable); + pm_runtime_put_sync(hba->dev); +out: + up(&hba->host_sem); + return res < 0 ? res : count; +} + static DEVICE_ATTR_RW(rpm_lvl); static DEVICE_ATTR_RO(rpm_target_dev_state); static DEVICE_ATTR_RO(rpm_target_link_state); @@ -216,6 +260,7 @@ static DEVICE_ATTR_RW(spm_lvl); static DEVICE_ATTR_RO(spm_target_dev_state); static DEVICE_ATTR_RO(spm_target_link_state); static DEVICE_ATTR_RW(auto_hibern8); +static DEVICE_ATTR_RW(wb_on); static struct attribute *ufs_sysfs_ufshcd_attrs[] = { &dev_attr_rpm_lvl.attr, @@ -225,6 +270,7 @@ static struct attribute *ufs_sysfs_ufshcd_attrs[] = { &dev_attr_spm_target_dev_state.attr, &dev_attr_spm_target_link_state.attr, &dev_attr_auto_hibern8.attr, + &dev_attr_wb_on.attr, NULL }; diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 9b387d6a2a25..501c617cecb9 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -249,7 +249,6 @@ static inline int ufshcd_config_vreg_hpm(struct ufs_hba *hba, static int ufshcd_try_to_abort_task(struct ufs_hba *hba, int tag); static int ufshcd_wb_buf_flush_enable(struct ufs_hba *hba); static int ufshcd_wb_buf_flush_disable(struct ufs_hba *hba); -static int ufshcd_wb_ctrl(struct ufs_hba *hba, bool enable); static int ufshcd_wb_toggle_flush_during_h8(struct ufs_hba *hba, bool set); static inline void ufshcd_wb_toggle_flush(struct ufs_hba *hba, bool enable); static void ufshcd_hba_vreg_set_lpm(struct ufs_hba *hba); @@ -5413,7 +5412,7 @@ static void ufshcd_bkops_exception_event_handler(struct ufs_hba *hba) __func__, err); } -static int ufshcd_wb_ctrl(struct ufs_hba *hba, bool enable) +int ufshcd_wb_ctrl(struct ufs_hba *hba, bool enable) { int ret; u8 index; diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h index 5bbe4715d4e9..ac0f03f69e42 100644 --- a/drivers/scsi/ufs/ufshcd.h +++ b/drivers/scsi/ufs/ufshcd.h @@ -1089,6 +1089,8 @@ int ufshcd_exec_raw_upiu_cmd(struct ufs_hba *hba, u8 *desc_buff, int *buff_len, enum query_opcode desc_op); +int ufshcd_wb_ctrl(struct ufs_hba *hba, bool enable); + /* Wrapper functions for safely calling variant operations */ static inline const char *ufshcd_get_var_name(struct ufs_hba *hba) { From patchwork Tue Jan 19 16:38:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bean Huo X-Patchwork-Id: 12030527 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=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham 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 2EECCC43142 for ; Tue, 19 Jan 2021 18:28:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0439B22E00 for ; Tue, 19 Jan 2021 18:28:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388659AbhASQjz (ORCPT ); Tue, 19 Jan 2021 11:39:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52450 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730770AbhASQjq (ORCPT ); Tue, 19 Jan 2021 11:39:46 -0500 Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 484F5C061575; Tue, 19 Jan 2021 08:39:04 -0800 (PST) Received: by mail-ej1-x62e.google.com with SMTP id by1so23004947ejc.0; Tue, 19 Jan 2021 08:39:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=fUV+tS7I2S8Z0CYTM20ciXO46ZZ4AQc+YBzvhjKVauI=; b=LWXnWho/T83rLl5kTGyfeIrgeTvipjp8bMIxO/B7/kmDArkK0njxExzrfwz+t6u+WJ Y4dluOHojFpv1MBe+zYDy6RskKNTX9gFn3y6lTM1oA9A372vwc9r1jYE8NVnWRmiHxui YDU2LsT/tePlKnUT3yzVocbyGW4k+Y1DNXvicr0OQ4zoLLdhslg0Yc1TVaHXYmAlJ9C2 8in9n0IwdPdzmttdVmx9DRctJTB88dKSIC1Ob7VhjwpyYh4P7SSPH8kWDSzREUmTIa17 g/pA0b3OBlE/rwKc/hoKQB6WY1Xvccwj7cgA1zcG9U6XaWI1kULcSKS689kd53jaXctF nFKg== 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; bh=fUV+tS7I2S8Z0CYTM20ciXO46ZZ4AQc+YBzvhjKVauI=; b=RteI1FIkgZl342xk1/PEPwPx3Agc7BDn8ZFMYuGbD7Mjr0f+yKqz+CHZpSzB93Hv53 tnsMuH2MHhtDMgDu5iq5sdQRhPNxbO5wgGYihvJ0q9rN+LE/I8qwLeHs8TFjtitUBLYm lMmvfj5QHebaXPbrbUxPt0FWpWkAtSstBfjWlli5y4EpKfPzV5wMM4taB1sDUkNIErbz c4SeyJ6vQFdFAyNXXXg1C3ftqvKppYMq0mONoCJPbHsfa7kVGEHUqo9K8s/gaRqr9REX GM8PH0awStKkIXOH9oXFPxRQ7w7dY9Sgb9lEBK2ZfYMup4zJgaX2HV0Jt12kq/AaaTmH XSTA== X-Gm-Message-State: AOAM533hNDt9OA1OqPzggc2HoH4KDuoOoLHuv6pHbULwLcaMXvlaSOeZ Ly00tLCBXOTevIbjNDduKu8= X-Google-Smtp-Source: ABdhPJwbCZixWgQEkWMvccZyVy21y8cs6MAp4F2W43Q+6y+WU9Tv0eqYkQjUIJpOnbwG42s8p4r3lQ== X-Received: by 2002:a17:906:dbf2:: with SMTP id yd18mr3462806ejb.45.1611074343000; Tue, 19 Jan 2021 08:39:03 -0800 (PST) Received: from localhost.localdomain (ip5f5bee1b.dynamic.kabel-deutschland.de. [95.91.238.27]) by smtp.gmail.com with ESMTPSA id k22sm9589993eji.101.2021.01.19.08.39.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Jan 2021 08:39:02 -0800 (PST) From: Bean Huo To: alim.akhtar@samsung.com, avri.altman@wdc.com, asutoshd@codeaurora.org, jejb@linux.ibm.com, martin.petersen@oracle.com, stanley.chu@mediatek.com, beanhuo@micron.com, bvanassche@acm.org, tomas.winkler@intel.com, cang@codeaurora.org Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 2/6] docs: ABI: Add wb_on documentation for new entry wb_on Date: Tue, 19 Jan 2021 17:38:43 +0100 Message-Id: <20210119163847.20165-3-huobean@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210119163847.20165-1-huobean@gmail.com> References: <20210119163847.20165-1-huobean@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org From: Bean Huo Adds UFS sysfs documentation for new entry wb_on. Signed-off-by: Bean Huo --- Documentation/ABI/testing/sysfs-driver-ufs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-driver-ufs b/Documentation/ABI/testing/sysfs-driver-ufs index adc0d0e91607..f756fd0eba19 100644 --- a/Documentation/ABI/testing/sysfs-driver-ufs +++ b/Documentation/ABI/testing/sysfs-driver-ufs @@ -1153,3 +1153,14 @@ Description: This entry shows the configured size of WriteBooster buffer. 0400h corresponds to 4GB. The file is read only. + +What: /sys/bus/platform/drivers/ufshcd/*/wb_on +Date: January 2021 +Contact: Bean Huo +Description: This node is used to set or display whether UFS WriteBooster is + enabled. Echo 0 to this file to disable UFS WriteBooster or 1 to enable + it. The WriteBooster is enabled after power-on/reset, however, it will + be disabled/enable while CLK scaling down/up (if the platform supports + UFSHCD_CAP_CLK_SCALING). For a platform that doesn't support + UFSHCD_CAP_CLK_SCALING, we can disable/enable WriteBooster through this + sysfs node. From patchwork Tue Jan 19 16:38:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bean Huo X-Patchwork-Id: 12030529 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=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham 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 6F099C43333 for ; Tue, 19 Jan 2021 18:28:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 45D7F22D2A for ; Tue, 19 Jan 2021 18:28:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388848AbhASQj6 (ORCPT ); Tue, 19 Jan 2021 11:39:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52460 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1733193AbhASQjq (ORCPT ); Tue, 19 Jan 2021 11:39:46 -0500 Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com [IPv6:2a00:1450:4864:20::634]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2F799C061757; Tue, 19 Jan 2021 08:39:06 -0800 (PST) Received: by mail-ej1-x634.google.com with SMTP id a10so12778455ejg.10; Tue, 19 Jan 2021 08:39:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=TViEghrC/Cs6u38J3ALVtIUKVtDin2EhWKR0WQxdnZk=; b=Zd3sQ5k7V8bL8Hmp4xi3Io2bgPcWHeZbytHCkstgZdx7QQJUuDh+Ym8O858lJsROFm 42YwtZ5Tg7egxM/JPZCbjuWe76BrHA6/eZRPrBIr83gOyP17fdy+8bE7qdSoP4lBXVTj iiegDZ2qduvTt7UwHvTkQzGPMiob17URKPWpyHF6GTxm5/ULhw6CPHRSp3D8rM9Zj8QW FrHxQUIMqFBsWIJa8yPwYqb0vUDl0TmMwmR0kVWV9EvoyOWU50IJFXTYOKXpUNWqWiWI Rd9jlC+OKTVw4YkTBYOglt2Y7pvDROKzE9EVAq2JI/Xe7ZlWbPtL/vs+qI7R75yhiVnn zc4A== 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:mime-version:content-transfer-encoding; bh=TViEghrC/Cs6u38J3ALVtIUKVtDin2EhWKR0WQxdnZk=; b=Il8n+Nr27QdJQO/8bdR6w0GvrkLyQUgtgZUKPha+Gg8HI+fgyRr/AM+ac62pw7742m V5VZuqjBks1hcOoKkyu9byXUBG2t/AG8Baz8fZxQwrxqTM4J4WSJi5wDdNnY2SHCBMg/ yx0vu1oLY5Wjl7sqZ1Ui9BTAKqg0aSSl69yMk/KKBcZPqe3PMFwHZTDJDxSudul/0IBA AjFg1ms2pgNwrmOPZjttqJ2IN6tsiMQ7L6wfNAbJk3FvXw29napeDb2da46gLXvgyWlB Vrf0I/Ps1j2VjORHgvEmLj96KhhgIvZuxSWkBBuFjQUSsgtc3LiYUuFyqiCRYNKOu59l PeRg== X-Gm-Message-State: AOAM531vlGnrm1tT9u9RzeROldSovJZo/IlfNCSM1wtS+GROxV+0Vc+e BwyUoss7SLqW48BksKOlbEA= X-Google-Smtp-Source: ABdhPJy6FP+E4nmaBzWwj/OS5eCZM05fMtLY0jIgSHbZj5mKvwcnM3w2d1U6ByHGzQyKeqD+napqhQ== X-Received: by 2002:a17:906:ae81:: with SMTP id md1mr3380304ejb.222.1611074344995; Tue, 19 Jan 2021 08:39:04 -0800 (PST) Received: from localhost.localdomain (ip5f5bee1b.dynamic.kabel-deutschland.de. [95.91.238.27]) by smtp.gmail.com with ESMTPSA id k22sm9589993eji.101.2021.01.19.08.39.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Jan 2021 08:39:04 -0800 (PST) From: Bean Huo To: alim.akhtar@samsung.com, avri.altman@wdc.com, asutoshd@codeaurora.org, jejb@linux.ibm.com, martin.petersen@oracle.com, stanley.chu@mediatek.com, beanhuo@micron.com, bvanassche@acm.org, tomas.winkler@intel.com, cang@codeaurora.org Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 3/6] scsi: ufs: Changes comment in the function ufshcd_wb_probe() Date: Tue, 19 Jan 2021 17:38:44 +0100 Message-Id: <20210119163847.20165-4-huobean@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210119163847.20165-1-huobean@gmail.com> References: <20210119163847.20165-1-huobean@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org From: Bean Huo USFHCD supports WriteBooster "LU dedicated buffer” mode and “shared buffer” mode both, so changes the comment in the function ufshcd_wb_probe(). Reviewed-by: Can Guo Reviewed-by: Stanley Chu Signed-off-by: Bean Huo --- drivers/scsi/ufs/ufshcd.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 501c617cecb9..d13c6eb2efcd 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -7295,10 +7295,9 @@ static void ufshcd_wb_probe(struct ufs_hba *hba, u8 *desc_buf) goto wb_disabled; /* - * WB may be supported but not configured while provisioning. - * The spec says, in dedicated wb buffer mode, - * a max of 1 lun would have wb buffer configured. - * Now only shared buffer mode is supported. + * WB may be supported but not configured while provisioning. The spec + * says, in dedicated wb buffer mode, a max of 1 lun would have wb + * buffer configured. */ dev_info->b_wb_buffer_type = desc_buf[DEVICE_DESC_PARAM_WB_TYPE]; From patchwork Tue Jan 19 16:38:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bean Huo X-Patchwork-Id: 12030537 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=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham 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 C6AF8C4161F for ; Tue, 19 Jan 2021 18:28:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A7F9B20706 for ; Tue, 19 Jan 2021 18:28:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2391123AbhASRCw (ORCPT ); Tue, 19 Jan 2021 12:02:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52466 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387787AbhASQjs (ORCPT ); Tue, 19 Jan 2021 11:39:48 -0500 Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B856BC0613C1; Tue, 19 Jan 2021 08:39:07 -0800 (PST) Received: by mail-ej1-x62e.google.com with SMTP id rv9so10625283ejb.13; Tue, 19 Jan 2021 08:39:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=x3iaktssMsx35re+ePjSYuuphi63Sg/vQJuTVNRQ1PI=; b=A1Fvc8QyZgmYnW0bcJy9kLzd/JdI4l9U3e0n3usU66uClwx5bGsif+K7Ud9gRpXxRk KNgYGL/z3dEa51WSIcmYoe+CFLQXqUDyO7S2uR3tw5rIXnMu0UbhtZCGnHAI7d7gnt37 6uwVLJhTUw8wF3QDfCyHGfvC7/JHH018NZlLr1PJ21q42PihmTvcgHvhB094eiLdkVFf Q7CHUykZZtTA8dIvHFbPgDiaQmY5KJVkMKqfDFnGtyZhT4CO5//4oAVtu3DLvt6pq4RQ mgObN/GwkajethESdblctExRQj5/5fDAgqLoUzcuqRW/P9vSZ9L3k2RYPonoxeFH4Agi ZETA== 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; bh=x3iaktssMsx35re+ePjSYuuphi63Sg/vQJuTVNRQ1PI=; b=JwPZW2YDKrNiYM2WCMFvW7rtGae1AUTBvs0icYfw5zUMAEMwAxGIX0sDavmWBThj08 17U7McjBXr8XxfNEOEtrwdff7qwLAHcrQNTYJrb38LaojtLiyel5BjyyFpqiaBk78Vyp bg1AtcW6AOuw4jMKpy515uIFPA2laxULTzJXfIbeO9O+jdJ/XFhykWmmKZ5kKoAMIjIO ILeTHZEwuDppNqGJ1JOqU3AJWD6Fz9WKGqR4Fneoce5DTCgxO9O5uhYDrFANlwyng2un /fjQXXAuRZ3o4F+ZJ4oynvU8qLXZdRlSVgVM5Xcj3tmLakrgvcIzb4VT5KxjrrAHVhlo 8z4Q== X-Gm-Message-State: AOAM531hwLdCnyA5mM9HoklpI52oC50ZMfWKBH+asnWLcBatw0p8BRiT TFAp+behA592EwILhwh91K4= X-Google-Smtp-Source: ABdhPJyVWfv2S9QFX/OxCCnsapHy5tUlnzFkOFyn5I2/qGJZZ3Mf1NVS16GJtgYFWIkUP+Ia3rlUwQ== X-Received: by 2002:a17:907:16a2:: with SMTP id hc34mr3616256ejc.9.1611074346477; Tue, 19 Jan 2021 08:39:06 -0800 (PST) Received: from localhost.localdomain (ip5f5bee1b.dynamic.kabel-deutschland.de. [95.91.238.27]) by smtp.gmail.com with ESMTPSA id k22sm9589993eji.101.2021.01.19.08.39.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Jan 2021 08:39:06 -0800 (PST) From: Bean Huo To: alim.akhtar@samsung.com, avri.altman@wdc.com, asutoshd@codeaurora.org, jejb@linux.ibm.com, martin.petersen@oracle.com, stanley.chu@mediatek.com, beanhuo@micron.com, bvanassche@acm.org, tomas.winkler@intel.com, cang@codeaurora.org Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 4/6] scsi: ufs: Remove two WB related fields from struct ufs_dev_info Date: Tue, 19 Jan 2021 17:38:45 +0100 Message-Id: <20210119163847.20165-5-huobean@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210119163847.20165-1-huobean@gmail.com> References: <20210119163847.20165-1-huobean@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org From: Bean Huo d_wb_alloc_units and d_ext_ufs_feature_sup only be used while WB probe. They are just used to confirm the condition that "if bWriteBoosterBufferType is set to 01h but dNumSharedWriteBoosterBufferAllocUnits is set to zero, the WriteBooster feature is disabled", and if UFS device supports WB. After that, no user uses them any more. So, don't need to keep time in runtime. Reviewed-by: Stanley Chu Signed-off-by: Bean Huo --- drivers/scsi/ufs/ufs.h | 2 -- drivers/scsi/ufs/ufshcd.c | 14 ++++++-------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h index 09c7cc8a678d..a8000ed0017e 100644 --- a/drivers/scsi/ufs/ufs.h +++ b/drivers/scsi/ufs/ufs.h @@ -538,9 +538,7 @@ struct ufs_dev_info { u8 *model; u16 wspecversion; u32 clk_gating_wait_us; - u32 d_ext_ufs_feature_sup; u8 b_wb_buffer_type; - u32 d_wb_alloc_units; bool b_rpm_dev_flush_capable; u8 b_presrv_uspc_en; }; diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index d13c6eb2efcd..f6fe14b60eff 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -7270,6 +7270,7 @@ static void ufshcd_wb_probe(struct ufs_hba *hba, u8 *desc_buf) struct ufs_dev_info *dev_info = &hba->dev_info; u8 lun; u32 d_lu_wb_buf_alloc; + u32 ext_ufs_feature; if (!ufshcd_is_wb_allowed(hba)) return; @@ -7287,11 +7288,10 @@ static void ufshcd_wb_probe(struct ufs_hba *hba, u8 *desc_buf) DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP + 4) goto wb_disabled; - dev_info->d_ext_ufs_feature_sup = - get_unaligned_be32(desc_buf + - DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP); + ext_ufs_feature = get_unaligned_be32(desc_buf + + DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP); - if (!(dev_info->d_ext_ufs_feature_sup & UFS_DEV_WRITE_BOOSTER_SUP)) + if (!(ext_ufs_feature & UFS_DEV_WRITE_BOOSTER_SUP)) goto wb_disabled; /* @@ -7306,10 +7306,8 @@ static void ufshcd_wb_probe(struct ufs_hba *hba, u8 *desc_buf) desc_buf[DEVICE_DESC_PARAM_WB_PRESRV_USRSPC_EN]; if (dev_info->b_wb_buffer_type == WB_BUF_MODE_SHARED) { - dev_info->d_wb_alloc_units = - get_unaligned_be32(desc_buf + - DEVICE_DESC_PARAM_WB_SHARED_ALLOC_UNITS); - if (!dev_info->d_wb_alloc_units) + if (!get_unaligned_be32(desc_buf + + DEVICE_DESC_PARAM_WB_SHARED_ALLOC_UNITS)) goto wb_disabled; } else { for (lun = 0; lun < UFS_UPIU_MAX_WB_LUN_ID; lun++) { From patchwork Tue Jan 19 16:38:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bean Huo X-Patchwork-Id: 12030533 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=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham 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 D4D81C4161F for ; Tue, 19 Jan 2021 18:28:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A648320776 for ; Tue, 19 Jan 2021 18:28:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389445AbhASQrr (ORCPT ); Tue, 19 Jan 2021 11:47:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52602 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731375AbhASQk0 (ORCPT ); Tue, 19 Jan 2021 11:40:26 -0500 Received: from mail-ed1-x531.google.com (mail-ed1-x531.google.com [IPv6:2a00:1450:4864:20::531]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6244EC0613CF; Tue, 19 Jan 2021 08:39:09 -0800 (PST) Received: by mail-ed1-x531.google.com with SMTP id bx12so8286193edb.8; Tue, 19 Jan 2021 08:39:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=WSF3D1UQd7f4AtR6+YB5wSyLd637YNH+sG8P7bFuhZ8=; b=IO7DWS0hMZa2HquUoaCMrOzIIrephnp+BO9YR+ZUYxeBMW8LVpYtiWGSllqnTa9JOf UnFUTL3D3u40smhNcr5SyDljYjizxAuTWcX7rqD8fuT2HXqgJ3a7rrZqgsWw5uYqgizk vp7UxVi6/wPH8ieUAlHsBuMIJE0MjYXnhQowmzn4Hxif4uHklUImpxSleOcIq9vbni4L gX0G9Lz4Iio6vln8E53LTJygRleQGYi69vLwUkHaSnmL77+Env2hMZeuHekRM2LUl20l /+fAP7p3Svi2dj/mAXqjB90p0NyfPv+5YBID2Zgra9kEfRPm91SUqO4Z9TLrk1RpUnh6 Yz/A== 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; bh=WSF3D1UQd7f4AtR6+YB5wSyLd637YNH+sG8P7bFuhZ8=; b=b9HLUIcvjeMCq8ZKcaz3+AGHeyFK86mwBWcCnzhI2Kmg56CydK4MF5N2WDYbYPJL2A XbM2a2i5J52RAg8dcP18CzEK8XrPIhpugmbCfT3Cchr7tEVGYs6BQ52aR8OrhLwXFdfy Or8lW/Tj7drVqIdyWpbV4xhx8W7YIKga0v+/+YV1jkBXWjHHno738DbWSP0CP8+Y2Rv1 dCWK9BsJNZg8n2uy9iLD+E+rC0lRwoGV5/rnTeIuKUCje7v4Iad+xdI0h1ZZGtHbpRu4 LJiLnIyoUKt6Lpscr3X81h0U8HZKmA2LzlgHBbzGMXoT7Gr5P4dWGwpulDe0rI7H1XDc D1LQ== X-Gm-Message-State: AOAM530iyGtSUAZkkGzaXNiSmcuyJxrdCOcC1ZRSpQn4AQMu7/YB2/U0 5DvOEiwxDpCH2G0ca0O4iQo= X-Google-Smtp-Source: ABdhPJyzOB79wuyvLUkeiuXVcyNCl9OrvATpN+1ylyZOWRwrgxuj0vhYeSGiQXkmreOFEZ21+Tzn6A== X-Received: by 2002:a50:bf4a:: with SMTP id g10mr3954191edk.201.1611074348078; Tue, 19 Jan 2021 08:39:08 -0800 (PST) Received: from localhost.localdomain (ip5f5bee1b.dynamic.kabel-deutschland.de. [95.91.238.27]) by smtp.gmail.com with ESMTPSA id k22sm9589993eji.101.2021.01.19.08.39.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Jan 2021 08:39:07 -0800 (PST) From: Bean Huo To: alim.akhtar@samsung.com, avri.altman@wdc.com, asutoshd@codeaurora.org, jejb@linux.ibm.com, martin.petersen@oracle.com, stanley.chu@mediatek.com, beanhuo@micron.com, bvanassche@acm.org, tomas.winkler@intel.com, cang@codeaurora.org Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 5/6] scsi: ufs: Group UFS WB related flags to struct ufs_dev_info Date: Tue, 19 Jan 2021 17:38:46 +0100 Message-Id: <20210119163847.20165-6-huobean@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210119163847.20165-1-huobean@gmail.com> References: <20210119163847.20165-1-huobean@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org From: Bean Huo UFS device-related flags should be grouped in ufs_dev_info. Take wb_enabled and wb_buf_flush_enabled out from the struct ufs_hba, group them to struct ufs_dev_info, and align the names of the structure members vertically. Acked-by: Stanley Chu Reviewed-by: Can Guo Signed-off-by: Bean Huo --- drivers/scsi/ufs/ufs-sysfs.c | 2 +- drivers/scsi/ufs/ufs.h | 27 ++++++++++++++++----------- drivers/scsi/ufs/ufshcd.c | 21 ++++++++++----------- drivers/scsi/ufs/ufshcd.h | 4 +--- 4 files changed, 28 insertions(+), 26 deletions(-) diff --git a/drivers/scsi/ufs/ufs-sysfs.c b/drivers/scsi/ufs/ufs-sysfs.c index 76db8593ca09..acc54f530f2d 100644 --- a/drivers/scsi/ufs/ufs-sysfs.c +++ b/drivers/scsi/ufs/ufs-sysfs.c @@ -214,7 +214,7 @@ static ssize_t wb_on_show(struct device *dev, struct device_attribute *attr, { struct ufs_hba *hba = dev_get_drvdata(dev); - return sysfs_emit(buf, "%d\n", hba->wb_enabled); + return sysfs_emit(buf, "%d\n", hba->dev_info.wb_enabled); } static ssize_t wb_on_store(struct device *dev, struct device_attribute *attr, diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h index a8000ed0017e..bf1897a72532 100644 --- a/drivers/scsi/ufs/ufs.h +++ b/drivers/scsi/ufs/ufs.h @@ -527,20 +527,25 @@ struct ufs_vreg_info { }; struct ufs_dev_info { - bool f_power_on_wp_en; + bool f_power_on_wp_en; /* Keeps information if any of the LU is power on write protected */ - bool is_lu_power_on_wp; + bool is_lu_power_on_wp; /* Maximum number of general LU supported by the UFS device */ - u8 max_lu_supported; - u8 wb_dedicated_lu; - u16 wmanufacturerid; + u8 max_lu_supported; + u16 wmanufacturerid; /*UFS device Product Name */ - u8 *model; - u16 wspecversion; - u32 clk_gating_wait_us; - u8 b_wb_buffer_type; - bool b_rpm_dev_flush_capable; - u8 b_presrv_uspc_en; + u8 *model; + u16 wspecversion; + u32 clk_gating_wait_us; + + /* UFS WB related flags */ + bool wb_enabled; + bool wb_buf_flush_enabled; + u8 wb_dedicated_lu; + u8 wb_buffer_type; + + bool b_rpm_dev_flush_capable; + u8 b_presrv_uspc_en; }; /* diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index f6fe14b60eff..4f40891ea429 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -606,8 +606,8 @@ static void ufshcd_device_reset(struct ufs_hba *hba) if (!err) { ufshcd_set_ufs_dev_active(hba); if (ufshcd_is_wb_allowed(hba)) { - hba->wb_enabled = false; - hba->wb_buf_flush_enabled = false; + hba->dev_info.wb_enabled = false; + hba->dev_info.wb_buf_flush_enabled = false; } } if (err != -EOPNOTSUPP) @@ -5421,7 +5421,7 @@ int ufshcd_wb_ctrl(struct ufs_hba *hba, bool enable) if (!ufshcd_is_wb_allowed(hba)) return 0; - if (!(enable ^ hba->wb_enabled)) + if (!(enable ^ hba->dev_info.wb_enabled)) return 0; if (enable) opcode = UPIU_QUERY_OPCODE_SET_FLAG; @@ -5437,7 +5437,7 @@ int ufshcd_wb_ctrl(struct ufs_hba *hba, bool enable) return ret; } - hba->wb_enabled = enable; + hba->dev_info.wb_enabled = enable; dev_dbg(hba->dev, "%s write booster %s %d\n", __func__, enable ? "enable" : "disable", ret); @@ -5477,7 +5477,7 @@ static int ufshcd_wb_buf_flush_enable(struct ufs_hba *hba) int ret; u8 index; - if (!ufshcd_is_wb_allowed(hba) || hba->wb_buf_flush_enabled) + if (!ufshcd_is_wb_allowed(hba) || hba->dev_info.wb_buf_flush_enabled) return 0; index = ufshcd_wb_get_query_index(hba); @@ -5488,7 +5488,7 @@ static int ufshcd_wb_buf_flush_enable(struct ufs_hba *hba) dev_err(hba->dev, "%s WB - buf flush enable failed %d\n", __func__, ret); else - hba->wb_buf_flush_enabled = true; + hba->dev_info.wb_buf_flush_enabled = true; dev_dbg(hba->dev, "WB - Flush enabled: %d\n", ret); return ret; @@ -5499,7 +5499,7 @@ static int ufshcd_wb_buf_flush_disable(struct ufs_hba *hba) int ret; u8 index; - if (!ufshcd_is_wb_allowed(hba) || !hba->wb_buf_flush_enabled) + if (!ufshcd_is_wb_allowed(hba) || !hba->dev_info.wb_buf_flush_enabled) return 0; index = ufshcd_wb_get_query_index(hba); @@ -5510,7 +5510,7 @@ static int ufshcd_wb_buf_flush_disable(struct ufs_hba *hba) dev_warn(hba->dev, "%s: WB - buf flush disable failed %d\n", __func__, ret); } else { - hba->wb_buf_flush_enabled = false; + hba->dev_info.wb_buf_flush_enabled = false; dev_dbg(hba->dev, "WB - Flush disabled: %d\n", ret); } @@ -7299,13 +7299,12 @@ static void ufshcd_wb_probe(struct ufs_hba *hba, u8 *desc_buf) * says, in dedicated wb buffer mode, a max of 1 lun would have wb * buffer configured. */ - dev_info->b_wb_buffer_type = - desc_buf[DEVICE_DESC_PARAM_WB_TYPE]; + dev_info->wb_buffer_type = desc_buf[DEVICE_DESC_PARAM_WB_TYPE]; dev_info->b_presrv_uspc_en = desc_buf[DEVICE_DESC_PARAM_WB_PRESRV_USRSPC_EN]; - if (dev_info->b_wb_buffer_type == WB_BUF_MODE_SHARED) { + if (dev_info->wb_buffer_type == WB_BUF_MODE_SHARED) { if (!get_unaligned_be32(desc_buf + DEVICE_DESC_PARAM_WB_SHARED_ALLOC_UNITS)) goto wb_disabled; diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h index ac0f03f69e42..a599d6bb5c8c 100644 --- a/drivers/scsi/ufs/ufshcd.h +++ b/drivers/scsi/ufs/ufshcd.h @@ -818,8 +818,6 @@ struct ufs_hba { struct device bsg_dev; struct request_queue *bsg_queue; - bool wb_buf_flush_enabled; - bool wb_enabled; struct delayed_work rpm_dev_flush_recheck_work; #ifdef CONFIG_SCSI_UFS_CRYPTO @@ -967,7 +965,7 @@ static inline bool ufshcd_keep_autobkops_enabled_except_suspend( static inline u8 ufshcd_wb_get_query_index(struct ufs_hba *hba) { - if (hba->dev_info.b_wb_buffer_type == WB_BUF_MODE_LU_DEDICATED) + if (hba->dev_info.wb_buffer_type == WB_BUF_MODE_LU_DEDICATED) return hba->dev_info.wb_dedicated_lu; return 0; } From patchwork Tue Jan 19 16:38:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bean Huo X-Patchwork-Id: 12030531 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=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham 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 95AA0C433DB for ; Tue, 19 Jan 2021 18:28:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5FD1F22E00 for ; Tue, 19 Jan 2021 18:28:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389356AbhASQro (ORCPT ); Tue, 19 Jan 2021 11:47:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52614 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389013AbhASQkc (ORCPT ); Tue, 19 Jan 2021 11:40:32 -0500 Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A8092C0613D3; Tue, 19 Jan 2021 08:39:10 -0800 (PST) Received: by mail-ed1-x52c.google.com with SMTP id u19so22314848edx.2; Tue, 19 Jan 2021 08:39:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=xe4EHIL51ydV2x+6uQo+VrV4LDMVn0EUlA1wEftD2vA=; b=Thh2dbLWbb2kmBb+EScPBRhN955aWoSTH43AgNIqBUc/k2Hxc/x4lODsIwOtEbyEbO Ny/DRcqd3cRuQtR10n+7PopWhQlZ3Ikd6/vdmNYtb5yzO/FCn2/NdzbL+cXx9B4JRW0+ kHIrZL53gKPLoCv7/HN5J8fb7+fBK6EQqjc7N6XxMAz/Okd3842qqCXVyZ5Fb+yRM921 bLCKsSzBQRguTUWoRFQOxdT5sWw43Z6mOFSa5B16bY6mHEGpYyg3XCqJG72LRMdINyL2 JLar48ETKMX0EFP6MIrq6sPAC4UERgAdKoJvJeprCmfFdY6FQ3JreXfrf6/I9lt4S2zs aJjw== 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; bh=xe4EHIL51ydV2x+6uQo+VrV4LDMVn0EUlA1wEftD2vA=; b=T3jbPS1K8skbf6LWFJBV1ZvzlddlhlP589qUV7Tj132+7UbiVFN0C86943SDsKDF+r prVnF21SD2TilCucm9cOpHx9fut8c82BG2n+iLmuFJ3bp1aqK0pOGuBkOxc4v3Irqk3I V7IktulqRmFFjTCbnF8mvKP4hwNXrWoi/oEmPytsHwNLTMbZXBfzExSHeZ2xJQ6rFa7l HLrcCR+fJDbt5qugdWHHLNRYJyWzcEsQ2FxGBnIemsYarviz3C6n7X77dBYWSRS4Q9hi E38ziIQhwBN3HpYly4+5mswI+hFP59D63kGwfnJYr5FD3TA0wgGv/jBR9mrrArvQlt3F OWJQ== X-Gm-Message-State: AOAM531puOpvV8+Y7y+Rz/GLCxypXHH7xEgKfxaDd5feMvn+HN1IcsXl X4tzWZi4k8DxXGzU5cWEfU8= X-Google-Smtp-Source: ABdhPJy3EKWKx5LLVJjr+bfJPkDjeWay4JIASbzDCvcu5Snu8q9vHH/7PxPPDM59iYFmGGHT+sreRQ== X-Received: by 2002:a50:9ee9:: with SMTP id a96mr4072520edf.343.1611074349476; Tue, 19 Jan 2021 08:39:09 -0800 (PST) Received: from localhost.localdomain (ip5f5bee1b.dynamic.kabel-deutschland.de. [95.91.238.27]) by smtp.gmail.com with ESMTPSA id k22sm9589993eji.101.2021.01.19.08.39.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Jan 2021 08:39:09 -0800 (PST) From: Bean Huo To: alim.akhtar@samsung.com, avri.altman@wdc.com, asutoshd@codeaurora.org, jejb@linux.ibm.com, martin.petersen@oracle.com, stanley.chu@mediatek.com, beanhuo@micron.com, bvanassche@acm.org, tomas.winkler@intel.com, cang@codeaurora.org Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 6/6] scsi: ufs: Cleanup WB buffer flush toggle implementation Date: Tue, 19 Jan 2021 17:38:47 +0100 Message-Id: <20210119163847.20165-7-huobean@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210119163847.20165-1-huobean@gmail.com> References: <20210119163847.20165-1-huobean@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org From: Bean Huo Delete ufshcd_wb_buf_flush_enable() and ufshcd_wb_buf_flush_disable(), move the implementation into ufshcd_wb_toggle_flush(). Signed-off-by: Bean Huo Reviewed-by: Stanley Chu Reviewed-by: Can Guo Signed-off-by: Bean Huo --- drivers/scsi/ufs/ufshcd.c | 66 +++++++++++++-------------------------- 1 file changed, 21 insertions(+), 45 deletions(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 4f40891ea429..2d2a1bbfad92 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -247,10 +247,8 @@ static int ufshcd_setup_vreg(struct ufs_hba *hba, bool on); static inline int ufshcd_config_vreg_hpm(struct ufs_hba *hba, struct ufs_vreg *vreg); static int ufshcd_try_to_abort_task(struct ufs_hba *hba, int tag); -static int ufshcd_wb_buf_flush_enable(struct ufs_hba *hba); -static int ufshcd_wb_buf_flush_disable(struct ufs_hba *hba); static int ufshcd_wb_toggle_flush_during_h8(struct ufs_hba *hba, bool set); -static inline void ufshcd_wb_toggle_flush(struct ufs_hba *hba, bool enable); +static inline int ufshcd_wb_toggle_flush(struct ufs_hba *hba, bool enable); static void ufshcd_hba_vreg_set_lpm(struct ufs_hba *hba); static void ufshcd_hba_vreg_set_hpm(struct ufs_hba *hba); @@ -5460,60 +5458,38 @@ static int ufshcd_wb_toggle_flush_during_h8(struct ufs_hba *hba, bool set) index, NULL); } -static inline void ufshcd_wb_toggle_flush(struct ufs_hba *hba, bool enable) -{ - if (hba->quirks & UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL) - return; - - if (enable) - ufshcd_wb_buf_flush_enable(hba); - else - ufshcd_wb_buf_flush_disable(hba); - -} - -static int ufshcd_wb_buf_flush_enable(struct ufs_hba *hba) +static inline int ufshcd_wb_toggle_flush(struct ufs_hba *hba, bool enable) { int ret; u8 index; + enum query_opcode opcode; - if (!ufshcd_is_wb_allowed(hba) || hba->dev_info.wb_buf_flush_enabled) + if (hba->quirks & UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL) return 0; - index = ufshcd_wb_get_query_index(hba); - ret = ufshcd_query_flag_retry(hba, UPIU_QUERY_OPCODE_SET_FLAG, - QUERY_FLAG_IDN_WB_BUFF_FLUSH_EN, - index, NULL); - if (ret) - dev_err(hba->dev, "%s WB - buf flush enable failed %d\n", - __func__, ret); - else - hba->dev_info.wb_buf_flush_enabled = true; - - dev_dbg(hba->dev, "WB - Flush enabled: %d\n", ret); - return ret; -} - -static int ufshcd_wb_buf_flush_disable(struct ufs_hba *hba) -{ - int ret; - u8 index; - - if (!ufshcd_is_wb_allowed(hba) || !hba->dev_info.wb_buf_flush_enabled) + if (!ufshcd_is_wb_allowed(hba) || + hba->dev_info.wb_buf_flush_enabled == enable) return 0; + if (enable) + opcode = UPIU_QUERY_OPCODE_SET_FLAG; + else + opcode = UPIU_QUERY_OPCODE_CLEAR_FLAG; + index = ufshcd_wb_get_query_index(hba); - ret = ufshcd_query_flag_retry(hba, UPIU_QUERY_OPCODE_CLEAR_FLAG, - QUERY_FLAG_IDN_WB_BUFF_FLUSH_EN, - index, NULL); + ret = ufshcd_query_flag_retry(hba, opcode, + QUERY_FLAG_IDN_WB_BUFF_FLUSH_EN, index, + NULL); if (ret) { - dev_warn(hba->dev, "%s: WB - buf flush disable failed %d\n", - __func__, ret); - } else { - hba->dev_info.wb_buf_flush_enabled = false; - dev_dbg(hba->dev, "WB - Flush disabled: %d\n", ret); + dev_err(hba->dev, "%s WB-Buf Flush %s failed %d\n", __func__, + enable ? "enable" : "disable", ret); + goto out; } + hba->dev_info.wb_buf_flush_enabled = enable; + + dev_dbg(hba->dev, "WB-Buf Flush %s\n", enable ? "enabled" : "disabled"); +out: return ret; }