nvme-pci: use dma memory for the host memory buffer descriptors
authorChristoph Hellwig <hch@lst.de>
Mon, 28 Aug 2017 08:47:18 +0000 (10:47 +0200)
committerChristoph Hellwig <hch@lst.de>
Wed, 30 Aug 2017 12:46:16 +0000 (14:46 +0200)
commit4033f35d174af4804a79fd5731d9e6be976f9f28
tree81f7218bdd10c02f383032eee9dd923b0c5e89ce
parentb925a2dc165e5ec2330ca1256704faef8ed96913
nvme-pci: use dma memory for the host memory buffer descriptors

The NVMe 1.3 specification says in section 5.21.1.13:

"After a successful completion of a Set Features enabling the host memory
 buffer, the host shall not write to the associated host memory region,
 buffer size, or descriptor list until the host memory buffer has been
 disabled."

While this doesn't state that the descriptor list must remain accessible
to the device it certainly implies it must remaing readable by the device.

So switch to a dma coherent allocation for the descriptor list just to be
safe - it's not like the cost for it matters compared to the actual
memory buffers.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Keith Busch <keith.busch@intel.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Fixes: 87ad72a59a38 ("nvme-pci: implement host memory buffer support")
drivers/nvme/host/pci.c