Hi Avri, > +static int ufshpb_get_dev_info(struct ufs_hba *hba, > > + struct ufshpb_dev_info *hpb_dev_info, > > + u8 *desc_buf) > > +{ > > + int ret; > > + int version; > > + u8 hpb_mode; > Maybe before doing anything, first verify that all descriptors are in the proper size? Before reading descriptor, ufshcd_map_desc_id_to_length() may check descriptor size. So I deleted size checking codes. static int ufshpb_read_desc(struct ufs_hba *hba, u8 desc_id, u8 desc_index, u8 selector, u8 *desc_buf) { int err = 0; int size; -> ufshcd_map_desc_id_to_length(hba, desc_id, &size); pm_runtime_get_sync(hba->dev); err = ufshcd_query_descriptor_retry(hba, UPIU_QUERY_OPCODE_READ_DESC, desc_id, desc_index, selector, desc_buf, &size); > > +#define UFSHPB_WRITE_BUFFER_ID 0x02 > Should be 0x01 for HPB1.0 OK. Thanks, Daejun