RE: Please check ufshpb init flow

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> 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.
According to you, is ufshpb_issue_umap_all_req used only for host reset?
During boottime, the problem is that the hpb is set to the last LUN, write buffer command is sent before sd_probe completes.
so, instead of performing unmap, UAC is returned. 
If ufshpb_issue_umap_all_req is not needed in cold boot, it seems necessary to move it to an appropriate location or remove
> 
> 
> 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





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux