Hi Jon, On Tue, Oct 19, 2021 at 10:41 AM Jon Lin <jon....@rock-chips.com> wrote: > > Most NVME devcies maintain data in internal cache for an uncertain > times, and u-boot has no method to force NVME to flush cache. > So this patch adds FUA to avoid data loss caused by power off after data > programming. > > Signed-off-by: Jon Lin <jon....@rock-chips.com> > Reviewed-by: Stefan Agner <ste...@agner.ch> > --- > > Changes in v3: > Only enable FUA when vwc is enabled > > drivers/nvme/nvme.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c > index 3c529a2fce..9623c896a1 100644 > --- a/drivers/nvme/nvme.c > +++ b/drivers/nvme/nvme.c > @@ -762,6 +762,10 @@ static ulong nvme_blk_rw(struct udevice *udev, lbaint_t > blknr, > c.rw.appmask = 0; > c.rw.metadata = 0; > > + /* Enable FUA for data integrity if vwc is enabled */ > + if (dev->vwc)
Still this does not look correct to me. The dev->vwc field only indicates the presence of the Volatile Write Cache, but not the enable status of it. > + c.rw.control |= NVME_RW_FUA; > + > while (total_lbas) { > if (total_lbas < lbas) { > lbas = (u16)total_lbas; Regards, Bin