On Thu, Jun 11, 2020 at 3:18 AM Michael Trimarchi <[email protected]> wrote: > > From: Jagan Teki <[email protected]> > > This patch try to avoids eviction of dirty lines during DMA > transfer. The code right now execute the following step: > > - allocate the buffer > - start a dma operation using the non-coherent dma buffer > - invalidate cache lines associated with the buffer > - read the buffer > > This can lead to reading back not valid information, because the cache > controller could evict dirty cache lines belonging to the buffer *after* > the DMA operation has started to fill the DRAM. > In order to avoid this, a new invalidation is required *before* starting > the DMA operation. The patch just adds an invalidation before submitting > the DMA command. > > Example below shows the nvme disk scan result without the following > patch > > => nvme scan > nvme_get_info_from_identify: nn = 544502629, vwc = 100, > sn = dev_0T, mn = `�\�, fr = t_part, mdts = 105 > > So, invalidating the cache before submitting the admin command, > fix the cpu read. > > Cc: André Przywara <[email protected]> > Reported-by: Suniel Mahesh <[email protected]> > Signed-off-by: Michael Trimarchi <[email protected]> > Signed-off-by: Jagan Teki <[email protected]> > Tested-by: Suniel Mahesh <[email protected]> > --- > V1 -> V2: > Get feedback from André Przywara and > Bin Meng. They help me not only to write a proper commit > message but even make in some English form. > --- > drivers/nvme/nvme.c | 3 +++ > 1 file changed, 3 insertions(+) >
Reviewed-by: Bin Meng <[email protected]>

