[PATCH v4] nvme: reduce firmware activation poll interval

guzebing guzebing1612 at gmail.com
Tue Aug 11 20:23:47 PDT 2026



On 8/12/26 12:46 AM, Keith Busch wrote:
> On Tue, Jul 28, 2026 at 08:17:35PM +0800, guzebing wrote:
>> +static int nvme_wait_ready(struct nvme_ctrl *ctrl, u32 mask, u32 val,
>> +			   u32 timeout, const char *op)
>> +{
>> +	unsigned long timeout_jiffies = jiffies + timeout * HZ;
>> +	u32 csts;
>> +	int ret;
>> +
>> +	ret = nvme_wait_csts(ctrl, mask, val, timeout_jiffies, false, &csts);
>> +	if (ret != -ETIMEDOUT)
>> +		return ret;
>> +
>> +	dev_err(ctrl->device,
>> +		"Device not ready; aborting %s, CSTS=0x%x\n", op, csts);
>> +	return -ENODEV;
> 
> Actually, I'm to back this out for a moment to think about this. I like
> that you've changed the error to ETIMEDOUT for that condition, but I'm
> not sure we need to convert it to ENODEV. None of the callers seem to
> care about the specific error, and the user visible side effect of the
> condition is more informative than ENODEV.
> 
> So if we can get rid of that legacy behavior, then this simplifies even
> more. Thoughts?

When restructuring the polling loop, I tried to preserve the existing
behavior and return values as much as possible. Converting -ETIMEDOUT
to -ENODEV was part of that effort.

However, I agree that -ETIMEDOUT more accurately describes the actual
failure. I checked the callers and confirmed that they do not
distinguish between -ENODEV and -ETIMEDOUT, so propagating -ETIMEDOUT
directly makes sense to me.

Please feel free to fold this change in, or let me know if you would
prefer a v5.

Thanks,
Guzebing




More information about the Linux-nvme mailing list