From c6ae008db5bb4e59c2edfb566c1af2cd1350572b Mon Sep 17 00:00:00 2001 From: Xiaodong Liu Date: Mon, 14 May 2018 21:03:06 +0800 Subject: [PATCH] lnvm: add a quirk for identify LightNVM device Change-Id: I841d7b47bc85498abb608944587e7b7585138263 Signed-off-by: Xiaodong Liu Reviewed-on: https://review.gerrithub.io/411588 Tested-by: SPDK Automated Test System Reviewed-by: Daniel Verkamp Reviewed-by: Changpeng Liu Reviewed-by: Ziye Yang Reviewed-by: Ben Walker Reviewed-by: Jim Harris --- lib/nvme/nvme_internal.h | 7 +++++++ lib/nvme/nvme_quirks.c | 4 +++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/nvme/nvme_internal.h b/lib/nvme/nvme_internal.h index 7c49f6159..6930bc63e 100644 --- a/lib/nvme/nvme_internal.h +++ b/lib/nvme/nvme_internal.h @@ -99,6 +99,13 @@ extern pid_t g_spdk_nvme_pid; */ #define NVME_QUIRK_IDENTIFY_CNS 0x40 +/* + * The controller supports LightNVM command set if matching additional + * condition, like the first byte (value 0x1) in the vendor specific + * bits of the namespace identify structure is set. + */ +#define NVME_QUIRK_LIGHTNVM 0x80 + #define NVME_MAX_ASYNC_EVENTS (8) #define NVME_MIN_TIMEOUT_PERIOD (5) diff --git a/lib/nvme/nvme_quirks.c b/lib/nvme/nvme_quirks.c index a297982cf..09f87d8c1 100644 --- a/lib/nvme/nvme_quirks.c +++ b/lib/nvme/nvme_quirks.c @@ -73,7 +73,8 @@ static const struct nvme_quirk nvme_quirks[] = { NVME_QUIRK_IDENTIFY_CNS }, { {SPDK_PCI_VID_CNEXLABS, 0x1f1f, SPDK_PCI_ANY_ID, SPDK_PCI_ANY_ID}, - NVME_QUIRK_IDENTIFY_CNS + NVME_QUIRK_IDENTIFY_CNS | + NVME_QUIRK_LIGHTNVM }, { {0x0000, 0x0000, 0x0000, 0x0000}, 0} }; @@ -120,6 +121,7 @@ nvme_get_quirks(const struct spdk_pci_id *id) PRINT_QUIRK(NVME_QUIRK_DELAY_AFTER_QUEUE_ALLOC); PRINT_QUIRK(NVME_QUIRK_READ_ZERO_AFTER_DEALLOCATE); PRINT_QUIRK(NVME_QUIRK_IDENTIFY_CNS); + PRINT_QUIRK(NVME_QUIRK_LIGHTNVM); return quirk->flags; }