From patchwork Fri Dec 11 14:00:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bean Huo X-Patchwork-Id: 11968265 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.7 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 A14CBC2BBCD for ; Fri, 11 Dec 2020 14:02:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7020924051 for ; Fri, 11 Dec 2020 14:02:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403922AbgLKOBp (ORCPT ); Fri, 11 Dec 2020 09:01:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40270 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2395136AbgLKOB3 (ORCPT ); Fri, 11 Dec 2020 09:01:29 -0500 Received: from mail-ej1-x641.google.com (mail-ej1-x641.google.com [IPv6:2a00:1450:4864:20::641]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 05CCAC061793; Fri, 11 Dec 2020 06:00:49 -0800 (PST) Received: by mail-ej1-x641.google.com with SMTP id b9so12509294ejy.0; Fri, 11 Dec 2020 06:00:48 -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=qe3W3UutNCxQuteo+hM3T7GHNA4SdG3zmVmMpwoThUk=; b=tcDrsORQxIF92mp8OsAgdY3EDdT17lbepFHKyTR8Wixh8UJrzEejFLkWVeWDltWGUJ yIPLKubXvElgWGHG/gUBQ65VBt+R4KL4IdShhtOsJ3KxR4ulIoJGileKy6P1X3c7BCS3 oeIj6m06s9PpcbzDmbJt0sm5fo86QfPgN9tGntnIwfa/vKUhnBgN8lNGBfz7M9MwMuIq 7ubO8P73Ok+fOzMPWC6pNTQx4R34FP9aUb+8yJa8odAHVJf/RLswdKXYWDxyKwAe7vXD DE4DarzDnjCeH69jUmYeODWkFXs1ZRavlByWg0ORGtKNs+U89S78HGzIR+Q9Dh5JIjm0 wfhA== 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=qe3W3UutNCxQuteo+hM3T7GHNA4SdG3zmVmMpwoThUk=; b=FXnRggKi+0ljc1xLIYjLGn4NsRec2ONCEQhQwkEhekALyRu0DFls/V3i8JIIHYUnMv GJ9V7JDbFl99M5BtrWXOKtRvs2U201pDiXxjaN9GeIIQnZ33WbxgXzsoRuQxho4TeOzz 8KJLN7kYIHPJgIu5eKzDKifrHNs9DZsy/T7Z4Lb0Pv6EtAlT35XjrzMxQHz2UgFkJqle rAv2DedZkCN3RAuQWP9GGjEDdnjzF+OZS3AWGZu/N7DIn1P8tNK/Bzlw04bln+AWWRpD MAInF84byGZwE4i5q/iUVn/0YH7Fincyp+T17BlsXZL+/yIUhew+0KsO7/fgHzIC4UJn G0bg== X-Gm-Message-State: AOAM532Dej4QZDnLfyvrCrJUZgARL/TvxemAmrDdoZzVSweR3Ns5YcxS 10bdPflEsqHzYYwQEYuI0Mk= X-Google-Smtp-Source: ABdhPJxhepqfpDA43gU+g7EjJtXaRdG8G0X06MdSY89FRKqr+1R4d1ezjDTkjiNpeLeIoTewfsd2tg== X-Received: by 2002:a17:906:4994:: with SMTP id p20mr10953922eju.391.1607695247710; Fri, 11 Dec 2020 06:00:47 -0800 (PST) Received: from localhost.localdomain (ip5f5bfce9.dynamic.kabel-deutschland.de. [95.91.252.233]) by smtp.gmail.com with ESMTPSA id z24sm7797818edr.9.2020.12.11.06.00.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Dec 2020 06:00:46 -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 v4 1/6] scsi: ufs: Add "wb_on" sysfs node to control WB on/off Date: Fri, 11 Dec 2020 15:00:30 +0100 Message-Id: <20201211140035.20016-2-huobean@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201211140035.20016-1-huobean@gmail.com> References: <20201211140035.20016-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 | 41 ++++++++++++++++++++++++++++++++++++ drivers/scsi/ufs/ufshcd.c | 3 +-- drivers/scsi/ufs/ufshcd.h | 2 ++ 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/ufs/ufs-sysfs.c b/drivers/scsi/ufs/ufs-sysfs.c index 08e72b7eef6a..2b4e9fe935cc 100644 --- a/drivers/scsi/ufs/ufs-sysfs.c +++ b/drivers/scsi/ufs/ufs-sysfs.c @@ -189,6 +189,45 @@ static ssize_t auto_hibern8_store(struct device *dev, return 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 scnprintf(buf, PAGE_SIZE, "%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_clkscaling_supported(hba)) { + /* + * If the platform supports UFSHCD_CAP_AUTO_BKOPS_SUSPEND, + * 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 (!ufshcd_is_wb_allowed(hba)) + return -EOPNOTSUPP; + + if (kstrtouint(buf, 0, &wb_enable)) + return -EINVAL; + + if (wb_enable != 0 && wb_enable != 1) + return -EINVAL; + + pm_runtime_get_sync(hba->dev); + res = ufshcd_wb_ctrl(hba, wb_enable); + pm_runtime_put_sync(hba->dev); + + 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); @@ -196,6 +235,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, @@ -205,6 +245,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 e221add25a7e..5e1dcf4de67e 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -246,7 +246,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); @@ -5351,7 +5350,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 9bb5f0ed4124..2a97006a2c93 100644 --- a/drivers/scsi/ufs/ufshcd.h +++ b/drivers/scsi/ufs/ufshcd.h @@ -1068,6 +1068,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 Fri Dec 11 14:00:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bean Huo X-Patchwork-Id: 11968261 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.7 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 6025CC2BB40 for ; Fri, 11 Dec 2020 14:02:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2F20F24125 for ; Fri, 11 Dec 2020 14:02:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2404256AbgLKOBq (ORCPT ); Fri, 11 Dec 2020 09:01:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40278 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2395137AbgLKOBb (ORCPT ); Fri, 11 Dec 2020 09:01:31 -0500 Received: from mail-ej1-x642.google.com (mail-ej1-x642.google.com [IPv6:2a00:1450:4864:20::642]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4C9DEC061794; Fri, 11 Dec 2020 06:00:51 -0800 (PST) Received: by mail-ej1-x642.google.com with SMTP id f23so12490474ejk.2; Fri, 11 Dec 2020 06:00:51 -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=U7gSLsQcFEBe8WcOSAmmf0rsSetrSeSprNaqCiGaY3w=; b=hYDKma4sZCFK/PgOg67zxGCLCFDGTqcuiJC1713g1ea1usbJqpgDKN2ZOEHzzaz0An 0YCqPsCSv8nOAsN4snCRT4BmYFLzcRYUaboxKbPMKI1j2lsThT0QXI+mmabOg3KhmniV GuXdnaHgTuOpwVDBObbOkIpNYb/ufH7EQDM7Xx82kCI/uIldBM5WFHCJdEzQLV5fB7vG XefBeMzfA0Tdx1kpG0nDbhiOHacME9x43UQ4IogUnFiEYo8BMN/GR7+eeL8d+8e+JLzj wBFZlAfcRrZWc939ggdWoPGpPNnahINtoM4fbWwkW/uyYmr5FDM46kyyDBPuK0eUdnf9 SuCA== 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=U7gSLsQcFEBe8WcOSAmmf0rsSetrSeSprNaqCiGaY3w=; b=drH8teTVjyYhFt/ypSzHwhwr2/W3mxVy8Z+s9Y5wjYNwXRcC/JoUtpL/1PUoY/P08Q KlMUCa0JCh6cF1P3J1Fp9bV64eeaVICU62J/XSN+4akWnjhr8ITtPa10MUX7/VJVq7MS C8oIfIjOkxWyWFEeKNeIGgfM4oEgWzS+J14FjMWVcLL7RIde8xSoxuo7QCNnDSe6gERn E6rO5ndf1Qnhz/vFx3CZTpUgxJSBjgxLCkvBmO38gyV5smeXQAYIsSdD+g6YG2ylOQqO dFqIo9hZKl/q3CigPnlPgYaJb5rVI2gp6W+WtK7D7g6ljJf6rscSpWQeor/abz2HNC2q +CBw== X-Gm-Message-State: AOAM533oh2kw8xffl8UFFx7Zmac1I4zwlHQniHCRUxnO4OGAfvtuCuht /o0a2nwqrl0xdMKSNZuqLeTvlbfJi5M= X-Google-Smtp-Source: ABdhPJyDVeP7TC28a3yTy5BTNtsqKJKHOCt3QGhp4+7Gw59ZSjLGsY2fMT8PSpkl+gVLwEX9PIk/3w== X-Received: by 2002:a17:906:c007:: with SMTP id e7mr10794415ejz.511.1607695250023; Fri, 11 Dec 2020 06:00:50 -0800 (PST) Received: from localhost.localdomain (ip5f5bfce9.dynamic.kabel-deutschland.de. [95.91.252.233]) by smtp.gmail.com with ESMTPSA id z24sm7797818edr.9.2020.12.11.06.00.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Dec 2020 06:00:49 -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 v4 2/6] scsi: ufs: Changes comment in the function ufshcd_wb_probe() Date: Fri, 11 Dec 2020 15:00:31 +0100 Message-Id: <20201211140035.20016-3-huobean@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201211140035.20016-1-huobean@gmail.com> References: <20201211140035.20016-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 5e1dcf4de67e..6a5532b752aa 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -7232,10 +7232,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 Fri Dec 11 14:00:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bean Huo X-Patchwork-Id: 11968259 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.7 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 366CBC2BB9A for ; Fri, 11 Dec 2020 14:02:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 010D723ED2 for ; Fri, 11 Dec 2020 14:02:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2405077AbgLKOBq (ORCPT ); Fri, 11 Dec 2020 09:01:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40314 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2395187AbgLKOBo (ORCPT ); Fri, 11 Dec 2020 09:01:44 -0500 Received: from mail-ej1-x641.google.com (mail-ej1-x641.google.com [IPv6:2a00:1450:4864:20::641]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CC6D2C06179C; Fri, 11 Dec 2020 06:00:52 -0800 (PST) Received: by mail-ej1-x641.google.com with SMTP id bo9so12438136ejb.13; Fri, 11 Dec 2020 06:00: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=r7avsLazbZX9dvU8Tg2nAQdER6pLqpE9+qG8bfjeftM=; b=dwmFFwZc99d/3nDJ/2pSBeVKX3qWS7FwI83wvV5vjwZfnhbuL9NQPZn8FYcnGs9q0P JPNyUO4CYhsg9PhmABjEj81priABl307EDrYEUt1HryOBWuCB1i6Y7OybmlpNhPXiPfo HRlBIBz1tjjFSr/7GAec/KjS8h+BCoMlkuHlf1+LFJowicy6WY2W8nHuTsZ5ecUm9t1j FCacKkF5+H5LYsxACrn0+x6dusOwuPlHAr4hTUofIcJaDHOQqVhtrbmOBOmOVCBYYoFc gSgm7UMTFYU6JUEmsdwx6uS5rSSL3DehuI4yl1XpS9ZmV5IoDAQAkPemUffv7eTeVhbw BhdA== 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=r7avsLazbZX9dvU8Tg2nAQdER6pLqpE9+qG8bfjeftM=; b=DzFHfAuyeGsXqtPmgdkLvMq9rUrAR+99rcV6Nn/ZjMVT/URw3jP2azMni6vPtY82AH 7icYlWgW7bPU3LsUisdKM44mkOFMMNNtZCg7Yj1qmhEz63cQHZWE64AVBs8gkgAlkxqe djWwe+3FDStnFWFDalbf9NV6sY4qaFlq8E0PUeqsXOW9X3OiNvW1I8fjNfPfmcTjL7nk T8nLbJlfxgRu91sFPNEjnQI6djFGAyZlpiLc3WW8sOJJeB5iTfH12+MoxQS151vbcWvz N1VPvZl6OQGJB0CwfzjpyiPYOZ6F4DdfUYHgJZpkeqFa9ErkOtg3mXhmpl2abu1hG1GZ yCcw== X-Gm-Message-State: AOAM531IeoRtxBqhNc1lZ9WQC4c3sSX8Jrdl7jJLnAkaw19sV46FAGLw wH90AzZN186s4a4sE5CSoKg= X-Google-Smtp-Source: ABdhPJwNuczM71eE2ghLGJvtL/gDQz7vkH5A+d+U47OsL6T1pHpoA+DlwF01CJfdCsBX8RMLuAYSuw== X-Received: by 2002:a17:906:3881:: with SMTP id q1mr11245093ejd.490.1607695251484; Fri, 11 Dec 2020 06:00:51 -0800 (PST) Received: from localhost.localdomain (ip5f5bfce9.dynamic.kabel-deutschland.de. [95.91.252.233]) by smtp.gmail.com with ESMTPSA id z24sm7797818edr.9.2020.12.11.06.00.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Dec 2020 06:00:51 -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 v4 3/6] scsi: ufs: Group UFS WB related flags to struct ufs_dev_info Date: Fri, 11 Dec 2020 15:00:32 +0100 Message-Id: <20201211140035.20016-4-huobean@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201211140035.20016-1-huobean@gmail.com> References: <20201211140035.20016-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 Signed-off-by: Bean Huo --- drivers/scsi/ufs/ufs-sysfs.c | 2 +- drivers/scsi/ufs/ufs.h | 33 +++++++++++++++++++-------------- drivers/scsi/ufs/ufshcd.c | 16 ++++++++-------- drivers/scsi/ufs/ufshcd.h | 2 -- 4 files changed, 28 insertions(+), 25 deletions(-) diff --git a/drivers/scsi/ufs/ufs-sysfs.c b/drivers/scsi/ufs/ufs-sysfs.c index 2b4e9fe935cc..4bd7e18bb486 100644 --- a/drivers/scsi/ufs/ufs-sysfs.c +++ b/drivers/scsi/ufs/ufs-sysfs.c @@ -194,7 +194,7 @@ static ssize_t wb_on_show(struct device *dev, struct device_attribute *attr, { struct ufs_hba *hba = dev_get_drvdata(dev); - return scnprintf(buf, PAGE_SIZE, "%d\n", hba->wb_enabled); + return scnprintf(buf, PAGE_SIZE, "%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 14dfda735adf..45bebca29fdd 100644 --- a/drivers/scsi/ufs/ufs.h +++ b/drivers/scsi/ufs/ufs.h @@ -527,22 +527,27 @@ 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; - /*UFS device Product Name */ - 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; + u8 max_lu_supported; + u16 wmanufacturerid; + /* UFS device Product Name */ + u8 *model; + u16 wspecversion; + u32 clk_gating_wait_us; + u32 d_ext_ufs_feature_sup; + + /* UFS WB related flags */ + bool wb_enabled; + bool wb_buf_flush_enabled; + u8 wb_dedicated_lu; + 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 6a5532b752aa..528c257df48c 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -589,8 +589,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) @@ -5359,7 +5359,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; @@ -5375,7 +5375,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); @@ -5415,7 +5415,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); @@ -5426,7 +5426,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; @@ -5437,7 +5437,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); @@ -5448,7 +5448,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); } diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h index 2a97006a2c93..45c3eca88f0e 100644 --- a/drivers/scsi/ufs/ufshcd.h +++ b/drivers/scsi/ufs/ufshcd.h @@ -805,8 +805,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 From patchwork Fri Dec 11 14:00:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bean Huo X-Patchwork-Id: 11968263 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.7 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 7F152C2BBCA for ; Fri, 11 Dec 2020 14:02:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 51D5323ED2 for ; Fri, 11 Dec 2020 14:02:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2404672AbgLKOBq (ORCPT ); Fri, 11 Dec 2020 09:01:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40316 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2395190AbgLKOBo (ORCPT ); Fri, 11 Dec 2020 09:01:44 -0500 Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DB210C0617A6; Fri, 11 Dec 2020 06:00:53 -0800 (PST) Received: by mail-ed1-x542.google.com with SMTP id k4so9463748edl.0; Fri, 11 Dec 2020 06:00: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=Ij2jWlbd33lTLBTZXg3PtNV3E0laB8helhKjcL0SZ3o=; b=bAegCaHUyMEMbburi06cxlaYRl+cCbKZXTdSpYVVHcHT/OxBDo6R/sFTMRcAdoVlhL 6HPD85In1uAFXHEY4Zl0djrMj1tSXp0KH7/EToVkJPXhxw+NsS8Hr424Qky6bxo9gYQd +cwckb2vOtr3H5Cg7sdrZVIbPMQcyg/ku1NrNLFSVbZZcf9cdrSo1r2gXoLTN+8DJB8n PCV2pdfBp4CFRk4e9TLKGhODmb3IzXnvmcFp+6NeeVqbssc4v8XEn4yj5EjJBtqfjSDN NPMlyT5Jo3XAkce6VvT/iv4+l75N2MA6fkoAyuRKnhV98jVX/T8N/B/TsL1WxB7GNZMo dsgQ== 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=Ij2jWlbd33lTLBTZXg3PtNV3E0laB8helhKjcL0SZ3o=; b=rLBkHrZ2ZFs+2g/kBCpYq6g0XFtBYUi5UeGoELjiVgA6Z3iwX04okWvFRJN906Cb4y +RWPZmsPKr0aNc/C/MZ5DV/gZ67rLzuhhpjbVWhmWMUbEALPPZo4KEBGXNueR1r7gHjz ZZb1X+wuq2HDrVTBAAGy9u5JKZBHuEPPR2nZ6cMhP3Xa1mPbrJdMQKe/ARq1/rkm7xO2 F3pki5Jn4XWERm6SI7ONbtVZrsNR9su7cX1AXiQueHzsiIeVbL56vbfhp9YswAxaF5D2 nu4VQyz2mqfVmnZ69s2j3NBzIg/MSn96GwDTfublr9WRB8ngzSkWq3n27y4udXLR/b6x fXNA== X-Gm-Message-State: AOAM531SeVmW0RZUkacOGSqPr9iZLU2RqWyXa6I0IfBiwqOLYAs5/5oQ AE9ZuJnNmeov3EBbD2KRR+U= X-Google-Smtp-Source: ABdhPJxfaCzxyjLMHwXKmrK8kG1Rg+8c4pw1EQAV083eMMyDo4K3yi3oWctIdT615ZyG27vZ6lF0Uw== X-Received: by 2002:a50:a684:: with SMTP id e4mr11777089edc.148.1607695252668; Fri, 11 Dec 2020 06:00:52 -0800 (PST) Received: from localhost.localdomain (ip5f5bfce9.dynamic.kabel-deutschland.de. [95.91.252.233]) by smtp.gmail.com with ESMTPSA id z24sm7797818edr.9.2020.12.11.06.00.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Dec 2020 06:00: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 v4 4/6] scsi: ufs: Remove d_wb_alloc_units from struct ufs_dev_info Date: Fri, 11 Dec 2020 15:00:33 +0100 Message-Id: <20201211140035.20016-5-huobean@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201211140035.20016-1-huobean@gmail.com> References: <20201211140035.20016-1-huobean@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org From: Bean Huo d_wb_alloc_units only be used while WB probe, just used to confirm the condition that "if bWriteBoosterBufferType is set to 01h but dNumSharedWriteBoosterBufferAllocUnits is set to zero, the WriteBooster feature is disabled". So, don't need to keep it in runtime. Signed-off-by: Bean Huo --- drivers/scsi/ufs/ufs.h | 1 - drivers/scsi/ufs/ufshcd.c | 6 ++---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h index 45bebca29fdd..8ed342e43883 100644 --- a/drivers/scsi/ufs/ufs.h +++ b/drivers/scsi/ufs/ufs.h @@ -544,7 +544,6 @@ struct ufs_dev_info { bool wb_buf_flush_enabled; u8 wb_dedicated_lu; 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 528c257df48c..0998e6103cd7 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -7243,10 +7243,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 Fri Dec 11 14:00:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bean Huo X-Patchwork-Id: 11968269 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.7 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 A3A5BC433FE for ; Fri, 11 Dec 2020 14:03:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6D87323ED2 for ; Fri, 11 Dec 2020 14:03:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2405800AbgLKOCU (ORCPT ); Fri, 11 Dec 2020 09:02:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40374 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2395187AbgLKOCG (ORCPT ); Fri, 11 Dec 2020 09:02:06 -0500 Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3A8DBC0617A7; Fri, 11 Dec 2020 06:00:55 -0800 (PST) Received: by mail-ed1-x541.google.com with SMTP id i24so9414517edj.8; Fri, 11 Dec 2020 06:00: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; bh=gr2XJl42rv3oVZgNGsbktH407LTsgPIoPeTR72KZolo=; b=NHcmN/iXMsw6ZzTILGUUMUhiwjq8IFvbwnhr32AfUJUfERHb9Y2xP8ghOPITGb+Bor vjxEqGX6Xp05MY1TWiPyG9paCYtedoqplaPdYMKcu4N2/3tNWivr0egC68bdmrB3FSyr hA0ZAoa3Y/9apYZlJu1D1QePXSe+yYimZezjybYiyUPLXo9VSFQvmDehFu8m/YtQbFhL KrRIQsJKkXMuMEOaFSUpR59kHVFEa1BhTi2uGh2CDVdmYKin6TmiZd1VVyH4oxSguRiq KNFEHNXl0SD2MIeq7uHpNu7H7eGFreLgTHy7EZTCc03NQlNaBiMQB+04Zg2XOuOLVwsj mlDw== 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=gr2XJl42rv3oVZgNGsbktH407LTsgPIoPeTR72KZolo=; b=bbS5jqSf3CrVjUvH9mnKVFuohGEgrDngJPmHb8elXUofOzIwQFTK58+GI45GOqDfOX R4VFxtb+uR3rPAnshxRbkJOT4Fk+hYLPJyyR9U5baaiuXddqJ/fkJNIxPd9sYV39rpN0 N2ETayA1vu3R5QMovqGBvigY93pB80mq46oUY7+qMXpnzSw4mfzracG7B19sLBRUKZMQ v/BCQYJiJAxaecg7nKGjbcK0Rdk8WGYT3sZZFNSiM+aSkBeu2GYYVQaS3+hZCSq41J8e +nf2gGmCx9PrujznnQ569UYbWafNRElR1jNKCc0RyJ6/LS64826HPkY3rtBIWSd6G3NB biiw== X-Gm-Message-State: AOAM5306ktZNoKqCnoCbraVRq2+TvfsJ9wYqtF4Ixx9+0og5Rer2p/3k pc4w+o3JpX8zh5IojCH48Lo= X-Google-Smtp-Source: ABdhPJzGweQ185WwTWnQ72Qyip+ZPnmaRKQQYrLSNqrWQz4v2Rvf7vlEpc9Jqx6ADWmes4VbweRJWQ== X-Received: by 2002:aa7:d919:: with SMTP id a25mr11609987edr.81.1607695253857; Fri, 11 Dec 2020 06:00:53 -0800 (PST) Received: from localhost.localdomain (ip5f5bfce9.dynamic.kabel-deutschland.de. [95.91.252.233]) by smtp.gmail.com with ESMTPSA id z24sm7797818edr.9.2020.12.11.06.00.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Dec 2020 06:00: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 v4 5/6] scsi: ufs: Cleanup WB buffer flush toggle implementation Date: Fri, 11 Dec 2020 15:00:34 +0100 Message-Id: <20201211140035.20016-6-huobean@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201211140035.20016-1-huobean@gmail.com> References: <20201211140035.20016-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 --- drivers/scsi/ufs/ufshcd.c | 69 ++++++++++++++------------------------- 1 file changed, 24 insertions(+), 45 deletions(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 0998e6103cd7..fb3c98724005 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -244,10 +244,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); @@ -5398,60 +5396,41 @@ 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; } + if (enable) + hba->dev_info.wb_buf_flush_enabled = true; + else + hba->dev_info.wb_buf_flush_enabled = false; + + dev_dbg(hba->dev, "WB-Buf Flush %s\n", enable ? "enabled" : "disabled"); +out: return ret; } From patchwork Fri Dec 11 14:00:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bean Huo X-Patchwork-Id: 11968271 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.7 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 9F54DC2BB48 for ; Fri, 11 Dec 2020 14:04:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6E6CF23EF1 for ; Fri, 11 Dec 2020 14:04:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2392173AbgLKOC1 (ORCPT ); Fri, 11 Dec 2020 09:02:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40376 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2395215AbgLKOCG (ORCPT ); Fri, 11 Dec 2020 09:02:06 -0500 Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 520A0C0617B0; Fri, 11 Dec 2020 06:00:56 -0800 (PST) Received: by mail-ed1-x541.google.com with SMTP id c7so9446334edv.6; Fri, 11 Dec 2020 06:00: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=i9HXAbQDJP2xZsPDaVmYBTFFTsu0tRu3+PJZZnVwRUI=; b=s75O6HTKVd/HlHvMsQ5nnV3G9xq3bsMMG/rMZ/3Ap+fD/yN9TzHO0Jc1iVvzuic6CT zUHsjEx81va4ckd7kzVVhiwNEIbWUwfu79bFrxYFWDYE9EYcrYuXLxS7/GJa9diVbYtZ 8M6L/o2zLBlmUqcdQlF8zU9Ob132RvtazvBpH+dNDMZXjQ10Yo4NivfBrvKEd+2+iXIx YYEaDji4JZoUvcWZHdDp/HXy1bqlo4k3YxS6zJqqxyLyzoBONeR338CL+Olz6s8LrDQ3 FjRzdqmlI+0Q3Wyba8Gk+vNeVFFoM3AHPu93RWoD8+undRKLcf/6/Q2XO5vplwukhYGb 8ZLQ== 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=i9HXAbQDJP2xZsPDaVmYBTFFTsu0tRu3+PJZZnVwRUI=; b=fdGfPnS4Elc1KUtaRrDcnUYGdZ4tEd1N6a4+Down3aW7uymsg2Yp0PIZYpjQzIZcK4 FSfBZqHncdTid4BxSRkjIdpe83A/X7qPv416O1YCzxznRqiH1Cd6Rv3tX4AqYvLiGKsz On88RY2tBKEueRjKi6+N5Vx0W82jWZK73KGGHLA4VtDEY0pd7+/dTRT9Xl0cir5D5HU/ eWZuoUUOErlFOpBTGx07YQR9H7DqL6ZYzC6D6hEUB5SVPGwxxDJJkHEIcr4ZsbmIIwFj JDOix1PzTTX/dRRbzLdqmsuA09bC5A+Yss+TSVLnrhOtnBtx0toSJE0Z1/9cvXH67RRk C3gQ== X-Gm-Message-State: AOAM531Q52VP326Xpl5PI99q0vlaKJ5XhDJ3hGXOd5j2gHpDXSGXu97C pL0m1yntj5ZftnFkuuN4szI= X-Google-Smtp-Source: ABdhPJwYaOglyhNjDKnWXynRZBV9HoR8SHf6xxTIuja2ihVl1EZGZrbg3bM2Rg288F8yY/9wFFoFzg== X-Received: by 2002:aa7:df0f:: with SMTP id c15mr12124049edy.354.1607695254978; Fri, 11 Dec 2020 06:00:54 -0800 (PST) Received: from localhost.localdomain (ip5f5bfce9.dynamic.kabel-deutschland.de. [95.91.252.233]) by smtp.gmail.com with ESMTPSA id z24sm7797818edr.9.2020.12.11.06.00.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Dec 2020 06:00:54 -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 v4 6/6] scsi: ufs: Keep device active mode only fWriteBoosterBufferFlushDuringHibernate == 1 Date: Fri, 11 Dec 2020 15:00:35 +0100 Message-Id: <20201211140035.20016-7-huobean@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201211140035.20016-1-huobean@gmail.com> References: <20201211140035.20016-1-huobean@gmail.com> Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org From: Bean Huo According to the JEDEC UFS 3.1 Spec, If fWriteBoosterBufferFlushDuringHibernate is set to one, the device flushes the WriteBooster Buffer data automatically whenever the link enters the hibernate (HIBERN8) state. While the flushing operation is in progress, the device should be kept in Active power mode. Currently, we set this flag during the UFSHCD probe stage, but we didn't deal with its programming failure. Even this failure is less likely to occur, but still it is possible. This patch is to add checkup of fWriteBoosterBufferFlushDuringHibernate setting, keep the device as "active power mode" only when this flag be successfully set to 1. Fixes: 51dd905bd2f6 ("scsi: ufs: Fix WriteBooster flush during runtime suspend") Signed-off-by: Bean Huo --- drivers/scsi/ufs/ufs.h | 1 + drivers/scsi/ufs/ufshcd.c | 21 ++++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h index 8ed342e43883..1b3866f608d9 100644 --- a/drivers/scsi/ufs/ufs.h +++ b/drivers/scsi/ufs/ufs.h @@ -542,6 +542,7 @@ struct ufs_dev_info { /* UFS WB related flags */ bool wb_enabled; bool wb_buf_flush_enabled; + bool wb_buf_flush_in_hibern8; u8 wb_dedicated_lu; u8 b_wb_buffer_type; diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index fb3c98724005..7ff486f047d8 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -282,10 +282,16 @@ static inline void ufshcd_wb_config(struct ufs_hba *hba) dev_err(hba->dev, "%s: Enable WB failed: %d\n", __func__, ret); else dev_info(hba->dev, "%s: Write Booster Configured\n", __func__); + ret = ufshcd_wb_toggle_flush_during_h8(hba, true); - if (ret) + if (ret) { dev_err(hba->dev, "%s: En WB flush during H8: failed: %d\n", __func__, ret); + hba->dev_info.wb_buf_flush_in_hibern8 = false; + } else { + hba->dev_info.wb_buf_flush_in_hibern8 = true; + } + ufshcd_wb_toggle_flush(hba, true); } @@ -589,6 +595,7 @@ static void ufshcd_device_reset(struct ufs_hba *hba) if (ufshcd_is_wb_allowed(hba)) { hba->dev_info.wb_enabled = false; hba->dev_info.wb_buf_flush_enabled = false; + hba->dev_info.wb_buf_flush_in_hibern8 = false; } } if (err != -EOPNOTSUPP) @@ -5471,6 +5478,7 @@ static bool ufshcd_wb_need_flush(struct ufs_hba *hba) if (!ufshcd_is_wb_allowed(hba)) return false; + /* * The ufs device needs the vcc to be ON to flush. * With user-space reduction enabled, it's enough to enable flush @@ -8571,6 +8579,7 @@ static int ufshcd_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op) enum ufs_pm_level pm_lvl; enum ufs_dev_pwr_mode req_dev_pwr_mode; enum uic_link_state req_link_state; + bool hibern8; hba->pm_op_in_progress = 1; if (!ufshcd_is_shutdown_pm(pm_op)) { @@ -8630,11 +8639,13 @@ static int ufshcd_suspend(struct ufs_hba *hba, enum ufs_pm_op pm_op) * Hibern8, keep device power mode as "active power mode" * and VCC supply. */ + hibern8 = req_link_state == UIC_LINK_HIBERN8_STATE || + (req_link_state == UIC_LINK_ACTIVE_STATE && + ufshcd_is_auto_hibern8_enabled(hba)); + hba->dev_info.b_rpm_dev_flush_capable = - hba->auto_bkops_enabled || - (((req_link_state == UIC_LINK_HIBERN8_STATE) || - ((req_link_state == UIC_LINK_ACTIVE_STATE) && - ufshcd_is_auto_hibern8_enabled(hba))) && + hba->auto_bkops_enabled || (hibern8 && + hba->dev_info.wb_buf_flush_in_hibern8 && ufshcd_wb_need_flush(hba)); }