nvme-pci: Remap CMB SQ entries on every controller reset
authorKeith Busch <keith.busch@intel.com>
Tue, 13 Feb 2018 12:44:44 +0000 (05:44 -0700)
committerKeith Busch <keith.busch@intel.com>
Wed, 14 Feb 2018 00:09:50 +0000 (17:09 -0700)
commit815c6704bf9f1c59f3a6be380a4032b9c57b12f1
treef0accfbfe902638156509dd7f31f3fd597abf1c1
parent3fd176b754e992e1cdf1693ea8184626d1ed7671
nvme-pci: Remap CMB SQ entries on every controller reset

The controller memory buffer is remapped into a kernel address on each
reset, but the driver was setting the submission queue base address
only on the very first queue creation. The remapped address is likely to
change after a reset, so accessing the old address will hit a kernel bug.

This patch fixes that by setting the queue's CMB base address each time
the queue is created.

Fixes: f63572dff1421 ("nvme: unmap CMB and remove sysfs file in reset path")
Reported-by: Christian Black <christian.d.black@intel.com>
Cc: Jon Derrick <jonathan.derrick@intel.com>
Cc: <stable@vger.kernel.org> # 4.9+
Signed-off-by: Keith Busch <keith.busch@intel.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/host/pci.c