From nobody Sun May 10 10:32:46 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A5C82C433F5 for ; Thu, 5 May 2022 13:47:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1380023AbiEENvE (ORCPT ); Thu, 5 May 2022 09:51:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35110 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354819AbiEENvA (ORCPT ); Thu, 5 May 2022 09:51:00 -0400 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 4E9AA56C10; Thu, 5 May 2022 06:47:20 -0700 (PDT) Received: by mail-ej1-x62e.google.com with SMTP id g6so8866664ejw.1; Thu, 05 May 2022 06:47:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Le/mxbajMOWJ4rwuXZr5GF198bKTwEkjLMNW9f3gck8=; b=F7uHN4LQCRsa+LPIop1ceEubI1QGKhJPXINABZQ3JDtMaSgHHzSZpLE+KtygnHJGIp T2UpfWc7eJMSQL78BQqYzoVwIAmuUn6vnECAqV9hNPKWvw0QSam64B8TE3fPhMrfiZsc hGWYlwd7WTONnN/hVCecGYdllTU+oWrvUpRjGJa9yeMcTEeOX5zQG5c0D3PXWQ1FhY6A 4524fti/Qzhsfm+GzQ8L35cigMxauevG9YQ7CJOw1LogQLSUFwXC8geK4DggnM244cS2 YO6kQTlKFIZqVX+qpj8kS9V7NaSWhO1y62rKEcoxBFuqCCRDzchC9SnZfcWRtKzqmgqj DnWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Le/mxbajMOWJ4rwuXZr5GF198bKTwEkjLMNW9f3gck8=; b=KOduExPh/V0OKzHtZVnHXa+ocJ+5slIwkeoeSe4n0smOSWfDn+UE6ebIqJRQTgOohn 7AYbj9GQW0GwByiXQPqgpC/saYHVCaZGZYicr244TkyzjQW835utZ67PbWf/bTb1Gn1v nPPCN6mY/tji1JthCC7VrfK04XhucUcy74wb20bc0tHtsjjA+3yIq7NHE5O98Tf8y8+6 bKDIJXzV+jPxApg8LJNnrmLO6C2ZNSy3/E1NskAMxs6HnnnEQZ49Iv/narodi0rYcdE+ KRSfGQmNAUBjCezmJ3snaxpFvwhmvTWqe1vIbwbGBMkF1V4efEMkcG8Ia35P8zy8rxue Jp1g== X-Gm-Message-State: AOAM533uWMSsAb/bjtVeKndhC2myTGRD49xVjpDfXvK9s8JErQ0wEGEe MLRGwoylcf4TAsIVcEkQagg= X-Google-Smtp-Source: ABdhPJwOvd9CIBmxOqx5Wto9uJJfwa2V2w0gztP/K6GmTcQszXi5qSuRI1QPLBpmVetiOa+r9k8aAg== X-Received: by 2002:a17:906:7304:b0:6da:9243:865 with SMTP id di4-20020a170906730400b006da92430865mr25767004ejc.665.1651758438538; Thu, 05 May 2022 06:47:18 -0700 (PDT) Received: from linux.. (p5dd1ed70.dip0.t-ipconnect.de. [93.209.237.112]) by smtp.gmail.com with ESMTPSA id 26-20020a170906301a00b006f3ef214e69sm728324ejz.207.2022.05.05.06.47.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 May 2022 06:47:17 -0700 (PDT) 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, daejun7.park@samsung.com, peter.wang@mediatek.com, powen.kao@mediatek.com, keosung.park@samsung.com Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 1/6] scsi: ufshpb: Merge ufshpb_reset() and ufshpb_reset_host() Date: Thu, 5 May 2022 15:47:02 +0200 Message-Id: <20220505134707.35929-2-huobean@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220505134707.35929-1-huobean@gmail.com> References: <20220505134707.35929-1-huobean@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bean Huo There is no functional change in this patch, just merge ufshpb_reset() and ufshpb_reset_host() into one function ufshpb_toggle_state(). Reviewed-by: Keoseong Park Signed-off-by: Bean Huo --- drivers/scsi/ufs/ufshcd.c | 4 ++-- drivers/scsi/ufs/ufshpb.c | 36 +++++++++++++----------------------- drivers/scsi/ufs/ufshpb.h | 6 ++---- 3 files changed, 17 insertions(+), 29 deletions(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 2b4390a1106e..34628bbf675e 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -7229,7 +7229,7 @@ static int ufshcd_host_reset_and_restore(struct ufs_h= ba *hba) * Stop the host controller and complete the requests * cleared by h/w */ - ufshpb_reset_host(hba); + ufshpb_toggle_state(hba, HPB_PRESENT, HPB_RESET); ufshcd_hba_stop(hba); hba->silence_err_logs =3D true; ufshcd_complete_requests(hba); @@ -8196,7 +8196,7 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool= init_dev_params) /* Enable Auto-Hibernate if configured */ ufshcd_auto_hibern8_enable(hba); =20 - ufshpb_reset(hba); + ufshpb_toggle_state(hba, HPB_RESET, HPB_PRESENT); out: spin_lock_irqsave(hba->host->host_lock, flags); if (ret) diff --git a/drivers/scsi/ufs/ufshpb.c b/drivers/scsi/ufs/ufshpb.c index 6e5237a041b5..5412ce6309df 100644 --- a/drivers/scsi/ufs/ufshpb.c +++ b/drivers/scsi/ufs/ufshpb.c @@ -2272,38 +2272,28 @@ static bool ufshpb_check_hpb_reset_query(struct ufs= _hba *hba) return flag_res; } =20 -void ufshpb_reset(struct ufs_hba *hba) +/** + * ufshpb_toggle_state - switch HPB state of all LUs + * @hba: per-adapter instance + * @src: expected current HPB state + * @dest: target HPB state to switch to + */ +void ufshpb_toggle_state(struct ufs_hba *hba, enum UFSHPB_STATE src, enum = UFSHPB_STATE dest) { struct ufshpb_lu *hpb; struct scsi_device *sdev; =20 shost_for_each_device(sdev, hba->host) { hpb =3D ufshpb_get_hpb_data(sdev); - if (!hpb) - continue; - - if (ufshpb_get_state(hpb) !=3D HPB_RESET) - continue; - - ufshpb_set_state(hpb, HPB_PRESENT); - } -} - -void ufshpb_reset_host(struct ufs_hba *hba) -{ - struct ufshpb_lu *hpb; - struct scsi_device *sdev; =20 - shost_for_each_device(sdev, hba->host) { - hpb =3D ufshpb_get_hpb_data(sdev); - if (!hpb) + if (!hpb || ufshpb_get_state(hpb) !=3D src) continue; + ufshpb_set_state(hpb, dest); =20 - if (ufshpb_get_state(hpb) !=3D HPB_PRESENT) - continue; - ufshpb_set_state(hpb, HPB_RESET); - ufshpb_cancel_jobs(hpb); - ufshpb_discard_rsp_lists(hpb); + if (dest =3D=3D HPB_RESET) { + ufshpb_cancel_jobs(hpb); + ufshpb_discard_rsp_lists(hpb); + } } } =20 diff --git a/drivers/scsi/ufs/ufshpb.h b/drivers/scsi/ufs/ufshpb.h index b475dbd78988..7aa0dc58ee9f 100644 --- a/drivers/scsi/ufs/ufshpb.h +++ b/drivers/scsi/ufs/ufshpb.h @@ -288,8 +288,7 @@ static int ufshpb_prep(struct ufs_hba *hba, struct ufsh= cd_lrb *lrbp) { return 0; static void ufshpb_rsp_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp) = {} static void ufshpb_resume(struct ufs_hba *hba) {} static void ufshpb_suspend(struct ufs_hba *hba) {} -static void ufshpb_reset(struct ufs_hba *hba) {} -static void ufshpb_reset_host(struct ufs_hba *hba) {} +static void ufshpb_toggle_state(struct ufs_hba *hba, enum UFSHPB_STATE src= , enum UFSHPB_STATE dest) {} static void ufshpb_init(struct ufs_hba *hba) {} static void ufshpb_init_hpb_lu(struct ufs_hba *hba, struct scsi_device *sd= ev) {} static void ufshpb_destroy_lu(struct ufs_hba *hba, struct scsi_device *sde= v) {} @@ -303,8 +302,7 @@ int ufshpb_prep(struct ufs_hba *hba, struct ufshcd_lrb = *lrbp); void ufshpb_rsp_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp); void ufshpb_resume(struct ufs_hba *hba); void ufshpb_suspend(struct ufs_hba *hba); -void ufshpb_reset(struct ufs_hba *hba); -void ufshpb_reset_host(struct ufs_hba *hba); +void ufshpb_toggle_state(struct ufs_hba *hba, enum UFSHPB_STATE src, enum = UFSHPB_STATE dest); void ufshpb_init(struct ufs_hba *hba); void ufshpb_init_hpb_lu(struct ufs_hba *hba, struct scsi_device *sdev); void ufshpb_destroy_lu(struct ufs_hba *hba, struct scsi_device *sdev); --=20 2.34.1 From nobody Sun May 10 10:32:46 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2E7B0C433F5 for ; Thu, 5 May 2022 13:47:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1380047AbiEENvK (ORCPT ); Thu, 5 May 2022 09:51:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35112 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378990AbiEENvA (ORCPT ); Thu, 5 May 2022 09:51:00 -0400 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 085ED56C33; Thu, 5 May 2022 06:47:21 -0700 (PDT) Received: by mail-ej1-x62d.google.com with SMTP id i19so8828880eja.11; Thu, 05 May 2022 06:47:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=wgJcAl0zdpAYB0IRw4jP+ujI4F2jFIRqxBwg3WITVhs=; b=MuaSVcTMd+thraNYAa4NKcji97XxwjFN1oHZIK+EzVi6hCxF4NYDaPIC6ZFNASNAwy 7mVmJvI6S0gT4ndvD65Y5hWOEnSfvBu5FNW63ye+F1HuQB3Rzt4XfXDCxJVE3BtAoB/b 98bk6RV54sZq8NySLiAuGb6emx3nNqLX1wurZTmCHveYWEqxiIHP002SShjvC+wdGCtI TW0rGGycs/C5X4DAaLfmN3eWVacvQg1IrgRnZO6gVMAnjB2EhZ7uWSqW36GzfA+A4TQ1 LRji3bnPc3qFCRjEbGwHgICsSz2DwePH9g9DK/Pubbh76cV5yfN8EM6RI9gpPbpEiIhD HPyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wgJcAl0zdpAYB0IRw4jP+ujI4F2jFIRqxBwg3WITVhs=; b=mOreMok/0dH86n9GliBpHNAmd3erb1V4NeNheQFtcyvcrEAYZSA6n0s+M8TedSE04D HxVRNhD3TlFEsEsN9edpPZMtj2uWiKYUhnY2O/rIql3FC+XQJocirGHLVfgAg7o361k8 Q9lMW+apMqe0eCwPfIFGPNLDjYaf8eenvonq4w1OMxnWp75v8MvHIzHIFgOpGGJ4r6IT RUfdTBQ4bkUaV9EnDXEdmS9fT5m7qI0p95mHVaLh6ts81lLnankrH4adzzdyglRtEqcy 9XhlCF+jABpQ+gj+5wfSEZtMABvPPs2DLLqGBc5jUF7PaafPdsvjl71hCQND0eo6fITy QFpQ== X-Gm-Message-State: AOAM532l/ImmZ/UoMeFGq0pfm3vpKkbr5WZDsPdPBaYB5d2Wc0OrMaxN GSEUNbpmHoR0omb4Ez1GacI= X-Google-Smtp-Source: ABdhPJxORWKnRfcZPZwwnLI1KSyTx5JbDcA6A9ooISwo1rpw/WSqWqEBcp9Dga4hYHkL8slA/eCFzg== X-Received: by 2002:a17:906:2652:b0:6f3:a042:6b51 with SMTP id i18-20020a170906265200b006f3a0426b51mr26415172ejc.565.1651758439635; Thu, 05 May 2022 06:47:19 -0700 (PDT) Received: from linux.. (p5dd1ed70.dip0.t-ipconnect.de. [93.209.237.112]) by smtp.gmail.com with ESMTPSA id 26-20020a170906301a00b006f3ef214e69sm728324ejz.207.2022.05.05.06.47.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 May 2022 06:47:19 -0700 (PDT) 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, daejun7.park@samsung.com, peter.wang@mediatek.com, powen.kao@mediatek.com, keosung.park@samsung.com Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 2/6] scsi: ufshpb: Remove 0 assignment for enum value Date: Thu, 5 May 2022 15:47:03 +0200 Message-Id: <20220505134707.35929-3-huobean@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220505134707.35929-1-huobean@gmail.com> References: <20220505134707.35929-1-huobean@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bean Huo If the first enumerator has no initializer, the value of the corresponding constant is zero. Reviewed-by: Keoseong Park Signed-off-by: Bean Huo --- drivers/scsi/ufs/ufshpb.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/scsi/ufs/ufshpb.h b/drivers/scsi/ufs/ufshpb.h index 7aa0dc58ee9f..b83b9ec9044a 100644 --- a/drivers/scsi/ufs/ufshpb.h +++ b/drivers/scsi/ufs/ufshpb.h @@ -59,8 +59,8 @@ enum UFSHPB_MODE { }; =20 enum UFSHPB_STATE { - HPB_INIT =3D 0, - HPB_PRESENT =3D 1, + HPB_INIT, + HPB_PRESENT, HPB_SUSPEND, HPB_FAILED, HPB_RESET, --=20 2.34.1 From nobody Sun May 10 10:32:46 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E4E31C433EF for ; Thu, 5 May 2022 13:47:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1380057AbiEENvN (ORCPT ); Thu, 5 May 2022 09:51:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35138 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236424AbiEENvB (ORCPT ); Thu, 5 May 2022 09:51:01 -0400 Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [IPv6:2a00:1450:4864:20::52b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D826F56FB1; Thu, 5 May 2022 06:47:21 -0700 (PDT) Received: by mail-ed1-x52b.google.com with SMTP id k27so5281177edk.4; Thu, 05 May 2022 06:47:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=oUzFHC3hE5t2h2hEpNC3yEJlY0mdKqM3EtV1DCmd8D0=; b=Hw4Rv1FZo857VMcMzkbP/NlRckMrjb6LaVc/W34rmifYwa+w+HtW7CToobuVOZKHxe uYSmGpIUDOezRUgnWOyUdedYrRTxMfNuinkCZY5SABW3g4uWkXitK+Q2tJFaVAtEHl8T Har554npwR3GdE0C70jj1HmYVE65I9pPYOGNo84evkk38HuCnJUMfZVKeWAAm1dsP1FU sbZhA+m1mcEdWVw37GPDwF2kE5xCldSED5hfjZgvQDHU9YQrJeiThM7qv5AK4ruXWP3Z DW1xNgC6JODXYZ5V2VES9BLmDmNF8bY6FhfkO/f2PvBqTKUA73vlZIUBEWvzLAzFaG32 axfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=oUzFHC3hE5t2h2hEpNC3yEJlY0mdKqM3EtV1DCmd8D0=; b=u+uhP1qN5X0KKCt+YibBVf4+kdNYPcW0MNtWDfVz/lU3mw7940VNV6YIHb1gK52OUB t6LgQAsSYc2H+scUXVeBhnmB4Vtd29m5ch94mOQNjDJlzeZzTcFX/2bLFHpKTXtDvjBl 63K3uYNbINotp++B60sPOfsZze/suNKiW95ESe9j+ND4bfHzADeRx3ViKzSsT8zX1AxM tBWqw7R52ztKTyaJAtBzAVQ8Yz5v8r0eX1PewxX7FhtYnq6vP5gVljzTgZ/AC9TuSfzP fKVgaIaliXDzeI8MjwsCApgIfWbSKDWm0rUGcz4po6ErCmqLMEeBuhTr+L5kfpSAgfQV FnEQ== X-Gm-Message-State: AOAM5300K78bxdcpnqQ10J8F5/WSCFGK7UMfQ8a4PIWi9T41MnyV5t/v BD7pYJ1mzFUGUxSBujyTh3Y= X-Google-Smtp-Source: ABdhPJyJdL4q8U7oYwe/rnrFKTifXUV7fNxTuXLNvsxOMg3y+OWIWr5uIetiADuFzBU7w5ZsyVb0VA== X-Received: by 2002:a05:6402:5114:b0:427:cbe5:e9bd with SMTP id m20-20020a056402511400b00427cbe5e9bdmr21532765edd.255.1651758440492; Thu, 05 May 2022 06:47:20 -0700 (PDT) Received: from linux.. (p5dd1ed70.dip0.t-ipconnect.de. [93.209.237.112]) by smtp.gmail.com with ESMTPSA id 26-20020a170906301a00b006f3ef214e69sm728324ejz.207.2022.05.05.06.47.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 May 2022 06:47:20 -0700 (PDT) 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, daejun7.park@samsung.com, peter.wang@mediatek.com, powen.kao@mediatek.com, keosung.park@samsung.com Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 3/6] scsi: ufshpb: Cleanup the handler when device reset HPB information Date: Thu, 5 May 2022 15:47:04 +0200 Message-Id: <20220505134707.35929-4-huobean@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220505134707.35929-1-huobean@gmail.com> References: <20220505134707.35929-1-huobean@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Bean Huo "When the device is powered off by the host, the device may restore L2P map= data upon power up or build from the host=E2=80=99s HPB READ command. In case de= vice powered up and lost HPB information, device can signal to the host through HPB Sens= e data, by setting HPB Operation as =E2=80=982=E2=80=99 which will inform the host = that device reset HPB information." This patch is to clean up the handler and make the intent of this handler m= ore readable, no functional change. Signed-off-by: Bean Huo Reviewed-by: Keoseong Park --- drivers/scsi/ufs/ufshpb.c | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/drivers/scsi/ufs/ufshpb.c b/drivers/scsi/ufs/ufshpb.c index 5412ce6309df..901e0a3d4836 100644 --- a/drivers/scsi/ufs/ufshpb.c +++ b/drivers/scsi/ufs/ufshpb.c @@ -1225,7 +1225,10 @@ static void ufshpb_rsp_req_region_update(struct ufsh= pb_lu *hpb, queue_work(ufshpb_wq, &hpb->map_work); } =20 -static void ufshpb_dev_reset_handler(struct ufshpb_lu *hpb) +/* + * Set the flags of all active regions to RGN_FLAG_UPDATE to let host side= reload L2P entries later + */ +static void ufshpb_set_regions_update(struct ufshpb_lu *hpb) { struct victim_select_info *lru_info =3D &hpb->lru_info; struct ufshpb_region *rgn; @@ -1239,6 +1242,24 @@ static void ufshpb_dev_reset_handler(struct ufshpb_l= u *hpb) spin_unlock_irqrestore(&hpb->rgn_state_lock, flags); } =20 +static void ufshpb_dev_reset_handler(struct ufs_hba *hba) +{ + struct scsi_device *sdev; + struct ufshpb_lu *hpb; + + __shost_for_each_device(sdev, hba->host) { + hpb =3D ufshpb_get_hpb_data(sdev); + if (hpb && hpb->is_hcm) + /* + * For the HPB host mode, in case device powered up and lost HPB + * information, we will set the region flag to be RGN_FLAG_UPDATE, + * it will let host reload its L2P entries(re-activate the region + * in the UFS device). + */ + ufshpb_set_regions_update(hpb); + } +} + /* * This function will parse recommended active subregion information in se= nse * data field of response UPIU with SAM_STAT_GOOD state. @@ -1313,17 +1334,7 @@ void ufshpb_rsp_upiu(struct ufs_hba *hba, struct ufs= hcd_lrb *lrbp) case HPB_RSP_DEV_RESET: dev_warn(&hpb->sdev_ufs_lu->sdev_dev, "UFS device lost HPB information during PM.\n"); - - if (hpb->is_hcm) { - struct scsi_device *sdev; - - __shost_for_each_device(sdev, hba->host) { - struct ufshpb_lu *h =3D sdev->hostdata; - - if (h) - ufshpb_dev_reset_handler(h); - } - } + ufshpb_dev_reset_handler(hba); =20 break; default: --=20 2.34.1 From nobody Sun May 10 10:32:46 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 88605C433EF for ; Thu, 5 May 2022 13:47:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243790AbiEENvS (ORCPT ); Thu, 5 May 2022 09:51:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35160 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1379994AbiEENvC (ORCPT ); Thu, 5 May 2022 09:51:02 -0400 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 A548757149; Thu, 5 May 2022 06:47:22 -0700 (PDT) Received: by mail-ej1-x62d.google.com with SMTP id l18so8835925ejc.7; Thu, 05 May 2022 06:47:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=82ySVt2ChtjKl3QU+pguknZpdr/d2PyQOBQbWfayXGY=; b=SfVmRiTTUxzjc+1QZoWxa1YWNdnZkZqKrIovzyZA7N4h5pTax32kYUqqkv5Qb9uxti NlnIh7OU9kLgoTkHkU50NOjFPjJAjQXvG3nTSZ0J7Z9y7ugJsoXWR79WwG4/xVqwe2BB ZjpR+y3MEZpzxT9uLMhs6x+wT/EUCMMmckm2a53HDHPP33m7MV0FNJ54ZDOczpu3yf3G 3OmN16ISbQmPrznnKOSILKAJtPup0JkgLrkBRO0RNTs97yB/6/h06mS8PQJ/y4zi9n8m Hg6m9IKFVpXVqUz4qYfCsf3hw/Z6bNu/sIBtRy7WxkLkVgCyACPoYAUdZhk+XXlZSnuF yMqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=82ySVt2ChtjKl3QU+pguknZpdr/d2PyQOBQbWfayXGY=; b=kuQWSk0XWVMaivVOEChs2B6NvRv1Lqq62X2lni06AvovikXoAHvWVZ3EPEKDG6wj3O VTVe6kC7+D7pUTrbLaPjmUXD0NtDlD2vUc3dbzX9NiflV7hSw4OhPHZn+YYy2DWbnIDm EBdc/I8fUInRARDgRn5+7Am2l7SYLJru7eDV+ipXvnx7UsWe2ezPgWieGnKTxze2F7ds 2CfWbJaYq4T7n3H4q8uSUx+Chw3M0mc7jm3LLjpN21r1kkMI9/rXec1+G79gTNV6BLDP IluMGL4eFbOfOFCYyxNEAWhijs7wjhswk/kFkB+vI9+BqlzilHTPq3fvGAA6sLYjbHPU ptMQ== X-Gm-Message-State: AOAM5330U+Gg2RKx3ScUSNviK+NQGSlerO46oxNJtMZVeZwXW69xqO36 5jYofeAjZkSjEPAN9SswcqI= X-Google-Smtp-Source: ABdhPJzIa3KAznxko5Ij9lTbofJCQziDWDQ/3MLAvLhDVUrzkmZMLbi/elDSrXqlTjrflBFhVYKmHw== X-Received: by 2002:a17:907:2d11:b0:6f4:7cf0:2275 with SMTP id gs17-20020a1709072d1100b006f47cf02275mr14868896ejc.72.1651758441223; Thu, 05 May 2022 06:47:21 -0700 (PDT) Received: from linux.. (p5dd1ed70.dip0.t-ipconnect.de. [93.209.237.112]) by smtp.gmail.com with ESMTPSA id 26-20020a170906301a00b006f3ef214e69sm728324ejz.207.2022.05.05.06.47.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 May 2022 06:47:20 -0700 (PDT) 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, daejun7.park@samsung.com, peter.wang@mediatek.com, powen.kao@mediatek.com, keosung.park@samsung.com Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 4/6] scsi: ufshpb: Change sysfs node hpb_stats/rb_* prefix to start with rcmd_* Date: Thu, 5 May 2022 15:47:05 +0200 Message-Id: <20220505134707.35929-5-huobean@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220505134707.35929-1-huobean@gmail.com> References: <20220505134707.35929-1-huobean@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bean Huo According to the documentation of the sysfs nodes rb_noti_cnt, rb_active_cnt and rb_inactive_cnt, they are all related to HPB recommendation in UPIU res= ponse packet. 'rcmd' (recommendation) should be the correct abbreviation. Change the sysfs documentation about these sysfs nodes to highlight what th= ey mean under different HPB control modes. Reviewed-by: Keoseong Park Signed-off-by: Bean Huo --- Documentation/ABI/testing/sysfs-driver-ufs | 18 +++++++++------- drivers/scsi/ufs/ufshpb.c | 24 +++++++++++----------- drivers/scsi/ufs/ufshpb.h | 6 +++--- 3 files changed, 26 insertions(+), 22 deletions(-) diff --git a/Documentation/ABI/testing/sysfs-driver-ufs b/Documentation/ABI= /testing/sysfs-driver-ufs index a44ef8bfbadf..6b248abb1bd7 100644 --- a/Documentation/ABI/testing/sysfs-driver-ufs +++ b/Documentation/ABI/testing/sysfs-driver-ufs @@ -1518,7 +1518,7 @@ Description: This entry shows the number of reads tha= t cannot be changed to =20 The file is read only. =20 -What: /sys/class/scsi_device/*/device/hpb_stats/rb_noti_cnt +What: /sys/class/scsi_device/*/device/hpb_stats/rcmd_noti_cnt Date: June 2021 Contact: Daejun Park Description: This entry shows the number of response UPIUs that has @@ -1526,19 +1526,23 @@ Description: This entry shows the number of respons= e UPIUs that has =20 The file is read only. =20 -What: /sys/class/scsi_device/*/device/hpb_stats/rb_active_cnt +What: /sys/class/scsi_device/*/device/hpb_stats/rcmd_active_cnt Date: June 2021 Contact: Daejun Park -Description: This entry shows the number of active sub-regions recommended= by - response UPIUs. +Description: For the HPB device control mode, this entry shows the number = of + active sub-regions recommended by response UPIUs. For the HPB host= control + mode, this entry shows the number of active sub-regions recommende= d by the + HPB host control mode heuristic algorithm. =20 The file is read only. =20 -What: /sys/class/scsi_device/*/device/hpb_stats/rb_inactive_cnt +What: /sys/class/scsi_device/*/device/hpb_stats/rcmd_inactive_cnt Date: June 2021 Contact: Daejun Park -Description: This entry shows the number of inactive regions recommended by - response UPIUs. +Description: For the HPB device control mode, this entry shows the number = of + inactive regions recommended by response UPIUs. For the HPB host c= ontrol + mode, this entry shows the number of inactive regions recommended = by the + HPB host control mode heuristic algorithm. =20 The file is read only. =20 diff --git a/drivers/scsi/ufs/ufshpb.c b/drivers/scsi/ufs/ufshpb.c index 901e0a3d4836..4833f20cc7d0 100644 --- a/drivers/scsi/ufs/ufshpb.c +++ b/drivers/scsi/ufs/ufshpb.c @@ -563,7 +563,7 @@ static void ufshpb_update_active_info(struct ufshpb_lu = *hpb, int rgn_idx, if (list_empty(&srgn->list_act_srgn)) list_add_tail(&srgn->list_act_srgn, &hpb->lh_act_srgn); =20 - hpb->stats.rb_active_cnt++; + hpb->stats.rcmd_active_cnt++; } =20 static void ufshpb_update_inactive_info(struct ufshpb_lu *hpb, int rgn_idx) @@ -580,7 +580,7 @@ static void ufshpb_update_inactive_info(struct ufshpb_l= u *hpb, int rgn_idx) if (list_empty(&rgn->list_inact_rgn)) list_add_tail(&rgn->list_inact_rgn, &hpb->lh_inact_rgn); =20 - hpb->stats.rb_inactive_cnt++; + hpb->stats.rcmd_inactive_cnt++; } =20 static void ufshpb_activate_subregion(struct ufshpb_lu *hpb, @@ -1321,7 +1321,7 @@ void ufshpb_rsp_upiu(struct ufs_hba *hba, struct ufsh= cd_lrb *lrbp) if (!ufshpb_is_hpb_rsp_valid(hba, lrbp, rsp_field)) return; =20 - hpb->stats.rb_noti_cnt++; + hpb->stats.rcmd_noti_cnt++; =20 switch (rsp_field->hpb_op) { case HPB_RSP_REQ_REGION_UPDATE: @@ -1724,18 +1724,18 @@ static DEVICE_ATTR_RO(__name) =20 ufshpb_sysfs_attr_show_func(hit_cnt); ufshpb_sysfs_attr_show_func(miss_cnt); -ufshpb_sysfs_attr_show_func(rb_noti_cnt); -ufshpb_sysfs_attr_show_func(rb_active_cnt); -ufshpb_sysfs_attr_show_func(rb_inactive_cnt); +ufshpb_sysfs_attr_show_func(rcmd_noti_cnt); +ufshpb_sysfs_attr_show_func(rcmd_active_cnt); +ufshpb_sysfs_attr_show_func(rcmd_inactive_cnt); ufshpb_sysfs_attr_show_func(map_req_cnt); ufshpb_sysfs_attr_show_func(umap_req_cnt); =20 static struct attribute *hpb_dev_stat_attrs[] =3D { &dev_attr_hit_cnt.attr, &dev_attr_miss_cnt.attr, - &dev_attr_rb_noti_cnt.attr, - &dev_attr_rb_active_cnt.attr, - &dev_attr_rb_inactive_cnt.attr, + &dev_attr_rcmd_noti_cnt.attr, + &dev_attr_rcmd_active_cnt.attr, + &dev_attr_rcmd_inactive_cnt.attr, &dev_attr_map_req_cnt.attr, &dev_attr_umap_req_cnt.attr, NULL, @@ -2098,9 +2098,9 @@ static void ufshpb_stat_init(struct ufshpb_lu *hpb) { hpb->stats.hit_cnt =3D 0; hpb->stats.miss_cnt =3D 0; - hpb->stats.rb_noti_cnt =3D 0; - hpb->stats.rb_active_cnt =3D 0; - hpb->stats.rb_inactive_cnt =3D 0; + hpb->stats.rcmd_noti_cnt =3D 0; + hpb->stats.rcmd_active_cnt =3D 0; + hpb->stats.rcmd_inactive_cnt =3D 0; hpb->stats.map_req_cnt =3D 0; hpb->stats.umap_req_cnt =3D 0; } diff --git a/drivers/scsi/ufs/ufshpb.h b/drivers/scsi/ufs/ufshpb.h index b83b9ec9044a..0d6e6004d783 100644 --- a/drivers/scsi/ufs/ufshpb.h +++ b/drivers/scsi/ufs/ufshpb.h @@ -211,9 +211,9 @@ struct ufshpb_params { struct ufshpb_stats { u64 hit_cnt; u64 miss_cnt; - u64 rb_noti_cnt; - u64 rb_active_cnt; - u64 rb_inactive_cnt; + u64 rcmd_noti_cnt; + u64 rcmd_active_cnt; + u64 rcmd_inactive_cnt; u64 map_req_cnt; u64 pre_req_cnt; u64 umap_req_cnt; --=20 2.34.1 From nobody Sun May 10 10:32:46 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1108CC433EF for ; Thu, 5 May 2022 13:47:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1380069AbiEENvW (ORCPT ); Thu, 5 May 2022 09:51:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35192 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1380004AbiEENvD (ORCPT ); Thu, 5 May 2022 09:51:03 -0400 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 66EA657983; Thu, 5 May 2022 06:47:23 -0700 (PDT) Received: by mail-ej1-x62d.google.com with SMTP id n10so8856227ejk.5; Thu, 05 May 2022 06:47:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9QKZUK4bdyy+uG1UycNOMbAlDaNnK9qZ/IqgLIv4+L0=; b=RiGqbaZJ8DLPVryr8gOo9oueAC2XT77ogsIkuaiqlVj69JfMvdEe496R/G/toqFuEM dTAimQcK/DoQebyrEB3/KhKSoNEFd68d9XgCapVgKYZ87kSkFpJDeJF+3P9XUphy6DrN z6KWdaXPnSJ3WbbB131BvFUcKZXsqsV6SVhPLm7JpZmw7XdMx2rjQITbbbqMFI1kDZZ1 LWkaH62GZP/80oWWhHRyXMDpVL+WZfcZGw9O7T5lLpWYtWV9hpFvXbJZW2+cM93/1AOh MWBM+LYb8DxFeMO5FZLV8INzBQvE9wdoLkbvWamiPa2BGAtCcUwXLTuiVy9xitY3Ql+y Dgig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9QKZUK4bdyy+uG1UycNOMbAlDaNnK9qZ/IqgLIv4+L0=; b=tCYqgUiPyAkT3oeDNFPSqpF1pWltzLWvP3OdVIklEHM/JGh+X50KvxGQ9EYgGNnNS6 rGmYpdAu5Q9JMoGV6oDrM29RP3riO/v9hjdvtHbIISGVDnbCNK1eXuNUmsK76sPpsB1B ya12t+SA10VL0jimweGj+ayI0RhkIVSnlErwnQYVj61mC94byDfG8n2qnZVXdkR3vUXA XO+UT3IdMItHbi2ukPCafdwSbitLY4rPonzRror1x6KMpnZi6OCUGKJC/Nfg2ZkMFQ7E AaeMYYI8TvRqrOm8q4mMGZBxe+QLFkiUYgre+miqNXbbhjQGy7OYZR4wwHpJ5lTEWvJp wumQ== X-Gm-Message-State: AOAM533pDsSd7xQEM3eAjyujhifC5Hla8hXZZ8tbDmHEYnCBKFa4N4fe Dm/p1X1x+3X9je92nHtxfK4= X-Google-Smtp-Source: ABdhPJwMlMoacefutCUyt8y8KcI2wSgS3+M9++q/aKOSi01UzKpkx35l/ntWLSBfHe/OHSFBZAsuSw== X-Received: by 2002:a17:906:a454:b0:6f3:98ab:473d with SMTP id cb20-20020a170906a45400b006f398ab473dmr25960129ejb.423.1651758441986; Thu, 05 May 2022 06:47:21 -0700 (PDT) Received: from linux.. (p5dd1ed70.dip0.t-ipconnect.de. [93.209.237.112]) by smtp.gmail.com with ESMTPSA id 26-20020a170906301a00b006f3ef214e69sm728324ejz.207.2022.05.05.06.47.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 May 2022 06:47:21 -0700 (PDT) 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, daejun7.park@samsung.com, peter.wang@mediatek.com, powen.kao@mediatek.com, keosung.park@samsung.com Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 5/6] scsi: ufshpb: Add handing of device reset HPB regions Infos in HPB device mode Date: Thu, 5 May 2022 15:47:06 +0200 Message-Id: <20220505134707.35929-6-huobean@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220505134707.35929-1-huobean@gmail.com> References: <20220505134707.35929-1-huobean@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Bean Huo In UFS HPB Spec JESD220-3A, "5.8. Active and inactive information upon power cycle ... When the device is powered off by the host, the device may restore L2P map = data upon power up or build from the host=E2=80=99s HPB READ command. In case de= vice powered up and lost HPB information, device can signal to the host through HPB Sens= e data, by setting HPB Operation as =E2=80=982=E2=80=99 which will inform the host = that device reset HPB information." Therefore, for HPB device control mode, if the UFS device is reset via the = RST_N pin, the active region information in the device will be reset. If the host= side receives this notification from the device side, it is recommended to inact= ivate all active regions in the host's HPB cache. Signed-off-by: Bean Huo Reviewed-by: Keoseong Park --- drivers/scsi/ufs/ufshpb.c | 82 +++++++++++++++++++++++++++------------ 1 file changed, 58 insertions(+), 24 deletions(-) diff --git a/drivers/scsi/ufs/ufshpb.c b/drivers/scsi/ufs/ufshpb.c index 4833f20cc7d0..859e7ee7bf57 100644 --- a/drivers/scsi/ufs/ufshpb.c +++ b/drivers/scsi/ufs/ufshpb.c @@ -1137,6 +1137,39 @@ static int ufshpb_add_region(struct ufshpb_lu *hpb, = struct ufshpb_region *rgn) spin_unlock_irqrestore(&hpb->rgn_state_lock, flags); return ret; } +/** + *ufshpb_submit_region_inactive() - submit a region to be inactivated later + *@hpb: per-LU HPB instance + *@region_index: the index associated with the region that will be inactiv= ated later + */ +static void ufshpb_submit_region_inactive(struct ufshpb_lu *hpb, int regio= n_index) +{ + int subregion_index; + struct ufshpb_region *rgn; + struct ufshpb_subregion *srgn; + + /* + * Remove this region from active region list and add it to inactive list + */ + spin_lock(&hpb->rsp_list_lock); + ufshpb_update_inactive_info(hpb, region_index); + spin_unlock(&hpb->rsp_list_lock); + + rgn =3D hpb->rgn_tbl + region_index; + + /* + * Set subregion state to be HPB_SRGN_INVALID, there will no HPB read on = this subregion + */ + spin_lock(&hpb->rgn_state_lock); + if (rgn->rgn_state !=3D HPB_RGN_INACTIVE) { + for (subregion_index =3D 0; subregion_index < rgn->srgn_cnt; subregion_i= ndex++) { + srgn =3D rgn->srgn_tbl + subregion_index; + if (srgn->srgn_state =3D=3D HPB_SRGN_VALID) + srgn->srgn_state =3D HPB_SRGN_INVALID; + } + } + spin_unlock(&hpb->rgn_state_lock); +} =20 static void ufshpb_rsp_req_region_update(struct ufshpb_lu *hpb, struct utp_hpb_rsp *rsp_field) @@ -1196,25 +1229,8 @@ static void ufshpb_rsp_req_region_update(struct ufsh= pb_lu *hpb, =20 for (i =3D 0; i < rsp_field->inactive_rgn_cnt; i++) { rgn_i =3D be16_to_cpu(rsp_field->hpb_inactive_field[i]); - dev_dbg(&hpb->sdev_ufs_lu->sdev_dev, - "inactivate(%d) region %d\n", i, rgn_i); - - spin_lock(&hpb->rsp_list_lock); - ufshpb_update_inactive_info(hpb, rgn_i); - spin_unlock(&hpb->rsp_list_lock); - - rgn =3D hpb->rgn_tbl + rgn_i; - - spin_lock(&hpb->rgn_state_lock); - if (rgn->rgn_state !=3D HPB_RGN_INACTIVE) { - for (srgn_i =3D 0; srgn_i < rgn->srgn_cnt; srgn_i++) { - srgn =3D rgn->srgn_tbl + srgn_i; - if (srgn->srgn_state =3D=3D HPB_SRGN_VALID) - srgn->srgn_state =3D HPB_SRGN_INVALID; - } - } - spin_unlock(&hpb->rgn_state_lock); - + dev_dbg(&hpb->sdev_ufs_lu->sdev_dev, "inactivate(%d) region %d\n", i, rg= n_i); + ufshpb_submit_region_inactive(hpb, rgn_i); } =20 out: @@ -1249,14 +1265,32 @@ static void ufshpb_dev_reset_handler(struct ufs_hba= *hba) =20 __shost_for_each_device(sdev, hba->host) { hpb =3D ufshpb_get_hpb_data(sdev); - if (hpb && hpb->is_hcm) + if (!hpb) + continue; + + if (hpb->is_hcm) { /* - * For the HPB host mode, in case device powered up and lost HPB - * information, we will set the region flag to be RGN_FLAG_UPDATE, - * it will let host reload its L2P entries(re-activate the region - * in the UFS device). + * For the HPB host control mode, in case device powered up and lost HPB + * information, we will set the region flag to be RGN_FLAG_UPDATE, it w= ill + * let host reload its L2P entries(reactivate region in the UFS device). */ ufshpb_set_regions_update(hpb); + } else { + /* + * For the HPB device control mode, if host side receives 02h:HPB Opera= tion + * in UPIU response, which means device recommends the host side should + * inactivate all active regions. Here we add all active regions to ina= ctive + * list, they will be inactivated later in ufshpb_map_work_handler(). + */ + struct victim_select_info *lru_info =3D &hpb->lru_info; + struct ufshpb_region *rgn; + + list_for_each_entry(rgn, &lru_info->lh_lru_rgn, list_lru_rgn) + ufshpb_submit_region_inactive(hpb, rgn->rgn_idx); + + if (ufshpb_get_state(hpb) =3D=3D HPB_PRESENT) + queue_work(ufshpb_wq, &hpb->map_work); + } } } =20 --=20 2.34.1 From nobody Sun May 10 10:32:46 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0EDA3C433F5 for ; Thu, 5 May 2022 13:47:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1380084AbiEENv0 (ORCPT ); Thu, 5 May 2022 09:51:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35194 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1380001AbiEENvD (ORCPT ); Thu, 5 May 2022 09:51:03 -0400 Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com [IPv6:2a00:1450:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 38487579A5; Thu, 5 May 2022 06:47:24 -0700 (PDT) Received: by mail-ej1-x62a.google.com with SMTP id kq17so8862915ejb.4; Thu, 05 May 2022 06:47:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qXWnX76rjsfrPj31CpTpUU8O0igTZZuUO+H5t1tgSUc=; b=AW43zGhPY3PZXhJheLH5YyeEpE65Ckj4iTnNDTMJdQlQRv2YdCtlG6GCb56xG2qGEa tV6InkkCgv3R+kBVrv9Bru8BSQ8jdYhZfAyCSB+nVgyg4R6+NjoFAK0ParUZaP8f9Bvc 23foDT8vnDEZOf5N+7tR/m7KcJN1lar3ayI4glbTRN3YT/Kuo1M6SuUrrcqvAlMLX89N s15JopNgwcaViXhETRwnaYT2okThhEfiPQqO5qOibXJLo+GIDqRpgQU1i+/p3yPCSFVB Ud4KnEcXPZnAG1mQDV+57ZqFvC5DxZCdy6ynXvT5XxAG95k8322sRfipKSdNiE7jrXp3 MaYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qXWnX76rjsfrPj31CpTpUU8O0igTZZuUO+H5t1tgSUc=; b=7X8RtxX+aXOVS7WXjSpxalDS4ZcTzXe7Z9Bsih0TeWReK54ObUSH2VV0kvwvMwO7sP 1HIFBQWDqXhzacOndwp9toBZ063qR1pyxGLD3mtF18ub9CIfuilbj9rVRPzByfbZRnjA gdSwR9dwJj9s3DnErlP/qxURvN7+qeyMiimXkCPuuueXPttAyKdFIOl0aQvfiyoDEgEw DqZaiaOX8ZMwtMfxzDoFe8mp44rqYBMDPenFo/rAGeyP/8JX6zq8CxjW/loNYted4Eg9 pyO2L8ka2YvLqXb2+qKIyUG2bPjIGPXaLA7LNJwjdc6pw7NIPE8gEh2QChem2nehND2d tmIw== X-Gm-Message-State: AOAM532jkuyugqvDL3pUxF42DyZTMy3hlZ7lQThwj32FZyYcwY4vMQkm /B/VkGLX+lIZI63dFHyZ3fjL8ph8oEJpPw== X-Google-Smtp-Source: ABdhPJyiL1CEMEEvmwcPqlqbbuqKjqWBO8QS1IaWuZsYMNQynea2Lx49kyXFAG20pv78EZ2YaiJl0A== X-Received: by 2002:a17:907:7ea7:b0:6f4:7a72:da92 with SMTP id qb39-20020a1709077ea700b006f47a72da92mr15001481ejc.348.1651758442766; Thu, 05 May 2022 06:47:22 -0700 (PDT) Received: from linux.. (p5dd1ed70.dip0.t-ipconnect.de. [93.209.237.112]) by smtp.gmail.com with ESMTPSA id 26-20020a170906301a00b006f3ef214e69sm728324ejz.207.2022.05.05.06.47.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 May 2022 06:47:22 -0700 (PDT) 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, daejun7.park@samsung.com, peter.wang@mediatek.com, powen.kao@mediatek.com, keosung.park@samsung.com Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 6/6] scsi: ufshpb: Cleanup ufshpb_suspend/resume Date: Thu, 5 May 2022 15:47:07 +0200 Message-Id: <20220505134707.35929-7-huobean@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220505134707.35929-1-huobean@gmail.com> References: <20220505134707.35929-1-huobean@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Bean Huo ufshpb_resume() is only called when the HPB state is HPB_SUSPEND, so the check statement for "ufshpb_get_state(hpb) !=3D HPB_PRESENT" is useless. Signed-off-by: Bean Huo Reviewed-by: Keoseong Park --- drivers/scsi/ufs/ufshpb.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/drivers/scsi/ufs/ufshpb.c b/drivers/scsi/ufs/ufshpb.c index 859e7ee7bf57..f1f65383e97d 100644 --- a/drivers/scsi/ufs/ufshpb.c +++ b/drivers/scsi/ufs/ufshpb.c @@ -2349,11 +2349,9 @@ void ufshpb_suspend(struct ufs_hba *hba) =20 shost_for_each_device(sdev, hba->host) { hpb =3D ufshpb_get_hpb_data(sdev); - if (!hpb) + if (!hpb || ufshpb_get_state(hpb) !=3D HPB_PRESENT) continue; =20 - if (ufshpb_get_state(hpb) !=3D HPB_PRESENT) - continue; ufshpb_set_state(hpb, HPB_SUSPEND); ufshpb_cancel_jobs(hpb); } @@ -2366,20 +2364,15 @@ void ufshpb_resume(struct ufs_hba *hba) =20 shost_for_each_device(sdev, hba->host) { hpb =3D ufshpb_get_hpb_data(sdev); - if (!hpb) + if (!hpb || ufshpb_get_state(hpb) !=3D HPB_SUSPEND) continue; =20 - if ((ufshpb_get_state(hpb) !=3D HPB_PRESENT) && - (ufshpb_get_state(hpb) !=3D HPB_SUSPEND)) - continue; ufshpb_set_state(hpb, HPB_PRESENT); ufshpb_kick_map_work(hpb); if (hpb->is_hcm) { - unsigned int poll =3D - hpb->params.timeout_polling_interval_ms; + unsigned int poll =3D hpb->params.timeout_polling_interval_ms; =20 - schedule_delayed_work(&hpb->ufshpb_read_to_work, - msecs_to_jiffies(poll)); + schedule_delayed_work(&hpb->ufshpb_read_to_work, msecs_to_jiffies(poll)= ); } } } --=20 2.34.1