Hi Stanley, Few more nits. Thanks, Avri > > According to UFS specification, there are two WriteBooster mode of > operations: "LU dedicated buffer" mode and "shared buffer" mode. > In the "LU dedicated buffer" mode, the WriteBooster Buffer is > dedicated to a logical unit. > > If the device supports the "LU dedicated buffer" mode, this mode is > configured by setting bWriteBoosterBufferType to 00h. The logical > unit WriteBooster Buffer size is configured by setting the > dLUNumWriteBoosterBufferAllocUnits field of the related Unit > Descriptor. Only a value greater than zero enables the WriteBooster > feature in the logical unit. > > Modify ufshcd_wb_probe() as above description to support LU Dedicated > buffer mode. > > Note that according to UFS 3.1 specification, the valid value of > bDeviceMaxWriteBoosterLUs parameter in Geometry Descriptor is 1, > which means at most one LUN can have WriteBooster buffer in "LU > dedicated buffer mode". Therefore this patch supports only one > LUN with WriteBooster enabled. All WriteBooster related sysfs nodes > are specifically mapped to the LUN with WriteBooster enabled in > LU Dedicated buffer mode. > > Signed-off-by: Stanley Chu <stanley.chu@xxxxxxxxxxxx> > --- > drivers/scsi/ufs/ufs-sysfs.c | 14 ++++++++- > drivers/scsi/ufs/ufs.h | 7 +++++ > drivers/scsi/ufs/ufshcd.c | 60 +++++++++++++++++++++++++++++------- > drivers/scsi/ufs/ufshcd.h | 1 + > 4 files changed, 70 insertions(+), 12 deletions(-) > > diff --git a/drivers/scsi/ufs/ufs-sysfs.c b/drivers/scsi/ufs/ufs-sysfs.c > index b86b6a40d7e6..a162f63098e5 100644 > --- a/drivers/scsi/ufs/ufs-sysfs.c > +++ b/drivers/scsi/ufs/ufs-sysfs.c > @@ -622,16 +622,28 @@ static const struct attribute_group > ufs_sysfs_string_descriptors_group = { > .attrs = ufs_sysfs_string_descriptors, > }; > > +static bool ufshcd_is_wb_flags(enum flag_idn idn) Inline? And just return (idn >= QUERY_FLAG_IDN_WB_EN && idn <= QUERY_FLAG_IDN_WB_BUFF_FLUSH_DURING_HIBERN8) > +{ > + if (idn >= QUERY_FLAG_IDN_WB_EN && > + idn <= QUERY_FLAG_IDN_WB_BUFF_FLUSH_DURING_HIBERN8) > + return true; > + else > + return false; > +} > + > > +int ufshcd_wb_get_flag_index(struct ufs_hba *hba) > +{ > + if (hba->dev_info.b_wb_buffer_type == > WB_BUF_MODE_LU_DEDICATED) > + return hba->dev_info.wb_dedicated_lu; > + else No need for else. Maybe make this static inline in ufshcd.h? > + return 0; > +} > +