From: Klaus Jensen <k.jen...@samsung.com> This adds support for one possible new protection information format introduced in TP4068 (and integrated in NVMe 2.0): the 64-bit CRC guard and 48-bit reference tag. This version does not support storage tags.
Like the CRC16 support already present, this uses a software implementation of CRC64 (so it is naturally pretty slow). But its good enough for verification purposes. This goes hand-in-hand with the support that Keith submitted for the Linux kernel[1]. [1]: https://lore.kernel.org/linux-nvme/20220201190128.3075065-1-kbu...@kernel.org/ Changes since v1 ~~~~~~~~~~~~~~~~ - Check metadata size depending on pi guard type selected. (Keith) Klaus Jensen (3): hw/nvme: move dif/pi prototypes into dif.h hw/nvme: move format parameter parsing hw/nvme: add pi tuple size helper Naveen Nagar (3): hw/nvme: add host behavior support feature hw/nvme: add support for the lbafee hbs feature hw/nvme: 64-bit pi support hw/nvme/ctrl.c | 235 +++++++++++++++++++++------ hw/nvme/dif.c | 378 +++++++++++++++++++++++++++++++++---------- hw/nvme/dif.h | 191 ++++++++++++++++++++++ hw/nvme/ns.c | 50 ++++-- hw/nvme/nvme.h | 58 +------ hw/nvme/trace-events | 12 +- include/block/nvme.h | 81 ++++++++-- 7 files changed, 793 insertions(+), 212 deletions(-) create mode 100644 hw/nvme/dif.h -- 2.35.1