mbox series

[v4,0/4] ufs: core: Always read the descriptors with max length

Message ID 1669550910-9672-1-git-send-email-Arthur.Simchaev@wdc.com
Headers show
Series ufs: core: Always read the descriptors with max length | expand

Message

Arthur Simchaev Nov. 27, 2022, 12:08 p.m. UTC
v3--v4:
  Add "Reviewed-by" to patch's commits
  Use kzalloc instead of kmalloc in drivers/ufs/core/ufshcd.c - patch 2/4

v2--v3:
  Based on Bean's comments:
  1)Use kzalloc instead of kmalloc in ufshcd_set_active_icc_lvl - patch 2/4
  2)Delete  UFS_RPMB_UNIT definition - patch 2/4
  3)Delete len description - patch 3/4

v1--v2:
  Fix argument warning in ufshpb.c

Read any descriptor with a maximum size of QUERY_DESC_MAX_SIZE.
According to the spec the device rerurns the actual size.
Thus can improve code readability and save CPU cycles.
While at it, cleanup few leftovers around the descriptor size parameter.

Suggested-by: Bean Huo <beanhuo@micron.com>

Arthur Simchaev (4):
  ufs:core: Remove redundant wb check
  ufs:core: Remove redundant desc_size variable from hba
  ufs: core: Remove len parameter from ufshcd_set_active_icc_lvl
  ufs: core: Remove ufshcd_map_desc_id_to_length function

 drivers/ufs/core/ufs_bsg.c     |   7 +--
 drivers/ufs/core/ufshcd-priv.h |   3 --
 drivers/ufs/core/ufshcd.c      | 100 ++++++++++-------------------------------
 drivers/ufs/core/ufshpb.c      |   5 +--
 include/ufs/ufshcd.h           |   1 -
 5 files changed, 26 insertions(+), 90 deletions(-)

Comments

Arthur Simchaev Dec. 4, 2022, 1:22 p.m. UTC | #1
Hi Martin, 

Gentle reminder

Regards
Arthur

> -----Original Message-----
> From: Arthur Simchaev <Arthur.Simchaev@wdc.com>
> Sent: Sunday, November 27, 2022 2:08 PM
> To: martin.petersen@oracle.com
> Cc: beanhuo@micron.com; linux-scsi@vger.kernel.org; linux-
> kernel@vger.kernel.org; Arthur Simchaev <Arthur.Simchaev@wdc.com>
> Subject: [PATCH v4 0/4] ufs: core: Always read the descriptors with max length
> 
> v3--v4:
>   Add "Reviewed-by" to patch's commits
>   Use kzalloc instead of kmalloc in drivers/ufs/core/ufshcd.c - patch 2/4
> 
> v2--v3:
>   Based on Bean's comments:
>   1)Use kzalloc instead of kmalloc in ufshcd_set_active_icc_lvl - patch 2/4
>   2)Delete  UFS_RPMB_UNIT definition - patch 2/4
>   3)Delete len description - patch 3/4
> 
> v1--v2:
>   Fix argument warning in ufshpb.c
> 
> Read any descriptor with a maximum size of QUERY_DESC_MAX_SIZE.
> According to the spec the device rerurns the actual size.
> Thus can improve code readability and save CPU cycles.
> While at it, cleanup few leftovers around the descriptor size parameter.
> 
> Suggested-by: Bean Huo <beanhuo@micron.com>
> 
> Arthur Simchaev (4):
>   ufs:core: Remove redundant wb check
>   ufs:core: Remove redundant desc_size variable from hba
>   ufs: core: Remove len parameter from ufshcd_set_active_icc_lvl
>   ufs: core: Remove ufshcd_map_desc_id_to_length function
> 
>  drivers/ufs/core/ufs_bsg.c     |   7 +--
>  drivers/ufs/core/ufshcd-priv.h |   3 --
>  drivers/ufs/core/ufshcd.c      | 100 ++++++++++-------------------------------
>  drivers/ufs/core/ufshpb.c      |   5 +--
>  include/ufs/ufshcd.h           |   1 -
>  5 files changed, 26 insertions(+), 90 deletions(-)
> 
> --
> 2.7.4
Martin K. Petersen Dec. 7, 2022, 3:48 a.m. UTC | #2
Hi Arthur!

> Gentle reminder

We're just a few days away from release, not adding new code this late
in the cycle. I would also like to see an additional review given that
this is a core change.
Bart Van Assche Dec. 7, 2022, 11:31 p.m. UTC | #3
On 11/27/22 04:08, Arthur Simchaev wrote:
> We used to use the extended-feature field in the device descriptor,
> as an indication that the device supports ufs2.2 or later.
> Remove that as this check is specifically done few lines above.
> 
> Reviewed-by: Bean Huo <beanhuo@micron.com>
> Signed-off-by: Arthur Simchaev <Arthur.Simchaev@wdc.com>
> ---
>   drivers/ufs/core/ufshcd.c | 4 ----
>   1 file changed, 4 deletions(-)
> 
> diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
> index 2dbe249..2e47c69 100644
> --- a/drivers/ufs/core/ufshcd.c
> +++ b/drivers/ufs/core/ufshcd.c
> @@ -7608,10 +7608,6 @@ static void ufshcd_wb_probe(struct ufs_hba *hba, const u8 *desc_buf)
>   	     (hba->dev_quirks & UFS_DEVICE_QUIRK_SUPPORT_EXTENDED_FEATURES)))
>   		goto wb_disabled;
>   
> -	if (hba->desc_size[QUERY_DESC_IDN_DEVICE] <
> -	    DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP + 4)
> -		goto wb_disabled;
> -
>   	ext_ufs_feature = get_unaligned_be32(desc_buf +
>   					DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP);

Does this code really have to be removed? I see a check of the
UFS_DEVICE_QUIRK_SUPPORT_EXTENDED_FEATURES flag above the removed
code but no check of the descriptor size?

Thanks,

Bart.
Bart Van Assche Dec. 7, 2022, 11:48 p.m. UTC | #4
On 11/27/22 04:08, Arthur Simchaev wrote:
> len argument is not used anymore in ufshcd_set_active_icc_lvl function.

Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Bean Huo Dec. 8, 2022, 12:22 p.m. UTC | #5
On 08.12.22 12:31 AM, Bart Van Assche wrote:
> On 11/27/22 04:08, Arthur Simchaev wrote:
>> We used to use the extended-feature field in the device descriptor,
>> as an indication that the device supports ufs2.2 or later.
>> Remove that as this check is specifically done few lines above.
>>
>> Reviewed-by: Bean Huo <beanhuo@micron.com>
>> Signed-off-by: Arthur Simchaev <Arthur.Simchaev@wdc.com>
>> ---
>>   drivers/ufs/core/ufshcd.c | 4 ----
>>   1 file changed, 4 deletions(-)
>>
>> diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
>> index 2dbe249..2e47c69 100644
>> --- a/drivers/ufs/core/ufshcd.c
>> +++ b/drivers/ufs/core/ufshcd.c
>> @@ -7608,10 +7608,6 @@ static void ufshcd_wb_probe(struct ufs_hba 
>> *hba, const u8 *desc_buf)
>>            (hba->dev_quirks & 
>> UFS_DEVICE_QUIRK_SUPPORT_EXTENDED_FEATURES)))
>>           goto wb_disabled;
>>   -    if (hba->desc_size[QUERY_DESC_IDN_DEVICE] <
>> -        DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP + 4)
>> -        goto wb_disabled;
>> -
>>       ext_ufs_feature = get_unaligned_be32(desc_buf +
>>                       DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP);
>
> Does this code really have to be removed? I see a check of the
> UFS_DEVICE_QUIRK_SUPPORT_EXTENDED_FEATURES flag above the removed
> code but no check of the descriptor size?
>
it is not necessary to check this, but if you have concern, we could 
change to like this:


         if (desc_buf[DEVICE_DESC_PARAM_LEN] <
             DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP + 4)
                 goto wb_disabled;

then   hba->desc_size could be removed.

Kind regards,

Bean
Bart Van Assche Dec. 8, 2022, 5:28 p.m. UTC | #6
On 12/8/22 04:22, Bean Huo wrote:
> 
> On 08.12.22 12:31 AM, Bart Van Assche wrote:
>> On 11/27/22 04:08, Arthur Simchaev wrote:
>>> We used to use the extended-feature field in the device descriptor,
>>> as an indication that the device supports ufs2.2 or later.
>>> Remove that as this check is specifically done few lines above.
>>>
>>> Reviewed-by: Bean Huo <beanhuo@micron.com>
>>> Signed-off-by: Arthur Simchaev <Arthur.Simchaev@wdc.com>
>>> ---
>>>   drivers/ufs/core/ufshcd.c | 4 ----
>>>   1 file changed, 4 deletions(-)
>>>
>>> diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
>>> index 2dbe249..2e47c69 100644
>>> --- a/drivers/ufs/core/ufshcd.c
>>> +++ b/drivers/ufs/core/ufshcd.c
>>> @@ -7608,10 +7608,6 @@ static void ufshcd_wb_probe(struct ufs_hba 
>>> *hba, const u8 *desc_buf)
>>>            (hba->dev_quirks & 
>>> UFS_DEVICE_QUIRK_SUPPORT_EXTENDED_FEATURES)))
>>>           goto wb_disabled;
>>>   -    if (hba->desc_size[QUERY_DESC_IDN_DEVICE] <
>>> -        DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP + 4)
>>> -        goto wb_disabled;
>>> -
>>>       ext_ufs_feature = get_unaligned_be32(desc_buf +
>>>                       DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP);
>>
>> Does this code really have to be removed? I see a check of the
>> UFS_DEVICE_QUIRK_SUPPORT_EXTENDED_FEATURES flag above the removed
>> code but no check of the descriptor size?
>>
> it is not necessary to check this, but if you have concern, we could 
> change to like this:
> 
> 
>          if (desc_buf[DEVICE_DESC_PARAM_LEN] <
>              DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP + 4)
>                  goto wb_disabled;
> 
> then   hba->desc_size could be removed.

Hi Bean,

My only concern is that this patch conflicts with the pending MCQ patch 
series. Since that conflict is unavoidable, let's keep this patch.

Bart.
Bart Van Assche Dec. 8, 2022, 5:29 p.m. UTC | #7
On 11/27/22 04:08, Arthur Simchaev wrote:
> We used to use the extended-feature field in the device descriptor,
> as an indication that the device supports ufs2.2 or later.
> Remove that as this check is specifically done few lines above.

Reviewed-by: Bart Van Assche <bvanassche@acm.org>