hw/block/nvme: handle dma errors
commit94cbcf530f9d9789b75ef1ae227ba4a4f702bf7d
authorKlaus Jensen <k.jensen@samsung.com>
Fri, 11 Oct 2019 06:32:00 +0000 (11 08:32 +0200)
committerKlaus Jensen <k.jensen@samsung.com>
Tue, 27 Oct 2020 06:24:46 +0000 (27 07:24 +0100)
tree3727b9a0229d96a132ccab13e05644ebe036b5ec
parent195cc354696d75e9625cf303a0791404b3215501
hw/block/nvme: handle dma errors

Handling DMA errors gracefully is required for the device to pass the
block/011 test ("disable PCI device while doing I/O") in the blktests
suite.

With this patch the device sets the Controller Fatal Status bit in the
CSTS register when failing to read from a submission queue or writing to
a completion queue; expecting the host to reset the controller.

If DMA errors occur at any other point in the execution of the command
(say, while mapping the PRPs), the command is aborted with a Data
Transfer Error status code.

Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
Reviewed-by: Keith Busch <kbusch@kernel.org>
hw/block/nvme.c
hw/block/trace-events