From 106198edb74cdf3fe1aefa6ad1e199b58ab7c4cb Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Thu, 26 Nov 2015 10:07:41 +0100 Subject: nvme: add explicit quirk handling Add an enum for all workarounds not in the spec and identify the affected controllers at probe time. Signed-off-by: Christoph Hellwig Signed-off-by: Keith Busch Signed-off-by: Jens Axboe --- drivers/nvme/host/nvme.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'drivers/nvme/host/nvme.h') diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h index 3b3f855580ee..f7f16e32104f 100644 --- a/drivers/nvme/host/nvme.h +++ b/drivers/nvme/host/nvme.h @@ -32,6 +32,18 @@ enum { NVME_NS_LIGHTNVM = 1, }; +/* + * List of workarounds for devices that required behavior not specified in + * the standard. + */ +enum nvme_quirks { + /* + * Prefers I/O aligned to a stripe size specified in a vendor + * specific Identify field. + */ + NVME_QUIRK_STRIPE_SIZE = (1 << 0), +}; + struct nvme_ctrl { const struct nvme_ctrl_ops *ops; struct request_queue *admin_q; @@ -47,6 +59,7 @@ struct nvme_ctrl { u16 abort_limit; u8 event_limit; u8 vwc; + unsigned long quirks; }; /* -- cgit v1.2.3