From nobody Sun May 10 20:32:16 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 838E2C433FE for ; Sun, 24 Apr 2022 22:07:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239772AbiDXWKg (ORCPT ); Sun, 24 Apr 2022 18:10:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36370 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234833AbiDXWKZ (ORCPT ); Sun, 24 Apr 2022 18:10:25 -0400 Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com [IPv6:2a00:1450:4864:20::52a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DA94A5E163; Sun, 24 Apr 2022 15:07:23 -0700 (PDT) Received: by mail-ed1-x52a.google.com with SMTP id k27so1241731edk.4; Sun, 24 Apr 2022 15:07: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=d8fPGHGP26naPx3u4XdY7A6QtBbwdMGar9P7tHUKzWY=; b=nP1sYMmnWbNppTXXX2B2OPNnPRJkP+Tm9m8BWqvf7b4hN2n2SCo8EIxdtSGOn+dU9G hH/4tcYNsgx9PhBZTfTKrI5fqxnGx6dY92FZaL/CmZrH3ywj0lTBLnB8K6AFNF8Q0vWu kflRGklvsmPKmv4l0TDldBad/MvmsvFPXZvaIqC5yr0BVMrhWFO/e3rNDp8E+h+D6Kx4 y7zb0L/og/oCSToVeBc7gA8e/CCow6wnxvj6T+jt05PMldK2qBb+wvpJBgBW7BrWqnQ8 c4tzsZPrIE5kgyZRnxeQH/k3PByq7huOcgXocmU9ufI5K1LlLrHQuyqTWbyeKC8vnqgv 3x4Q== 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=d8fPGHGP26naPx3u4XdY7A6QtBbwdMGar9P7tHUKzWY=; b=zEz8r3hidMFdAd6cc78qMxxO1Msj0oc7OtVEGQfTyhMAgKM9w62JoDUso+fRPfE56X yMeV9bvGzlPCZggW4UZ+htPXfkt6V2apTVhdKZBKNU84XTpPeIT5jJYyIB7pU43Gmsih OLBW9EHmBDvR5VhA/t5XCX5tVp86tBxy0pvZZ+67FgYz6tBcAygw6TCNOcw7D3KFx/5f Adx2dQBuPaI5Shz+qcpzBV1dttT7TsWgqidPsBCeM+0/0dZm039fF8GSly9bH/TXn8AW zmwH6joAAn0EQcsNAzfSOPikNnfeak03i9gaEbmFUp9oOYz4EY3OEg9YRmC5d6Q6mESq AdoQ== X-Gm-Message-State: AOAM530PcV/cwz5+SuV9rhgoepbHxoBztit2zeezXT7ix+rQf306N+wJ SpPrCJqwhFHAdm5mLWsZ8PKXf6gF9ckdkw== X-Google-Smtp-Source: ABdhPJxWD5r4TSjHdo7qJgQXWpGobHIZKMXOJLtKYsvf9D8wS+xjk1/LTEH6QfR3dV2J6wBEN79btA== X-Received: by 2002:a05:6402:11cb:b0:423:d7b9:109b with SMTP id j11-20020a05640211cb00b00423d7b9109bmr15967730edw.70.1650838042412; Sun, 24 Apr 2022 15:07:22 -0700 (PDT) Received: from linux.. (p5dd1ed70.dip0.t-ipconnect.de. [93.209.237.112]) by smtp.gmail.com with ESMTPSA id s14-20020aa7cb0e000000b00410bf015567sm3672948edt.92.2022.04.24.15.07.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 Apr 2022 15:07:22 -0700 (PDT) From: Bean Huo To: alim.akhtar@samsung.com, avri.altman@wdc.com, jejb@linux.ibm.com, martin.petersen@oracle.com, stanley.chu@mediatek.com, beanhuo@micron.com, bvanassche@acm.org, tomas.winkler@intel.com, daejun7.park@samsung.com, keosung.park@samsung.com, peter.wang@mediatek.com, powen.kao@mediatek.com Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 1/6] scsi: ufshpb: Merge ufshpb_reset() and ufshpb_reset_host() Date: Mon, 25 Apr 2022 00:07:08 +0200 Message-Id: <20220424220713.1253049-2-huobean@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220424220713.1253049-1-huobean@gmail.com> References: <20220424220713.1253049-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(). Signed-off-by: Bean Huo Reviewed-by: Keoseong Park --- 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 3f9caafa91bf..62c7f5404353 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -7223,7 +7223,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); @@ -8184,7 +8184,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 fd31e516e491..167643969165 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 20:32:16 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 98916C433F5 for ; Sun, 24 Apr 2022 22:07:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239779AbiDXWKm (ORCPT ); Sun, 24 Apr 2022 18:10:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36398 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239743AbiDXWK0 (ORCPT ); Sun, 24 Apr 2022 18:10:26 -0400 Received: from mail-ej1-x635.google.com (mail-ej1-x635.google.com [IPv6:2a00:1450:4864:20::635]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9E8335E77B; Sun, 24 Apr 2022 15:07:24 -0700 (PDT) Received: by mail-ej1-x635.google.com with SMTP id bv19so26275648ejb.6; Sun, 24 Apr 2022 15:07: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=wgJcAl0zdpAYB0IRw4jP+ujI4F2jFIRqxBwg3WITVhs=; b=cZ77NACJh5VixU+h1pcfeiY6y7ekGoKIuy5NDHqSRXwlc2y3ZEwCkTQz72ojbxVxOT dmwZW/wDSUDuH9DvwVV80Hg6CjvR/RZZRVd9GKMKHwFvAo0mY1YjHQvE5w+J4fnh6I3q JPX1XeMlGHgiunbzi57c41Rchut1u+PCVOnO2rU/MOrz2GqSnjMUDDo45v8Ska0tiaAh vADZTf0Jy9iFejyonxz2Desz2g6vNtgfX81Z4CRz024yNvanNPqLwka8wCz1y9PdodVZ z/ujNjvU6JRDuQWMcpb8KSOdSYG4eNi1NMjiBbs3GP3Wsn8vje59UNlcyNYnWuI8F2J4 WdJw== 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=sM3KwdkOrwoLOB/+3rGfadZniG3Enm9HNGOR1XGMMefS23Zl9BnpJqSf3ysbU2326x BqTzPLW4ihoDxrAdtu4CwYFo1u8gq48sbEdLYZ1Y/YQipLZ7CSnbe+p+JsQVfDZqqSr4 mCAzX+zqQ/SmSfQ4Z1y7wlohpUZOlxzhS4Z9t22J9iJQArU2bOX3sEwnv1IZgTEj46QY aPMMVOQZyqR6lU2HhtbGbGOhASoEzCLwBTPpT81BextRVLzUpQ8obz9X/GyasPeF0rDX Y0l6rva4yweRjZ9OA6oCEm0vXgBEPTiLwrcjpUAnowcFKBbLq0jVA9NkvznDk4Y/dxuG DwRg== X-Gm-Message-State: AOAM533OcX9YGEYyvNgS6liDaH+55hecG8US3Dpzhuhaxhcbyxg7sE+V 0lKc9MlmrybPywj+rhFaYqk= X-Google-Smtp-Source: ABdhPJxQxA5FsP+gIegcaQbl4IeReGJ6lg1tXoNsu/iMf2ULGyR2U0DaQ2wvxFILc5eu2iInj+wOSg== X-Received: by 2002:a17:907:d8c:b0:6f0:1091:de34 with SMTP id go12-20020a1709070d8c00b006f01091de34mr13540330ejc.376.1650838043241; Sun, 24 Apr 2022 15:07:23 -0700 (PDT) Received: from linux.. (p5dd1ed70.dip0.t-ipconnect.de. [93.209.237.112]) by smtp.gmail.com with ESMTPSA id s14-20020aa7cb0e000000b00410bf015567sm3672948edt.92.2022.04.24.15.07.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 Apr 2022 15:07:23 -0700 (PDT) From: Bean Huo To: alim.akhtar@samsung.com, avri.altman@wdc.com, jejb@linux.ibm.com, martin.petersen@oracle.com, stanley.chu@mediatek.com, beanhuo@micron.com, bvanassche@acm.org, tomas.winkler@intel.com, daejun7.park@samsung.com, keosung.park@samsung.com, peter.wang@mediatek.com, powen.kao@mediatek.com Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 2/6] scsi: ufshpb: Remove 0 assignment for enum value Date: Mon, 25 Apr 2022 00:07:09 +0200 Message-Id: <20220424220713.1253049-3-huobean@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220424220713.1253049-1-huobean@gmail.com> References: <20220424220713.1253049-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 20:32:16 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 88DFEC433EF for ; Sun, 24 Apr 2022 22:07:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239795AbiDXWKr (ORCPT ); Sun, 24 Apr 2022 18:10:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36480 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239750AbiDXWK1 (ORCPT ); Sun, 24 Apr 2022 18:10:27 -0400 Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7185A5DE62; Sun, 24 Apr 2022 15:07:25 -0700 (PDT) Received: by mail-ej1-x630.google.com with SMTP id m20so5534339ejj.10; Sun, 24 Apr 2022 15:07:25 -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=COG2pB7EY8x9qomnPZfOrHzJQwF9/mN/WQraDu1oLko=; b=LoLS5C/AgpN9SECJLmqiFy1WT/xJSXWqfEtdtaeEGNj9uq7SjAo8llXOnr+K8B8GNq zixYmmzBL+TlBT77HCjCPuknMwtws9WizKA/0FVzfXc0nij2R1Ddt0xWbzsmmnPpx3Dz OAT9Z7ZPGW3xs+GEZhyMQrjuYM0r2mntHSmQ1po4MrK9LmdFymGWqMlH5G3IBV12ULOu eixFkdRs1tmVR1Dir7JjHC1VYR+MCReGMeaEQzByOYA8tAccVQd67jpMFcIFQYfoWo7o 7MpH1PHXAiqLaL7TrBdfr648qz7btOUZmCo5cq+BRFjO6CAEFuUT+X+Sjc8PBVcdhub5 ouHQ== 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=COG2pB7EY8x9qomnPZfOrHzJQwF9/mN/WQraDu1oLko=; b=nex/66lGVle1LwrhEH9OjYG9hxXbrR1HLdqNpDgyiA2xdLdNpZQcAsZJiBPAGCaU72 7m5uha06mORoTnQiBsAEhSVLFqjwD+WTEYa+QgYBPVk2q77BZa90esEXF+Z6J1cBsrR1 FYicinDV25cmPXOw/+IuPmqCtqiLKtRm/wihmmZEuJusWlPuX6+truXR/bKB0py8gqsK 4gdgrhBZ3stM5esmsOWLPdDNYlLY3pSzVBMduHtkN0eChc67h/wJbe8UWtO6PTp3uoyY lKz8xizYm9+ExqqqGG/mMXPp9n4AAFPKEYebeslhQ3sIV2z+DeltWqYm6NQ3wEe4cqBy dLWw== X-Gm-Message-State: AOAM530WEJuqgEP7zlESObaTk8iOIWMAPr8j1Qp9jLP97fVgipMhWlBb 7oOu3NKV9kuv/A/SqyuZNEw= X-Google-Smtp-Source: ABdhPJwS0EkNuH4fvQutc2H9LWVZ+hMWeZw/1g2nAPIRo26UYUNvkdgQYM+aa40ajgPP282NDsdCIw== X-Received: by 2002:a17:907:3fa9:b0:6ef:f0e6:7285 with SMTP id hr41-20020a1709073fa900b006eff0e67285mr13753720ejc.350.1650838044045; Sun, 24 Apr 2022 15:07:24 -0700 (PDT) Received: from linux.. (p5dd1ed70.dip0.t-ipconnect.de. [93.209.237.112]) by smtp.gmail.com with ESMTPSA id s14-20020aa7cb0e000000b00410bf015567sm3672948edt.92.2022.04.24.15.07.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 Apr 2022 15:07:23 -0700 (PDT) From: Bean Huo To: alim.akhtar@samsung.com, avri.altman@wdc.com, jejb@linux.ibm.com, martin.petersen@oracle.com, stanley.chu@mediatek.com, beanhuo@micron.com, bvanassche@acm.org, tomas.winkler@intel.com, daejun7.park@samsung.com, keosung.park@samsung.com, peter.wang@mediatek.com, powen.kao@mediatek.com Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 3/6] scsi: ufshpb: Cleanup the handler when device reset HPB information Date: Mon, 25 Apr 2022 00:07:10 +0200 Message-Id: <20220424220713.1253049-4-huobean@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220424220713.1253049-1-huobean@gmail.com> References: <20220424220713.1253049-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 167643969165..f1f30d4c3d65 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 20:32:16 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 455DAC433EF for ; Sun, 24 Apr 2022 22:07:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239801AbiDXWKx (ORCPT ); Sun, 24 Apr 2022 18:10:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36610 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239755AbiDXWK2 (ORCPT ); Sun, 24 Apr 2022 18:10:28 -0400 Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com [IPv6:2a00:1450:4864:20::532]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4EE2F5E77B; Sun, 24 Apr 2022 15:07:26 -0700 (PDT) Received: by mail-ed1-x532.google.com with SMTP id p4so799850edx.0; Sun, 24 Apr 2022 15:07:26 -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=+jWtMMAHpQUFdLCMp9InOSTuyV28IhzkfaPkZD8ILYI=; b=JYpz3b/jRwqxBUvI1A+yhTwa26Ulxo9/Rlg4YFc9ToE5TvSXyWl3iC4pLL7iJ7zHZQ tluNnXPAIKlEAwzaVmIp1uIFhLX72mtua6WQQllnQdWnp5PvLS4KM3ZLE78VkeBGYZlv 8lWsinYgxM0FADkU7SQJIv8R84MAhNp+jpwGc0U/8TWDxUoednUta74vqtzxlrbmWpYd +CnahLU/zPdjAZ/Ex5CuPNI1wWONFItIsSQ+HRT/olCE/YvEnu6aOrD4glcl9m5FlcSZ gTWnhKfeWzXVmghbBsvIFsYey+UYxPKsgT0bN0ATEjlB2k6YHR3yuQlvUvHJSizn59XJ +ouw== 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=+jWtMMAHpQUFdLCMp9InOSTuyV28IhzkfaPkZD8ILYI=; b=5dEabJUJ4Y24Pld4Sodhf89Tw5NKlEOQL7AdADHNC+/jZk1MrmqlpuSqPxZYUiqIAY vdj6PBmgmgMzjOmoQvNj3Hbjtah1whry82zU4Y01UP/BbxR7Rm1zzacRa4NaHcnxeUZs 0SXzZADEES6BavLc8MHIDXr+uuAnQm96sZRNKtvkEPcff5D1tdV+OMmHLAXPP7fUNNUn nFCeu8EUNwEXvwIDinpP7ZoHroKZQNqpjVwQGcqc/xuoVSD7EQkIqG+4bvTCtn/xLP71 sStDa06fzwkuAcubslPVVsYMpEdytRgkpaFgUsfkG3ZCwRB7hO/rG98eHD46BBiBt87L rA+g== X-Gm-Message-State: AOAM532YAvwFjeyARk9ryR62knxOHmBfFzwlMOOQyQ6hja2RHfTcaApx sW33k/AJ/csDuG4aKpPvgYs= X-Google-Smtp-Source: ABdhPJwty63lWTDhdkVpVAmODNP6+UhFQrpCRN9we0kjerGz72iP42t0wkhPSoH1kK+Sn7N2jPQcnw== X-Received: by 2002:a05:6402:2747:b0:423:88ab:178f with SMTP id z7-20020a056402274700b0042388ab178fmr16067572edd.163.1650838044931; Sun, 24 Apr 2022 15:07:24 -0700 (PDT) Received: from linux.. (p5dd1ed70.dip0.t-ipconnect.de. [93.209.237.112]) by smtp.gmail.com with ESMTPSA id s14-20020aa7cb0e000000b00410bf015567sm3672948edt.92.2022.04.24.15.07.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 Apr 2022 15:07:24 -0700 (PDT) From: Bean Huo To: alim.akhtar@samsung.com, avri.altman@wdc.com, jejb@linux.ibm.com, martin.petersen@oracle.com, stanley.chu@mediatek.com, beanhuo@micron.com, bvanassche@acm.org, tomas.winkler@intel.com, daejun7.park@samsung.com, keosung.park@samsung.com, peter.wang@mediatek.com, powen.kao@mediatek.com Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 4/6] scsi: ufshpb: Change sysfs node hpb_stats/rb_* prefix to start with rcmd_* Date: Mon, 25 Apr 2022 00:07:11 +0200 Message-Id: <20220424220713.1253049-5-huobean@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220424220713.1253049-1-huobean@gmail.com> References: <20220424220713.1253049-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. I don't know what 'rb' refers to, I think '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. Signed-off-by: Bean Huo Reviewed-by: Keoseong Park --- 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 f1f30d4c3d65..e7f311bb4401 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 20:32:16 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 D4BA1C433EF for ; Sun, 24 Apr 2022 22:07:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239780AbiDXWK4 (ORCPT ); Sun, 24 Apr 2022 18:10:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36644 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239758AbiDXWK2 (ORCPT ); Sun, 24 Apr 2022 18:10:28 -0400 Received: from mail-ej1-x635.google.com (mail-ej1-x635.google.com [IPv6:2a00:1450:4864:20::635]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 25FA35EBDF; Sun, 24 Apr 2022 15:07:27 -0700 (PDT) Received: by mail-ej1-x635.google.com with SMTP id u15so26198925ejf.11; Sun, 24 Apr 2022 15:07:27 -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=2vsmiQJUe+L9B4nsSUBR3/boiLV26o4RTxgSYcrElCg=; b=R1nIdsWQoevN7nyqrA+WIkTtJdsnj5lHHy37A/csEUN602nev8gEwR8PEjPRSsBunM a18RfhfkEY//Fm/8U6v1D4MaK+//XmZSQNtMsKDdpz8Gx3HYGkkJUlJt+ICzEywF+rdu FzuQPHNHFP2p4bFiBzyLQbkqXC+xh0HcwQ9XxJK3nX9AqieVa0QAE/0Kbeegbal5FTLK 4ajSnj4MV9NbtsnmEuWErpkWVGUxT3vwBT/c5qdXOSgwZqYmwxebb6eOlyVD8jC3feZ+ TbzGY8STYzQXFQbBabJMHu7Pq/SO3DfQtVDnJob2TvQEcC4/7wNyA1DiH59ymSDTom+t rgAw== 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=2vsmiQJUe+L9B4nsSUBR3/boiLV26o4RTxgSYcrElCg=; b=ZxuqoM58S9RQBBU+RgzGLfAdZTj394RCIy4viCvtmAopKc6jXCdyuVGVdczJbk+f02 m5736JJk0xPHA6ISel5HlHh8+e0MMOg0p1ckGOV57nhk5YZn9LGx+Ic1ksEohGfX0Gu7 R9YLKkT++JTqJtmL+VtoH0olrgnJzb9mgGlMcWlf2hMBJw4YgMmbh/GWo9mommweWn5V WVpffEOKAyshc8NP8rJxWPlQVxG/7WlO6sFBpA5I5YnjuwjWOjIupgMkkSq2cRvTIfX2 kyNivIC84fn1UksA9m4+jdd9OwLih3gE7MABp2k/Qfiq8jN256ghVHR9a+qvNfnyveHe Dbew== X-Gm-Message-State: AOAM530cTJzxiXjJc8L9EC9y+mQ3vhNHPUg7TdvpFE10JIkQt6Jd2YpQ jSvi3b6Yl7Ifj2dRBT7QATM= X-Google-Smtp-Source: ABdhPJycBKJLoUtwndspbnI5de+2qC2qxYm1iMhSKbLhAJccUP7LWrf29CrAHJNdGhXfV0Kri+Z/sA== X-Received: by 2002:a17:907:60d3:b0:6e7:fcd6:7fb4 with SMTP id hv19-20020a17090760d300b006e7fcd67fb4mr14056843ejc.302.1650838045701; Sun, 24 Apr 2022 15:07:25 -0700 (PDT) Received: from linux.. (p5dd1ed70.dip0.t-ipconnect.de. [93.209.237.112]) by smtp.gmail.com with ESMTPSA id s14-20020aa7cb0e000000b00410bf015567sm3672948edt.92.2022.04.24.15.07.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 Apr 2022 15:07:25 -0700 (PDT) From: Bean Huo To: alim.akhtar@samsung.com, avri.altman@wdc.com, jejb@linux.ibm.com, martin.petersen@oracle.com, stanley.chu@mediatek.com, beanhuo@micron.com, bvanassche@acm.org, tomas.winkler@intel.com, daejun7.park@samsung.com, keosung.park@samsung.com, peter.wang@mediatek.com, powen.kao@mediatek.com Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 5/6] scsi: ufshpb: Add handing of device reset HPB regions Infos in HPB device mode Date: Mon, 25 Apr 2022 00:07:12 +0200 Message-Id: <20220424220713.1253049-6-huobean@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220424220713.1253049-1-huobean@gmail.com> References: <20220424220713.1253049-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 e7f311bb4401..7868412054bf 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 20:32:16 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 A49F8C433EF for ; Sun, 24 Apr 2022 22:08:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239773AbiDXWLA (ORCPT ); Sun, 24 Apr 2022 18:11:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36690 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239759AbiDXWK3 (ORCPT ); Sun, 24 Apr 2022 18:10:29 -0400 Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com [IPv6:2a00:1450:4864:20::632]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ED3565EBE4; Sun, 24 Apr 2022 15:07:27 -0700 (PDT) Received: by mail-ej1-x632.google.com with SMTP id kq17so3122941ejb.4; Sun, 24 Apr 2022 15:07:27 -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=Bs2RZ1HctDBw64PPVPS3C6pCKSaEHfE9IQYgmcStxr8=; b=b2u9VhD247prDS3n7rS0WmOcl/vfomXlP2jbViESjt4BB/UPvIAMLSAS6flZ5Uu7Vx 0cgeZTCmmRQ5oAmTCgIhCh5QNWdthnW+Zc/5F2/gCoKZyQm571V75YL5x8BVE7a32khY nmTlk6poIjwvgOx2G7Qr+0N0MFqtbmJGGvP92cWZXBx29B+PRsO+CtUxqowNJNy21nie +59zDqWA5UlV1yhb9byGWLx8BDMyWWcDCzx8gwdzghYEEpFhT74YJCN4JcqjKGsxEpL2 OEj1ODnfMB3LKqOZVnjagDq/1/s9VKecnlt5UMB91VWc2YSqUJOG7EST6/7dHiwGA5ft Zh8w== 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=Bs2RZ1HctDBw64PPVPS3C6pCKSaEHfE9IQYgmcStxr8=; b=OMwz2MwgWm0Ln5fGccu3nbU1Gwv6awW1qkIFLwd8Br1VDXLs1Mmg1su9xTrp+70cJF iTzaQ5uuMaQvMfOd6+af3R2CIVVskd31L/mvArVmDvvYdf3pn32wDG1luPJZnbDXxt4z 5pOP4tLwr5WBFrySG/NpcfXAaE0AgG/BzOZAozBpIMVCgPN7Q16fDX9UrDSuak22nlwP CDSGueZCE5vlnWyH6WXsdPBkqKLyUpKRXOBFl0tj1Q6QnVTVRzA7aSX8h66jxgVSqZuf efllrDgkad4odAGRxV1QrFGlhdaSs75N9UM8BdfP/8QCEqIQFHseLYZuyKohxkB6QHrB TKpQ== X-Gm-Message-State: AOAM5317JYkuVHTz/0aOHQkdgqVHtYvnM5XZgVGRfKOoPFGHXRTxxD72 ZET6tHAbW5WYyEovkGLIeIA= X-Google-Smtp-Source: ABdhPJxH1PsgGuRfDwnpIh1IDdPTqumcrLEHf2B1k21lgk/TJV9AFAu6jsNrjADnn0nW8ZLvRfa8/w== X-Received: by 2002:a17:907:3ea7:b0:6f3:97f6:611b with SMTP id hs39-20020a1709073ea700b006f397f6611bmr1593071ejc.752.1650838046555; Sun, 24 Apr 2022 15:07:26 -0700 (PDT) Received: from linux.. (p5dd1ed70.dip0.t-ipconnect.de. [93.209.237.112]) by smtp.gmail.com with ESMTPSA id s14-20020aa7cb0e000000b00410bf015567sm3672948edt.92.2022.04.24.15.07.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 Apr 2022 15:07:26 -0700 (PDT) From: Bean Huo To: alim.akhtar@samsung.com, avri.altman@wdc.com, jejb@linux.ibm.com, martin.petersen@oracle.com, stanley.chu@mediatek.com, beanhuo@micron.com, bvanassche@acm.org, tomas.winkler@intel.com, daejun7.park@samsung.com, keosung.park@samsung.com, peter.wang@mediatek.com, powen.kao@mediatek.com Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 6/6] scsi: ufshpb: Cleanup ufshpb_suspend/resume Date: Mon, 25 Apr 2022 00:07:13 +0200 Message-Id: <20220424220713.1253049-7-huobean@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220424220713.1253049-1-huobean@gmail.com> References: <20220424220713.1253049-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 7868412054bf..10f40e390dc5 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