From 130c94c4897a68b9a1889bbf3d2478897f03696f Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Wed, 9 Jun 2021 17:00:45 +0000 Subject: [PATCH] nvme: add quirks for new RedHat QEMU NVMe dev/vendor ID QEMU 6.0 by default uses a RedHat dev/vendor ID rather than the Intel one that has always been used to date. We need the NVME_QUIRK_MAXIMUM_PCI_ACCESS_WIDTH quirk so that we do not use wide instructions to copy SQEs to a virtualized CMB, since QEMU does not support that. The NVME_INTEL_QUIRK_NO_LOG_PAGES quirk is only needed for devices with SPDK_PCI_VID_INTEL, so we do not need to carry this one over to the new REDHAT entry. Fixes issue #1986. Signed-off-by: Jim Harris Change-Id: I3d339b3525e7c6ceb792eb9d143e7a922c19344d Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8226 Reviewed-by: Paul Luse Reviewed-by: Aleksey Marchuk Reviewed-by: Ben Walker Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins --- include/spdk/pci_ids.h | 1 + lib/nvme/nvme_quirks.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/include/spdk/pci_ids.h b/include/spdk/pci_ids.h index 816eb0a84..0791b75fc 100644 --- a/include/spdk/pci_ids.h +++ b/include/spdk/pci_ids.h @@ -52,6 +52,7 @@ extern "C" { #define SPDK_PCI_VID_VIRTIO 0x1af4 #define SPDK_PCI_VID_CNEXLABS 0x1d1d #define SPDK_PCI_VID_VMWARE 0x15ad +#define SPDK_PCI_VID_REDHAT 0x1b36 #define SPDK_PCI_CLASS_ANY_ID 0xffffff /** diff --git a/lib/nvme/nvme_quirks.c b/lib/nvme/nvme_quirks.c index a529933f2..9065467d3 100644 --- a/lib/nvme/nvme_quirks.c +++ b/lib/nvme/nvme_quirks.c @@ -92,6 +92,9 @@ static const struct nvme_quirk nvme_quirks[] = { NVME_INTEL_QUIRK_NO_LOG_PAGES | NVME_QUIRK_MAXIMUM_PCI_ACCESS_WIDTH }, + { {SPDK_PCI_CLASS_NVME, SPDK_PCI_VID_REDHAT, 0x0010, SPDK_PCI_ANY_ID, SPDK_PCI_ANY_ID}, + NVME_QUIRK_MAXIMUM_PCI_ACCESS_WIDTH + }, { {SPDK_PCI_CLASS_NVME, SPDK_PCI_VID_CNEXLABS, 0x1f1f, SPDK_PCI_ANY_ID, SPDK_PCI_ANY_ID}, NVME_QUIRK_IDENTIFY_CNS | NVME_QUIRK_OCSSD