[PATCH v1 2/5] drivers: nvme: Implement NVMe flush command (0x0)

dmukhin at ford.com dmukhin at ford.com
Fri May 29 05:36:05 CEST 2026


On Thu, May 28, 2026 at 11:28:33AM +0200, Neil Armstrong wrote:
> Hi,
> 
> On 5/28/26 03:20, dmukhin at ford.com wrote:
> > From: Denis Mukhin <dmukhin at ford.com>
> > 
> > Add flush command implementation along with a high-level
> > disk_blk_flush() API to be called at certain checkpoints
> > during the boot (e.g. updating custom bootflow flags stored
> > on NVMe).
> 
> First general comment, please split the patch by adding the
> flush infrastructure first and then the nvme support.

Will do, thanks.

> 
> The for NVMe, can it support write-through like SCSI FUA (Force Unit
> Access) which bypasses the cache on writes, with slower writes
> but safer and simpler than calling a flush before OS boot.

Yes, I've seen there was FUA patch [1], which was then reverted [2].

For our purposes, flush seems to be enough: the use case is
updating NVMe-backed boot counter from a custom bootflow.

[1] https://lore.kernel.org/u-boot/20211019104049.v3.1.Ic581ec99f46b6dfa2e0b1922e670a333ac859e82@changeid/
[2] https://lore.kernel.org/u-boot/CAGi-RUL96GK5nfHx73UQQd_4sFByt3gNwqhFpHps+h58S20JwQ@mail.gmail.com/

[..]
> >   /**
> >    * blk_find_device() - Find a block device
> >    *
> > @@ -559,6 +577,16 @@ static inline ulong blk_derase(struct blk_desc *block_dev, lbaint_t start,
> >   	return block_dev->block_erase(block_dev, start, blkcnt);
> >   }
> > +static inline ulong blk_dflush(struct blk_desc *block_dev)
> > +{
> > +	blkcache_invalidate(block_dev->uclass_id, block_dev->devnum);
> 
> Call blkcache_invalidate only if flush cmd is supported

Ack.

> 
> > +
> > +	if (block_dev->block_flush)
> > +		return block_dev->block_flush(block_dev);
> > +
> > +	return 0;
> 
> Why do you return success here and not from blk_flush() when flush is not supported?

Will update.


Thanks,
Denis


More information about the U-Boot mailing list