aboutsummaryrefslogtreecommitdiff
path: root/hw/acpi/acpi_interface.c
diff options
context:
space:
mode:
authorDmitry Tikhov <d.tihov@yadro.com>2022-04-20 11:20:44 +0300
committerKlaus Jensen <k.jensen@samsung.com>2022-06-03 21:48:24 +0200
commitd7fe639cabf778903f6cab23ff58c905c71375ec (patch)
tree03f2d78b8345144265593a6da2b0720bfa046498 /hw/acpi/acpi_interface.c
parent8b1e59a6873662a01379cf052384e5dedefe7447 (diff)
hw/nvme: add new command abort case
NVMe command set specification for end-to-end data protection formatted namespace states: o If the Reference Tag Check bit of the PRCHK field is set to ‘1’ and the namespace is formatted for Type 3 protection, then the controller: ▪ should not compare the protection Information Reference Tag field to the computed reference tag; and ▪ may ignore the ILBRT and EILBRT fields. If a command is aborted as a result of the Reference Tag Check bit of the PRCHK field being set to ‘1’, then that command should be aborted with a status code of Invalid Protection Information, but may be aborted with a status code of Invalid Field in Command. Currently qemu compares reftag in the nvme_dif_prchk function whenever Reference Tag Check bit is set in the command. For type 3 namespaces however, caller of nvme_dif_prchk - nvme_dif_check does not increment reftag for each subsequent logical block. That way commands incorporating more than one logical block for type 3 formatted namespaces with reftag check bit set, always fail with End-to-end Reference Tag Check Error. Comply with spec by handling case of set Reference Tag Check bit in the type 3 formatted namespace. Fixes: 146f720c5563 ("hw/block/nvme: end-to-end data protection") Signed-off-by: Dmitry Tikhov <d.tihov@yadro.com> Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
Diffstat (limited to 'hw/acpi/acpi_interface.c')
0 files changed, 0 insertions, 0 deletions