Message ID | 041c7204703ed2ee7563344e935921dffa34ccfb.1725251103.git.kwmad.kim@samsung.com (mailing list archive) |
---|---|
State | Rejected |
Headers | show |
Series | scsi: ufs: introduce a callback to override OCS value | expand |
On 9/1/24 9:26 PM, Kiwoong Kim wrote: > Exynos host reports OCS_ABORT when a command is nullifed > or cleaned up with MCQ enabled. That is the behavior that is required by the UFSHCI 4.0 standard. Hence, handling the OCS_ABORTED response should be the same for all host controllers and no new callback function should be introduced to handle nullified commands. > I think the command in those > situations should be issued again, rather than fail, because > when some conditions that caused the nullification or cleaning up > disppears after recovery, the command could be processed. ufshcd_mcq_nullify_sqe() is called by ufshcd_mcq_sqe_search() and the latter function is called by ufshcd_mcq_abort(). It is up to the SCSI core to decide whether or not commands aborted by ufshcd_mcq_abort() should be resubmitted. This is not something the host driver should decide about. Thanks, Bart.
diff --git a/drivers/ufs/host/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c index 16ad3528d80b..7ff0e84adaab 100644 --- a/drivers/ufs/host/ufs-exynos.c +++ b/drivers/ufs/host/ufs-exynos.c @@ -1376,6 +1376,13 @@ static void exynos_ufs_fmp_resume(struct ufs_hba *hba) #endif /* !CONFIG_SCSI_UFS_CRYPTO */ +static enum utp_ocs exynos_ufs_override_cqe_ocs(enum utp_ocs ocs) +{ + if (ocs == OCS_ABORTED) + ocs = OCS_INVALID_COMMAND_STATUS; + return ocs; +} + static int exynos_ufs_init(struct ufs_hba *hba) { struct device *dev = hba->dev; @@ -1926,6 +1933,7 @@ static const struct ufs_hba_variant_ops ufs_hba_exynos_ops = { .suspend = exynos_ufs_suspend, .resume = exynos_ufs_resume, .fill_crypto_prdt = exynos_ufs_fmp_fill_prdt, + .override_cqe_ocs = exynos_ufs_override_cqe_ocs, }; static struct ufs_hba_variant_ops ufs_hba_exynosauto_vh_ops = {
Exynos host reports OCS_ABORT when a command is nullifed or cleaned up with MCQ enabled. I think the command in those situations should be issued again, rather than fail, because when some conditions that caused the nullification or cleaning up disppears after recovery, the command could be processed. Signed-off-by: Kiwoong Kim <kwmad.kim@samsung.com> --- drivers/ufs/host/ufs-exynos.c | 8 ++++++++ 1 file changed, 8 insertions(+)