RE: [PATCH V15 2/2] scsi: ufs: Add configfs support for UFS provisioning

From: Avri Altman
Date: Wed Oct 17 2018 - 04:33:10 EST


Hello Bean,

> >Usage:
> >1) To read current configuration descriptor with index X
> > (where index X can be 0/1/2/3) :
> > cat /config/<device_name>/ufs_config_desc_X
> >
> >2) To write configuration descriptor with index X :
> > echo <config_desc_buf> > /config/<device_name>/ufs_config_desc_X
> >
> >
> I tested on my platform and got these error:
>
> cat /sys/kernel/config/ff3b0000.ufs/ufs_config_desc_0
> 0x90 0x1 0x0 0x1 0x0 0x1 0x7f 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
> 0x1 0x1 0x0 0x3 0x0 0x0 0x0 0x2 0x1 0xc 0x2 0x0 0x0 0x0 0x0 0x0
> 0x1 0x2 0x0 0x3 0x0 0x0 0x0 0x2 0x1 0xc 0x2 0x0 0x0 0x0 0x0 0x0
> 0x1 0x0 0x0 0x3 0x0 0x0 0x0 0x4 0x1 0xc 0x2 0x0 0x0 0x0 0x0 0x0
> 0x1 0x0 0x0 0x0 0x0 0x0 0x1d 0xc7 0x1 0xc 0x2 0x0 0x0 0x0 0x0 0x0
> 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0xc 0x0 0x0 0x0 0x0 0x0 0x0
> 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0xc 0x0 0x0 0x0 0x0 0x0 0x0
> 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0xc 0x0 0x0 0x0 0x0 0x0 0x0
> 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0xc 0x0 0x0 0x0 0x0 0x0 0x0
>
> cat /sys/kernel/config/ff3b0000.ufs/ufs_config_desc_1
> [ 63.631734] ufshcd-hisi ff3b0000.ufs: __ufshcd_query_descriptor: opcode
> 0x01 for idn 1 failed, index 1, err = 252
> [ 63.643059] ufshcd-hisi ff3b0000.ufs: __ufshcd_query_descriptor: opcode
> 0x01 for idn 1 failed, index 1, err = 252
> [ 63.653602] ufshcd-hisi ff3b0000.ufs: __ufshcd_query_descriptor: opcode
> 0x01 for idn 1 failed, index 1, err = 252
This actually does not imply an error, just that your device is currently configured
With 4 luns (2 of them are bootluns), as config_desc_0 shows.
config_desc_0 also indicate that there are no other config descriptors -
the 3rd byte of its header is 0x0.

It would be interesting to test however, a write operation with index 0x1 to this device.
The current code is trying to override the config descriptor with the new configuration -
That is, it reads it first, and then re-writes it.
I would expect that this will fail if the you are trying to read descriptor with an index that does not exist.

Thanks,
Avri



> cat /sys/kernel/config/ff3b0000.ufs/ufs_config_desc_2
> [ 77.946097] ufshcd-hisi ff3b0000.ufs: __ufshcd_query_descriptor: opcode
> 0x01 for idn 1 failed, index 2, err = 252
> [ 77.957212] ufshcd-hisi ff3b0000.ufs: __ufshcd_query_descriptor: opcode
> 0x01 for idn 1 failed, index 2, err = 252
> [ 77.968534] ufshcd-hisi ff3b0000.ufs: __ufshcd_query_descriptor: opcode
> 0x01 for idn 1 failed, index 2, err = 252
> cat /sys/kernel/config/ff3b0000.ufs/ufs_config_desc_3
> [ 82.237656] ufshcd-hisi ff3b0000.ufs: __ufshcd_query_descriptor: opcode
> 0x01 for idn 1 failed, index 3, err = 252
> [ 82.248374] ufshcd-hisi ff3b0000.ufs: __ufshcd_query_descriptor: opcode
> 0x01 for idn 1 failed, index 3, err = 252
> [ 82.259117] ufshcd-hisi ff3b0000.ufs: __ufshcd_query_descriptor: opcode
> 0x01 for idn 1 failed, index 3, err = 252