[PATCH v2 1/1] nvme: disable CC.CRIME (NVME_CC_CRIME)

Nilay Shroff nilay at linux.ibm.com
Tue Oct 8 08:45:45 PDT 2024



On 10/8/24 01:03, gjoyce at linux.ibm.com wrote:
> From: Greg Joyce <gjoyce at linux.ibm.com>
> 
> 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 at linux.ibm.com>
> ---
>  drivers/nvme/host/core.c | 14 ++++++++------
>  1 file changed, 8 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> index ba6508455e18..10eca7660ca7 100644
> --- a/drivers/nvme/host/core.c
> +++ b/drivers/nvme/host/core.c
> @@ -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
> +	 * make it possible for media related commands to return the error
> +	 * NVME_SC_ADMIN_COMMAND_MEDIA_NOT_READY. Until the driver is
> +	 * restructurade 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",

Looks good to me.

Reviewed-by: nilay at linux.ibm.com

Tested the above patch on Kioxia disk supporting TCG Opal SED. My test 
confirmed that the patch works as expected and we don't see 
NVME_SC_ADMIN_COMMAND_MEDIA_NOT_READY error during opal discovery or 
any admin command executed during disk initialization.

Tested-by: nilay at linux.ibm.com



More information about the Linux-nvme mailing list