summary refs log tree commit diff
path: root/drivers/scsi/ufs/ufshpb.h
diff options
context:
space:
mode:
authorAvri Altman <avri.altman@wdc.com>2021-07-12 12:50:29 +0300
committerMartin K. Petersen <martin.petersen@oracle.com>2021-08-01 16:05:14 -0400
commit3a2c1f6803298c0a8784444cf66645163dd8e61b (patch)
tree54180a17f3b00c19e1f44b15f51f7460cd01920e /drivers/scsi/ufs/ufshpb.h
parent119ee38c10fa34f37f2880af20b957ce55943ed2 (diff)
downloadlinux-3a2c1f6803298c0a8784444cf66645163dd8e61b.tar.gz
scsi: ufs: ufshpb: Add host control mode support to rsp_upiu
In device control mode, the device may recommend the host to either
activate or inactivate a region, and the host should follow. Meaning those
are not actually recommendations, but more of instructions.

Conversely, in host control mode, the recommendation protocol is slightly
changed:

 a) The device may only recommend the host to update a subregion of an
    already-active region. And,

 b) The device may *not* recommend to inactivate a region.

Furthermore, in host control mode, the host may choose not to follow any of
the device's recommendations. However, in case of a recommendation to
update an active and clean subregion, it is better to follow those
recommendation because otherwise the host has no other way to know that
some internal relocation took place.

Link: https://lore.kernel.org/r/20210712095039.8093-3-avri.altman@wdc.com
Reviewed-by: Daejun Park <daejun7.park@samsung.com>
Signed-off-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/ufs/ufshpb.h')
-rw-r--r--drivers/scsi/ufs/ufshpb.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/scsi/ufs/ufshpb.h b/drivers/scsi/ufs/ufshpb.h
index dc168ba08a09..9ab502f82835 100644
--- a/drivers/scsi/ufs/ufshpb.h
+++ b/drivers/scsi/ufs/ufshpb.h
@@ -121,6 +121,8 @@ struct ufshpb_region {
 
 	/* below information is used by lru */
 	struct list_head list_lru_rgn;
+	unsigned long rgn_flags;
+#define RGN_FLAG_DIRTY 0
 };
 
 #define for_each_sub_region(rgn, i, srgn)				\