]> www.infradead.org Git - nvme.git/commitdiff
nvme: disable CC.CRIME (NVME_CC_CRIME)
authorGreg Joyce <gjoyce@linux.ibm.com>
Mon, 7 Oct 2024 19:33:24 +0000 (14:33 -0500)
committerKeith Busch <kbusch@kernel.org>
Wed, 9 Oct 2024 21:45:19 +0000 (14:45 -0700)
Disable NVME_CC_CRIME so that CSTS.RDY indicates that the media
is ready and able to handle commands without returning
NVME_SC_ADMIN_COMMAND_MEDIA_NOT_READY.

Signed-off-by: Greg Joyce <gjoyce@linux.ibm.com>
Reviewed-by: Nilay Shroff <nilay@linux.ibm.com>
Tested-by: Nilay Shroff <nilay@linux.ibm.com>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/host/core.c

index ba6508455e185fc6a3331580a5b61bc9c4b7a922..9e7e63e10e5a81567e7f416ad587c14344f60c25 100644 (file)
@@ -2458,8 +2458,13 @@ int nvme_enable_ctrl(struct nvme_ctrl *ctrl)
        else
                ctrl->ctrl_config = NVME_CC_CSS_NVM;
 
-       if (ctrl->cap & NVME_CAP_CRMS_CRWMS && ctrl->cap & NVME_CAP_CRMS_CRIMS)
-               ctrl->ctrl_config |= NVME_CC_CRIME;
+       /*
+        * Setting CRIME results in CSTS.RDY before the media is ready. This
+        * makes it possible for media related commands to return the error
+        * NVME_SC_ADMIN_COMMAND_MEDIA_NOT_READY. Until the driver is
+        * restructured to handle retries, disable CC.CRIME.
+        */
+       ctrl->ctrl_config &= ~NVME_CC_CRIME;
 
        ctrl->ctrl_config |= (NVME_CTRL_PAGE_SHIFT - 12) << NVME_CC_MPS_SHIFT;
        ctrl->ctrl_config |= NVME_CC_AMS_RR | NVME_CC_SHN_NONE;
@@ -2489,10 +2494,7 @@ int nvme_enable_ctrl(struct nvme_ctrl *ctrl)
                 * devices are known to get this wrong. Use the larger of the
                 * two values.
                 */
-               if (ctrl->ctrl_config & NVME_CC_CRIME)
-                       ready_timeout = NVME_CRTO_CRIMT(crto);
-               else
-                       ready_timeout = NVME_CRTO_CRWMT(crto);
+               ready_timeout = NVME_CRTO_CRWMT(crto);
 
                if (ready_timeout < timeout)
                        dev_warn_once(ctrl->device, "bad crto:%x cap:%llx\n",