]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
scsi: ufs: core: Make the reserved slot a reserved request
authorBart Van Assche <bvanassche@acm.org>
Fri, 31 Oct 2025 20:39:29 +0000 (13:39 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 12 Nov 2025 22:02:33 +0000 (17:02 -0500)
Instead of letting the SCSI core allocate hba->nutrs - 1 commands, let
the SCSI core allocate hba->nutrs commands, set the number of reserved
tags to 1 and use the reserved tag for device management commands. This
patch changes the 'reserved slot' from hba->nutrs - 1 into 0 because the
block layer reserves the smallest tags for reserved commands.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://patch.msgid.link/20251031204029.2883185-22-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ufs/core/ufshcd.c

index f6eecc03282a097175b9af86501f2f3f9b9166ec..20eae5d9487b4a581969effb25130d5fcd697fc8 100644 (file)
@@ -2476,7 +2476,7 @@ static inline int ufshcd_hba_capabilities(struct ufs_hba *hba)
        hba->nutrs = (hba->capabilities & MASK_TRANSFER_REQUESTS_SLOTS_SDB) + 1;
        hba->nutmrs =
        ((hba->capabilities & MASK_TASK_MANAGEMENT_REQUEST_SLOTS) >> 16) + 1;
-       hba->reserved_slot = hba->nutrs - 1;
+       hba->reserved_slot = 0;
 
        hba->nortt = FIELD_GET(MASK_NUMBER_OUTSTANDING_RTT, hba->capabilities) + 1;
 
@@ -8945,7 +8945,6 @@ static int ufshcd_alloc_mcq(struct ufs_hba *hba)
                goto err;
 
        hba->host->can_queue = hba->nutrs - UFSHCD_NUM_RESERVED;
-       hba->reserved_slot = hba->nutrs - UFSHCD_NUM_RESERVED;
 
        return 0;
 err:
@@ -9184,6 +9183,7 @@ static const struct scsi_host_template ufshcd_driver_template = {
        .proc_name              = UFSHCD,
        .map_queues             = ufshcd_map_queues,
        .queuecommand           = ufshcd_queuecommand,
+       .nr_reserved_cmds       = UFSHCD_NUM_RESERVED,
        .mq_poll                = ufshcd_poll,
        .sdev_init              = ufshcd_sdev_init,
        .sdev_configure         = ufshcd_sdev_configure,