linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* RE: [PATCH v4 3/6] scsi: ufshpb: Cleanup the handler when device reset HPB information
       [not found] <CGME20220505134730epcas2p1423c1274105c2611825a692ca7375f6e@epcms2p2>
@ 2022-05-10  1:03 ` Daejun Park
  0 siblings, 0 replies; 2+ messages in thread
From: Daejun Park @ 2022-05-10  1:03 UTC (permalink / raw)
  To: Bean Huo, ALIM AKHTAR, avri.altman, asutoshd, jejb,
	martin.petersen, stanley.chu, bvanassche, tomas.winkler, cang,
	Daejun Park, peter.wang, powen.kao, Keoseong Park, cpgsproxy3
  Cc: linux-scsi, linux-kernel

Hi Bean Huo,
 
>From: Bean Huo <beanhuo@micron.com>
> 
>"When the device is powered off by the host, the device may restore L2P map data
>upon power up or build from the host’s HPB READ command. In case device powered
>up and lost HPB information, device can signal to the host through HPB Sense data,
>by setting HPB Operation as ‘2’ 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 more
>readable, no functional change.
> 
>Signed-off-by: Bean Huo <beanhuo@micron.com>
>Reviewed-by: Keoseong Park <keosung.park@samsung.com>
 
Here is my reviewed-by tag.
Reviewed-by: Daejun Park <daejun7.park@samsung.com>
 
Thanks,
Daejun
 

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [PATCH v4 3/6] scsi: ufshpb: Cleanup the handler when device reset HPB information
  2022-05-05 13:47 [PATCH v4 0/6] Several changes for UFSHPB Bean Huo
@ 2022-05-05 13:47 ` Bean Huo
  0 siblings, 0 replies; 2+ messages in thread
From: Bean Huo @ 2022-05-05 13:47 UTC (permalink / raw)
  To: alim.akhtar, avri.altman, asutoshd, jejb, martin.petersen,
	stanley.chu, beanhuo, bvanassche, tomas.winkler, cang,
	daejun7.park, peter.wang, powen.kao, keosung.park
  Cc: linux-scsi, linux-kernel

From: Bean Huo <beanhuo@micron.com>

"When the device is powered off by the host, the device may restore L2P map data
upon power up or build from the host’s HPB READ command. In case device powered
up and lost HPB information, device can signal to the host through HPB Sense data,
by setting HPB Operation as ‘2’ 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 more
readable, no functional change.

Signed-off-by: Bean Huo <beanhuo@micron.com>
Reviewed-by: Keoseong Park <keosung.park@samsung.com>
---
 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 ufshpb_lu *hpb,
 		queue_work(ufshpb_wq, &hpb->map_work);
 }
 
-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 = &hpb->lru_info;
 	struct ufshpb_region *rgn;
@@ -1239,6 +1242,24 @@ static void ufshpb_dev_reset_handler(struct ufshpb_lu *hpb)
 	spin_unlock_irqrestore(&hpb->rgn_state_lock, flags);
 }
 
+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 = 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 sense
  * data field of response UPIU with SAM_STAT_GOOD state.
@@ -1313,17 +1334,7 @@ void ufshpb_rsp_upiu(struct ufs_hba *hba, struct ufshcd_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 = sdev->hostdata;
-
-				if (h)
-					ufshpb_dev_reset_handler(h);
-			}
-		}
+		ufshpb_dev_reset_handler(hba);
 
 		break;
 	default:
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-05-10  1:58 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CGME20220505134730epcas2p1423c1274105c2611825a692ca7375f6e@epcms2p2>
2022-05-10  1:03 ` [PATCH v4 3/6] scsi: ufshpb: Cleanup the handler when device reset HPB information Daejun Park
2022-05-05 13:47 [PATCH v4 0/6] Several changes for UFSHPB Bean Huo
2022-05-05 13:47 ` [PATCH v4 3/6] scsi: ufshpb: Cleanup the handler when device reset HPB information Bean Huo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).