it's for "Inactivating all HPB regions" after reboot scsi_add_lun()...>ufshpb_issue_umap_all_req(hpb); if it is a cold reboot on both host side and UFS device side, it is not necessary to issue this write buffer. On Fri, 2021-11-19 at 02:31 +0000, 정요한(JOUNG YOHAN) Mobile SE wrote: > Hi daejun > > Please check ufshpb init flow. > sending write buffer(0x03) seems spec violation (JESD220 Commands for > exceptional behavior on UAC, SAM 5r05) before UAC clear (sd_probe). > Anyway hpb reset query(ufshpb_check_hpb_reset_query) seems > sufficient. > Why do we need to send write buffer? > > void ufshpb_init_hpb_lu(struct ufs_hba *hba, struct scsi_device > *sdev) > { > out: > /* All LUs are initialized */ > if (atomic_dec_and_test(&hba->ufshpb_dev.slave_conf_cnt)) > There seems to be a problem with this logic. > If hpb is set on the last LUN, write buffer command is sent > before sd_probe completes. > ufshpb_hpb_lu_prepared(hba); > } > > static void ufshpb_hpb_lu_prepared(struct ufs_hba *hba) > { > > init_success = !ufshpb_check_hpb_reset_query(hba); > > shost_for_each_device(sdev, hba->host) { > hpb = ufshpb_get_hpb_data(sdev); > if (!hpb) > continue; > > if (init_success) { > ufshpb_set_state(hpb, HPB_PRESENT); > if ((hpb->lu_pinned_end - hpb->lu_pinned_start) > 0) > queue_work(ufshpb_wq, &hpb->map_work); > if (!hpb->is_hcm) > ufshpb_issue_umap_all_req(hpb); > This seems unnecessary. > > } else { > > Thanks > yohan