nvme-pci: Remap CMB SQ entries on every controller reset
authorKeith Busch <[email protected]>
Tue, 13 Feb 2018 12:44:44 +0000 (05:44 -0700)
committerKeith Busch <[email protected]>
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 <[email protected]>
Cc: Jon Derrick <[email protected]>
Cc: <[email protected]> # 4.9+
Signed-off-by: Keith Busch <[email protected]>
Reviewed-by: Christoph Hellwig <[email protected]>
drivers/nvme/host/pci.c