The host memory doorbell and event buffers need to be initialized on
each reset so the driver doesn't observe stale values from the previous
instantiation.
Signed-off-by: Keith Busch <kbusch@kernel.org>
Tested-by: John Levon <john.levon@nutanix.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
 {
        unsigned int mem_size = nvme_dbbuf_size(dev);
 
-       if (dev->dbbuf_dbs)
+       if (dev->dbbuf_dbs) {
+               /*
+                * Clear the dbbuf memory so the driver doesn't observe stale
+                * values from the previous instantiation.
+                */
+               memset(dev->dbbuf_dbs, 0, mem_size);
+               memset(dev->dbbuf_eis, 0, mem_size);
                return 0;
+       }
 
        dev->dbbuf_dbs = dma_alloc_coherent(dev->dev, mem_size,
                                            &dev->dbbuf_dbs_dma_addr,