Re: [PATCH v7 0/7] ufs: core: mcq: Add ufshcd_abort() and error handler support in MCQ mode

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

 



Hi Bao,

On Tue, May 30, 2023 at 6:14 AM Bao D. Nguyen <quic_nguyenb@xxxxxxxxxxx> wrote:
>
> This patch series enable support for ufshcd_abort() and error handler in MCQ mode.
>
> Bao D. Nguyen (7):
>   ufs: core: Combine 32-bit command_desc_base_addr_lo/hi
>   ufs: core: Update the ufshcd_clear_cmds() functionality
>   ufs: mcq: Add supporting functions for mcq abort
>   ufs: mcq: Add support for clean up mcq resources
>   ufs: mcq: Added ufshcd_mcq_abort()
>   ufs: mcq: Use ufshcd_mcq_poll_cqe_lock() in mcq mode
>   ufs: core: Add error handling for MCQ mode
>
>  drivers/ufs/core/ufs-mcq.c     | 259 ++++++++++++++++++++++++++++++++++++++++-
>  drivers/ufs/core/ufshcd-priv.h |  18 ++-
>  drivers/ufs/core/ufshcd.c      | 256 ++++++++++++++++++++++++++++++++--------
>  drivers/ufs/host/ufs-qcom.c    |   2 +-
>  include/ufs/ufshcd.h           |   5 +-
>  include/ufs/ufshci.h           |  23 +++-
>  6 files changed, 501 insertions(+), 62 deletions(-)
> ---
> Changes compared to v6:
> patch #7: Added a new argument force_compl to function ufshcd_mcq_compl_pending_transfer().
>           Added a new function ufshcd_mcq_compl_all_cqes_lock().
>           This change is to handle the case where the ufs host controller has been reset by
>           the ufshcd_hba_stop() in ufshcd_host_reset_and_restore() prior to calling
>           ufshcd_complete_requests(). The new logic is added to correctly complete all the
>           commands that have been completed in the Completion Queue, or inform the scsi layer
>           about those commands that are still stuck/pending in the hardware.
> ---
> v5->v6: Addressed Stanley's comments
> patch #1,2,3,4,6: unchanged.
> patch #5: fixed extra erroneous if() statement introduced in version v5
> patch #7: Change ufshcd_complete_requests() to call a new mcq function
>           ufshcd_mcq_compl_pending_transfer(), leaving ufshcd_transfer_req_compl()
>           to be used in SDB mode only.
>
>           Reset the hwq's head and tail slot variables to default values
>           when the ufs host controller hw has been reset.
> ---
> v4->v5:
> patch #4: fixed uninitialized variable access introduced in patch v3.
> ---
> v3->v4: Mainly addressed Bart's comments
> patch #1: updated the commit message
> patch #2: renamed ufshcd_clear_cmds() into ufshcd_clear_cmd()
> patch #3: removed result arg in ufshcd_mcq_sq_cleanup()
> patch #4: removed check for "!rq" in ufshcd_cmd_inflight()
>           avoided access to door bell register in mcq mode
> patch #5, 6: unchanged
> patch #7: ufshcd_clear_cmds() to ufshcd_clear_cmd()
> ---
> v2->v3:
> patch #1:
>   New patch per Bart's comment. Helps process utp cmd
>   descriptor addr easier.
> patch #2:
>   New patch to address Bart's comment regarding potentialoverflow
>   when mcq queue depth becomes greater than 64.
> patch #3:
>   Address Bart's comments
>   . Replaced ufshcd_mcq_poll_register() with read_poll_timeout()
>   . Replace spin_lock(sq_lock) with mutex(sq_mutex)
>   . Updated ufshcd_mcq_nullify_cmd() and renamed to ufshcd_mcq_nullify_sqe()
>   . Minor cosmetic changes
> patch #4:
>   Adress Bart's comments. Added new function ufshcd_cmd_inflight()
>   to replace the usage of lrbp->cmd
> patch #5:
>   Continue replacing lrbp->cmd with ufshcd_cmd_inflight()
> patch #6:
>   No change
> patch #7:
>   Address Stanley Chu's comment about clearing hba->dev_cmd.complete
>   in clear ufshcd_wait_for_dev_cmd()
>   Address Bart's comment.
> ---
> v1->v2:
> patch #1: Addressed Powen's comment. Replaced read_poll_timeout()
> with ufshcd_mcq_poll_register(). The function read_poll_timeout()
> may sleep while the caller is holding a spin_lock(). Poll the registers
> in a tight loop instead.
> --
> 2.7.4
>

Feel free to add below tags to this series,

Reviewed-by: Stanley Chu <stanley.chu@xxxxxxxxxxxx>
Tested-by: Stanley Chu <stanley.chu@xxxxxxxxxxxx>




[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