public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [PATCH] nvme: Invalidate dcache before submitting admin cmd
@ 2020-06-07 11:22 Jagan Teki
  2020-06-08 13:18 ` Bin Meng
  2020-06-08 13:51 ` André Przywara
  0 siblings, 2 replies; 7+ messages in thread
From: Jagan Teki @ 2020-06-07 11:22 UTC (permalink / raw)
  To: u-boot

Some architecture like ARM Cortex A53, A72 would need
to invalidate dcache to sync the cache with the memory
contents before flushing the cache to memory.

The NVME here submitting the admin command using dma_addr
to the memory without prior cache invalidation. This causing
dma_addr is pointing to an invalid location in the memory
and found the sane nvme_ctrl result.

Below example shows the nvme disk scan result improper result

=> 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
makes the dma_addr points to a valid location in the memory.

Cc: Andre Przywara <andre.przywara@arm.com> 
Reported-by: Suniel Mahesh <sunil@amarulasolutions.com>
Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
Tested-by: Suniel Mahesh <sunil@amarulasolutions.com>
---
 drivers/nvme/nvme.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c
index 0357aba7f1..fc64d93ab8 100644
--- a/drivers/nvme/nvme.c
+++ b/drivers/nvme/nvme.c
@@ -466,6 +466,9 @@ int nvme_identify(struct nvme_dev *dev, unsigned nsid,
 
 	c.identify.cns = cpu_to_le32(cns);
 
+	invalidate_dcache_range(dma_addr,
+				dma_addr + sizeof(struct nvme_id_ctrl));
+
 	ret = nvme_submit_admin_cmd(dev, &c, NULL);
 	if (!ret)
 		invalidate_dcache_range(dma_addr,
-- 
2.25.1

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-06-10 11:27 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-06-07 11:22 [PATCH] nvme: Invalidate dcache before submitting admin cmd Jagan Teki
2020-06-08 13:18 ` Bin Meng
2020-06-08 13:51 ` André Przywara
2020-06-08 13:59   ` Michael Nazzareno Trimarchi
2020-06-09  4:13   ` Bin Meng
2020-06-09 18:47     ` Michael Nazzareno Trimarchi
2020-06-10 11:27       ` André Przywara

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox