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

From: Bean Huo (beanhuo)
Date: Wed Oct 17 2018 - 03:56:28 EST


Hi, Sayali

>Subject: [EXT] [PATCH V15 2/2] scsi: ufs: Add configfs support for UFS
>provisioning
>
>This patch adds configfs support to provision UFS device at runtime. This
>feature can be primarily useful in factory or assembly line as some devices
>may be required to be configured multiple times during initial system
>development phase.
>Configuration Descriptors can be written multiple times until
>bConfigDescrLock attribute is zero.
>
>Configuration descriptor buffer consists of Device and Unit descriptor
>configurable parameters which are parsed from vendor specific provisioning
>file and then passed via configfs node at runtime to provision ufs device.
>CONFIG_CONFIGFS_FS and CONFIG_SCSI_UFS_PROVISION needs to be enabled
>for using this feature.
>
>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
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