From patchwork Mon Jan 18 20:10:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bean Huo X-Patchwork-Id: 12028131 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,URIBL_BLOCKED,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 AEEABC433E6 for ; Mon, 18 Jan 2021 20:13:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7FDEC230FF for ; Mon, 18 Jan 2021 20:13:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2437903AbhARUM7 (ORCPT ); Mon, 18 Jan 2021 15:12:59 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43080 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2437858AbhARULc (ORCPT ); Mon, 18 Jan 2021 15:11:32 -0500 Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com [IPv6:2a00:1450:4864:20::530]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 43691C061757; Mon, 18 Jan 2021 12:10:52 -0800 (PST) Received: by mail-ed1-x530.google.com with SMTP id p22so18940427edu.11; Mon, 18 Jan 2021 12:10:52 -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=qswzafYry+G5B5UE7dVKcDDvMag33fJ8LeQJQxtybQk=; b=JtOSolS9NclYRLpUpHvMyLGiJH27+PhY/tBJLEzk78LGNq3niIBA7VpXPeEYbqj0UZ aRsozWxIgRQy2kINFEE+oywG8Pv3UrcsQUCPbNenOEg449wOhRWdLx4d5Ec0effzvWbs Qk3hmL+3HRJzLD6CSrlkrj6JcKCN9NqjKwKgwHqcBe7EphejSJMIgRE2yy/A6vMshUnA BW/P7pZoaj51Q3JXhhdfz9yDCD2rgxcAYHNTSPMwflp9i0yiV8AGJBJ3tOiM1qQvmlZ6 B48/XNeaSG0ojygeC5ZjTAE/PbDVPbCjz+MyHQEECB6/RlRfEjrKn3b1EkJsvjOwAZjm B2NQ== 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=qswzafYry+G5B5UE7dVKcDDvMag33fJ8LeQJQxtybQk=; b=Nt+lQsClPOaurinKZ8Vu74HYgc7Wr4DzK0yTcyC1E0NFAA3UkLyPS413feZpogJdzU vcXke8ioAXQAiMvoNqbBhmvv/DFgpdAtBl3fflxCZ/JFzLNfUJncN+Ha1EFJE+6KYzSq QdHA/G+gOPmsiuYFXekSF2pEMPmX4uicTrHgk3whD8+3aKwNEPTt81AYSKURfB1v+Qr2 V1hSMi/Hdzf/4rlOmMHxSfXZO0JGcQ9ERvmIu9l+RIQ/WYEuOGMKFIuj/06IWYdBKhF+ mT0uEIaJA4Gu1Cad4P6cTkv3e46h9lJZpfycjuZO/MSD5lfS95VjxD44BStOyfLiMHfV sJqg== X-Gm-Message-State: AOAM5312w4SJXwuc72B1Jj8L4tdUSDUDW6jVP2V97C5REk/iTpy/dk23 B7MjRYk2iu3gQqdunM17OOU= X-Google-Smtp-Source: ABdhPJynLmX+bZFHMlkl+uBTtadEamev70AL6CWzy7J6gz2LvJsDd5xp1UExyaatiPDRjj0GPHO3VA== X-Received: by 2002:a05:6402:34c3:: with SMTP id w3mr868998edc.3.1611000650870; Mon, 18 Jan 2021 12:10:50 -0800 (PST) Received: from localhost.localdomain (ip5f5bee1b.dynamic.kabel-deutschland.de. [95.91.238.27]) by smtp.gmail.com with ESMTPSA id qh13sm3972543ejb.33.2021.01.18.12.10.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Jan 2021 12:10:50 -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 v6 1/6] scsi: ufs: Add "wb_on" sysfs node to control WB on/off Date: Mon, 18 Jan 2021 21:10:34 +0100 Message-Id: <20210118201039.2398-2-huobean@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210118201039.2398-1-huobean@gmail.com> References: <20210118201039.2398-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 5c6ee9394af3..3f2b495b36ee 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 Mon Jan 18 20:10:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bean Huo X-Patchwork-Id: 12028129 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,URIBL_BLOCKED,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 19AD6C433DB for ; Mon, 18 Jan 2021 20:13:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E6B3A22E02 for ; Mon, 18 Jan 2021 20:13:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2437898AbhARUM4 (ORCPT ); Mon, 18 Jan 2021 15:12:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43088 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2437859AbhARULe (ORCPT ); Mon, 18 Jan 2021 15:11:34 -0500 Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com [IPv6:2a00:1450:4864:20::62f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CC077C0613C1; Mon, 18 Jan 2021 12:10:53 -0800 (PST) Received: by mail-ej1-x62f.google.com with SMTP id gx5so6150007ejb.7; Mon, 18 Jan 2021 12:10:53 -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=73XbxUbs64FU2jf4GNHlCLFC9xngJBFU6S4JYLdWQPY=; b=EElB4eeRk0qL+qtOQdwO4VzxuqCyj4d7facrUMagC5gqDrz3EmUba7cxdByuEbM4NN ZE8qTRHA6Y4wTRr5E4/L+jb9gnIj6LAAdKaKM53Q/w0C3Bil/XxOVq8gpsWUnzO9fEj7 MdvJe9s/bOMDsByZeTJbo/MUHcfr2KKdW7Q122Z3e4dEXVe/UctSJqBMGQrSjgMdkdMS IVJD+qJPSfVhgk3N5D/2YbytJcMgRXz9+GGNKop1WgYC53mgWP7mnT4x0awmchAHOxVM cnTIe+tcWRDiLs/Tc/aXc3B23VDVMMlYswKKXAR65YJrFh/7KAT7JjgoVdk7n9af/dDf 3WeQ== 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=73XbxUbs64FU2jf4GNHlCLFC9xngJBFU6S4JYLdWQPY=; b=dcUs9OlW4Xoy6vtVHCjr2OjUDjSvKdDErD9mwtxc3uF/0dJSKcHx+isMFA0ut7aFdT CLevPEEV8Y4txnCP2G5L0hCu0IcXfQvUr9bBXR8ybd3y6A4+U0ZIR+TQEl+uG+pKbadw Z8rfVYOYyJFIClqo8wRtMwM7n2BRQiUThS+T6GY89nQvUstXTJUkyHT32wzHG3xVKiiV BOkrLGra4xDc87uG/y9tBYvXcBDWSA26QC42D2iG7anAxmBEzDN26KFX5F3i71aJzNMt sAqoTSUdMIAfEOiUKapz4T586MQtf5jFxgMWRd86HEDur+TxANWMFpLl/dxMppyZZSQO mArQ== X-Gm-Message-State: AOAM531Aqxq9cVD3bRDVRZc26k72cSZys7Ra0dOg5pibzAFZBqIRR3q/ zkC/NvHM9BOTMZ9aZECqyEI= X-Google-Smtp-Source: ABdhPJznGH4/1+AIfeU1Jj3YROTe4oOtb6hLcVKBQVnEphQbn+8G+XS/JiCjvNjEgj5gE9FW9O6XDA== X-Received: by 2002:a17:906:6087:: with SMTP id t7mr910768ejj.90.1611000652628; Mon, 18 Jan 2021 12:10:52 -0800 (PST) Received: from localhost.localdomain (ip5f5bee1b.dynamic.kabel-deutschland.de. [95.91.238.27]) by smtp.gmail.com with ESMTPSA id qh13sm3972543ejb.33.2021.01.18.12.10.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Jan 2021 12:10:52 -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 v6 2/6] docs: ABI: Add wb_on documentation for UFS sysfs Date: Mon, 18 Jan 2021 21:10:35 +0100 Message-Id: <20210118201039.2398-3-huobean@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210118201039.2398-1-huobean@gmail.com> References: <20210118201039.2398-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 | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-driver-ufs b/Documentation/ABI/testing/sysfs-driver-ufs index adc0d0e91607..f0a1ac385c7f 100644 --- a/Documentation/ABI/testing/sysfs-driver-ufs +++ b/Documentation/ABI/testing/sysfs-driver-ufs @@ -1153,3 +1153,11 @@ 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. Note, this is only allowed for the platform doesen't support + UFSHCD_CAP_CLK_SCALING. From patchwork Mon Jan 18 20:10:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bean Huo X-Patchwork-Id: 12028179 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,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 30929C433E6 for ; Mon, 18 Jan 2021 20:21:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D9DCE22252 for ; Mon, 18 Jan 2021 20:21:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2437892AbhARUMy (ORCPT ); Mon, 18 Jan 2021 15:12:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43094 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2437860AbhARULf (ORCPT ); Mon, 18 Jan 2021 15:11:35 -0500 Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com [IPv6:2a00:1450:4864:20::62c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 432BDC061574; Mon, 18 Jan 2021 12:10:55 -0800 (PST) Received: by mail-ej1-x62c.google.com with SMTP id r12so14035152ejb.9; Mon, 18 Jan 2021 12:10:55 -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=SrT6KxCzPuWbkvK8c/zH4nf3o3AFHlMB/7HpKWNRtUM=; b=Rx5UbXkPOfHAqUNj+K5M5rWX3LF15JcyRGamXb081BOdnU+3DpGuMbvxD18bsRT4Iu pKYlCcHUnhDb2wzn4kpFiIZbmqJCBp+ZrkKyDnZfwfFtie4e5ljcqi3p/AT49ONQoCRG NXK8KwhYx/gbiDJoFkAuCbpHy1XiDjeizlMdsOK0OvJZWoTwPzysl5oKrHUkJq7fF+N7 pH9e7zz9PoJxU8QlGpjYvQ+eHsO4+J3x4Fr3TNlOW/lEMmHzoAQ32in7i70aIqalSoBV BQEgA5UdvBccmS9BOFHltWuUlhOWC0vYFrKDeVLBroT4IwSpNJYCxEwwIC4HdAk1/Hlf 1Dww== 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=SrT6KxCzPuWbkvK8c/zH4nf3o3AFHlMB/7HpKWNRtUM=; b=AGouhS/3Iq+2S/EXzmnJHmwM4LWdV4YWBGSoeBhpP08qlEqUsqTnzRmuZPAh0EkPc/ rUwcg/7xeZUF19TRp0LId8u/ep9m34ppjiyuUoMXhgALJ/RxT6e/l7vFHYqwBtvQvOfD FggA9bfFZroTXvuzrbEZBrlti8s0yHY6WWlhZazjQbgCwTXXbydhXGDIzLTNju0F7jV5 c7qHoVOsYJW9DNnVAEbEHWU0zMEW+74GxYWd1vSZQ2e53rKWYh+mGlBKVPhMVZVoWvBD NGzik9rZYn/NxZu5FSJl4PBuceAAGL8Uv8J0xO//0Y/Gk6hzrJTOqMcqKpoh+DwpZYuC C6ng== X-Gm-Message-State: AOAM5325j91DsV9eIUBR9NM9/P985rj0dJW6aeNTP7ftmggfbDbv/s2Y Apf9FFg1g1tckkn/ZsVicUDR8Gwhv30= X-Google-Smtp-Source: ABdhPJwyM7SVl2VtXw5Xtd/vi3NldIuxBTSjEAJvaUJIY3NkK3PYgowP3nQEdLBOri1m4if+1qmj7g== X-Received: by 2002:a17:906:97c5:: with SMTP id ef5mr858747ejb.347.1611000654079; Mon, 18 Jan 2021 12:10:54 -0800 (PST) Received: from localhost.localdomain (ip5f5bee1b.dynamic.kabel-deutschland.de. [95.91.238.27]) by smtp.gmail.com with ESMTPSA id qh13sm3972543ejb.33.2021.01.18.12.10.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Jan 2021 12:10:53 -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 v6 3/6] scsi: ufs: Changes comment in the function ufshcd_wb_probe() Date: Mon, 18 Jan 2021 21:10:36 +0100 Message-Id: <20210118201039.2398-4-huobean@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210118201039.2398-1-huobean@gmail.com> References: <20210118201039.2398-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 3f2b495b36ee..a3758fd83ebd 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -7294,10 +7294,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 Mon Jan 18 20:10:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bean Huo X-Patchwork-Id: 12028123 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,URIBL_BLOCKED,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 7D2B0C433E0 for ; Mon, 18 Jan 2021 20:12:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4A27E22DA9 for ; Mon, 18 Jan 2021 20:12:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388075AbhARULu (ORCPT ); Mon, 18 Jan 2021 15:11:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43102 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2437862AbhARULh (ORCPT ); Mon, 18 Jan 2021 15:11:37 -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 CA342C0613CF; Mon, 18 Jan 2021 12:10:56 -0800 (PST) Received: by mail-ej1-x634.google.com with SMTP id w1so25355352ejf.11; Mon, 18 Jan 2021 12:10:56 -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=ltiNIANAr10krz1rWQiJ2pZ0/X2sLNeMpvDcCYoHUaY=; b=MVA9dTIDRvYh6XXUpamir6tr2JSXd4+CrkBOdiGdSvl6lYqjAOrQqfvfqLPiGz2yHI L3iEzw1Ag+ZWRoIKjbjd2/RVx6fzrGMmgiSRvM6dOyLrq7VWN7msSrOU+M8i00Wfezdt i4z3qX6Trs0cP8+wVeAmZ5hYW3MI4xMkzmBC/yHkF4TOYoPdITZaVPj+gMxk98OLQKaM l+v/t/kAbEMcAhEPjDpJQyd7ps/nqOpJES0QBpC31DcK3RtetyEBSakCYOnBaB3kDg13 UI8AfdPv7EoOjERGMuyrZd+4wMAogad1Pcws10m22wce1e/OGflqAmNchj6Uu9HFqV14 MrOQ== 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=ltiNIANAr10krz1rWQiJ2pZ0/X2sLNeMpvDcCYoHUaY=; b=iNh2SNWN96nD/VJZ5eOWTN039jf4hwlX3033J6sk4XjQZsNuvFqQ7srz3jBJzTv0xN Tw96LvK8OnvSYYeDnofGQeVVGdYYrP0tjtP/6Psk9p9se65e1osdfsWt0BMovcTBt2C1 vBTwAiJ0Y+zl7dcGXWPI6gi5eEFk6PTXQ6Q88CGi8DpSi/xo+4tgy+1Z+HRO6Pm3ZDQE vsdYj+uzgHG+lRBJ1CDrseTUhfpWvUExKJVdBaA2P14OSbsnF/45JNj+D+vGonQQSs0+ zY34icb1JF5tn7Ky8S5iTn8rTZTqaBW0eOywD3IKqA7xa8xuhHg3aH3UiqVsSBVeIl04 wr7A== X-Gm-Message-State: AOAM531RM6JXw92MtS6GfqLuZ+Yh866VYEn0E3wqbXJL4OHneUX025Ru XZNbnUpcUfAN5S43Ko64BqQ= X-Google-Smtp-Source: ABdhPJw0xKA+oHIWulQZfG90elveZMHUGbjfIACbR8mR7TqqBkatGmRKoRN3KQ7kDb0Dd7H1fzaaMw== X-Received: by 2002:a17:906:bfcc:: with SMTP id us12mr836618ejb.163.1611000655621; Mon, 18 Jan 2021 12:10:55 -0800 (PST) Received: from localhost.localdomain (ip5f5bee1b.dynamic.kabel-deutschland.de. [95.91.238.27]) by smtp.gmail.com with ESMTPSA id qh13sm3972543ejb.33.2021.01.18.12.10.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Jan 2021 12:10:55 -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 v6 4/6] scsi: ufs: Remove two WB related fields from struct ufs_dev_info Date: Mon, 18 Jan 2021 21:10:37 +0100 Message-Id: <20210118201039.2398-5-huobean@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210118201039.2398-1-huobean@gmail.com> References: <20210118201039.2398-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 a3758fd83ebd..827d9f360287 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -7269,6 +7269,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; @@ -7286,11 +7287,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; /* @@ -7305,10 +7305,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 Mon Jan 18 20:10:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bean Huo X-Patchwork-Id: 12028125 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,URIBL_BLOCKED,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 88F58C433DB for ; Mon, 18 Jan 2021 20:12:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 438F322DFB for ; Mon, 18 Jan 2021 20:12:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2437873AbhARULo (ORCPT ); Mon, 18 Jan 2021 15:11:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43108 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2437707AbhARULi (ORCPT ); Mon, 18 Jan 2021 15:11:38 -0500 Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com [IPv6:2a00:1450:4864:20::62f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5C640C0613D3; Mon, 18 Jan 2021 12:10:58 -0800 (PST) Received: by mail-ej1-x62f.google.com with SMTP id gx5so6150279ejb.7; Mon, 18 Jan 2021 12:10:58 -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=WzugAPGEbiXC+Fa9SN7NKKCupFDTlbKeBORLOs+4zW0=; b=SpfOpQoVMKMCOv+Ek7iUPJkQv2wHdrVTqxWyNpkMsWxeExPNDAORJ1jFkXEe/RFtg7 qUW6PBcrDfFM0EpzSuKHAA+qgn1oErHQmgVHL0wDvv8+YP953HnfvuELffOl51/Vfc2S Sb52Kj9cxxG+Unm9zHP0tWm+n4i95dA5RMOyIoytbU0kH4F3KUrCi1txPblBzU6WEpoT 2xMzsLl+e55s3awaxQ0KXLTd77om/9tN0aV+i2QitLSpi+XrLIgvKua3F+YqUX8J5jah aQaOT3nqOoOzruCBQjZ6WInBEqdxad4i00rlq3bkKaO98t2lpU5rDQtSgvGMu4vJYR5I 4kig== 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=WzugAPGEbiXC+Fa9SN7NKKCupFDTlbKeBORLOs+4zW0=; b=tfNdpIbD5OlsWj5nt1ZA3V4kn9xr40aijtpKW//mAqPjk29tMliLiTGo+aHKZ3yr0B 0v5wJENrKaYDNqo0kdjxTo9l2l3B5gcFbyv3IGLNrhs52LZZP5NVRqLgur9E76QdnZVG E1PMgsieGIgkoRo4qoWtkGZnDxzFJtByv003pfcTBqs1zCtUBBYTkNMrOIcLbviK+ffs 0cF8Imb3kyK8Y2bZv0nbZPWf/EWy5qup0Bhjgwk+LgIG5Dw7OEaKzUbt+0ruDwKmYkXK RgJnRrJ2kAPGu9xNzxAZnGYPga/36jMYUzhfsAodlvvMXLv3bRvB1bzM2kWc4vVKHeHQ 397Q== X-Gm-Message-State: AOAM531rfBgzKauWFV48s4ajuz2MIfgMEtdBDEcfaJn/MK07R/nIak6B HvRUXP0zBGLqY9MGIuWmq08= X-Google-Smtp-Source: ABdhPJw8rT7192hH29Huds97LWzQTvIFw0Rko29AIirN002K2iJ+YkebTn5fw7xVW5yIDvdIW+RCDA== X-Received: by 2002:a17:906:3b11:: with SMTP id g17mr815520ejf.473.1611000657088; Mon, 18 Jan 2021 12:10:57 -0800 (PST) Received: from localhost.localdomain (ip5f5bee1b.dynamic.kabel-deutschland.de. [95.91.238.27]) by smtp.gmail.com with ESMTPSA id qh13sm3972543ejb.33.2021.01.18.12.10.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Jan 2021 12:10:56 -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 v6 5/6] scsi: ufs: Group UFS WB related flags to struct ufs_dev_info Date: Mon, 18 Jan 2021 21:10:38 +0100 Message-Id: <20210118201039.2398-6-huobean@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210118201039.2398-1-huobean@gmail.com> References: <20210118201039.2398-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 827d9f360287..9f857af3766a 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); } @@ -7298,13 +7298,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 Mon Jan 18 20:10:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bean Huo X-Patchwork-Id: 12028127 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,URIBL_BLOCKED,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 6D0D8C433DB for ; Mon, 18 Jan 2021 20:13:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 42FAE230FF for ; Mon, 18 Jan 2021 20:13:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2437751AbhARUMw (ORCPT ); Mon, 18 Jan 2021 15:12:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43118 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2437838AbhARULk (ORCPT ); Mon, 18 Jan 2021 15:11:40 -0500 Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com [IPv6:2a00:1450:4864:20::62f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AFE79C0613D6; Mon, 18 Jan 2021 12:10:59 -0800 (PST) Received: by mail-ej1-x62f.google.com with SMTP id rv9so6598917ejb.13; Mon, 18 Jan 2021 12:10:59 -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=fRVeJFHSbx0u4PcEewve+lvBzm+Q5dzCsl6CUEyzawk=; b=n7+6hKeJB/Fz3XHtf81zow6s4OMrwMLi9QFbuO1utYopq5HGH0Rlhi1y6SIBTKMQiP +enK3OXDKTbs6oXmI9VaV0G8KIWfIQxoTNKWkyKSyourTyYWQIulJrhuznl/vym/cjN3 57GxUJv9HBBbQ7gkQI+IDd+DNdAOlsHg3I4i0pxhOYJwYv/cvQ3oGaclj5JD7sT61uf4 ARHK/nFpLFo3Kt3v0vOjlXI8om+HN6mzGC/9WhXMJ16QxHUPV0cMS73mAhZmVQ5PACFG Mt5AF+/SytLG2fT18/Q4P3IZr6mGoPcAxI6s5d2ooNxbglb9beyiqrphKJsf15+o9e81 QiTA== 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=fRVeJFHSbx0u4PcEewve+lvBzm+Q5dzCsl6CUEyzawk=; b=RR8z6BlpIjPJQbidpE7mw49dueSmk8uL86poLR90Futkz6qw0w+/UkeZqvkKSrjaCN NXbL6SeU8FQ4svxFejBWyubeKXTymQ2sL3bWSJ47jW82XJomjKkhRuQNlybkOjUq9ej/ iSFTek+8NQ2yH7d/ByjJHK6/TqktwiLyBFFRSYkjO7jXEQaOSFGcEVF384vZl6y05ZMp Tuy1CFK8dEP45u3XeGkGObG05s9c7UXP8upILWv71lmAmTs/V7ywmvtJL+O1qjOPLsF5 U38FMsaVpFuKz7bsX0NU/AqxazTnRkTWZKxj5cWSWBZ7mJa72ruo9lv2FVCst4pNEOj/ dFkw== X-Gm-Message-State: AOAM531dKhySgsYg3LvUkqhKoX45PuPkr1JEmqMJEAUiyX0u3hey0FVT gU6fr07YM4089BEQLPlwvcw= X-Google-Smtp-Source: ABdhPJwk8R8GnHh0gWYN7oDsd3SWhLTBfFUCuF2rToevpkMPR2/5z6Ctv6aOJuFgrVmTC7drsfJJSQ== X-Received: by 2002:a17:907:7356:: with SMTP id dq22mr882714ejc.318.1611000658457; Mon, 18 Jan 2021 12:10:58 -0800 (PST) Received: from localhost.localdomain (ip5f5bee1b.dynamic.kabel-deutschland.de. [95.91.238.27]) by smtp.gmail.com with ESMTPSA id qh13sm3972543ejb.33.2021.01.18.12.10.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Jan 2021 12:10:58 -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 v6 6/6] scsi: ufs: Cleanup WB buffer flush toggle implementation Date: Mon, 18 Jan 2021 21:10:39 +0100 Message-Id: <20210118201039.2398-7-huobean@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210118201039.2398-1-huobean@gmail.com> References: <20210118201039.2398-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 9f857af3766a..10bee49ccbc8 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; }