Spdk/lib/nvme
Changpeng Liu 44f69a9e51 nvme: add a quirk for QEMU emulated NVMe SSD
When starting the QEMU NVMe SSD with "cmb_size_mb=XX"
parameter, the controller memory buffer feature is
enabled in the Guest, the SPDK NVMe driver running
in the Guest will allocate the submission queue in
the controller memory buffer by default, it will use
memset and SSE instruction when copying NVMe command
to the submission queue entry or zero the whole
submission queue, inside the memset implementation
the AVX2 instuction will be used if the CPU can support
such feature.  However, due to the limitation in the
QEMU, the maximum access width to the PCI BAR space is
set to 8 Bytes, SPDK will report illegal instruction
in Guest.

Here we add a quirk for the QEMU emulated NVMe.

Fix issue #1362.

Change-Id: Ib5e2e4198d39ce7f8455175f7db283db0b01eebf
Signed-off-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2196
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-05-20 14:16:52 +00:00
..
Makefile nvme/rdma: Use RDMA provider API to create/destroy qpair 2020-05-20 12:03:50 +00:00
nvme_ctrlr_cmd.c nvme: save separate metadata size to nvme request 2020-04-02 07:02:38 +00:00
nvme_ctrlr_ocssd_cmd.c ocssd: hold lock when calling nvme_ctrlr_submit_admin_request 2019-02-15 21:27:58 +00:00
nvme_ctrlr.c nvme/ctrlr: Allow targets not supporting Keep Alive Timer feature ID 2020-05-07 10:41:31 +00:00
nvme_cuse.c lib: replace fprintf(stderr,) by SPDK_ERRLOG 2020-05-07 10:42:40 +00:00
nvme_cuse.h lib/nvme: add RPC for interacting with CUSE devices 2019-10-24 23:43:59 +00:00
nvme_fabric.c nvme: Add the priority field in struct spdk_nvme_transport_id 2020-04-24 15:53:34 +00:00
nvme_internal.h nvme: add a quirk for QEMU emulated NVMe SSD 2020-05-20 14:16:52 +00:00
nvme_io_msg.c lib/nvme: assign NULL to external_io_msgs ring after free 2020-04-23 20:29:46 +00:00
nvme_io_msg.h lib/nvme: stop all NVMe io producers on detach 2019-11-28 12:36:58 +00:00
nvme_ns_cmd.c nvme: save separate metadata size to nvme request 2020-04-02 07:02:38 +00:00
nvme_ns_ocssd_cmd.c nvme: save separate metadata size to nvme request 2020-04-02 07:02:38 +00:00
nvme_ns.c nvme: Init the status object when tracking the req completion 2020-04-07 08:38:58 +00:00
nvme_opal_internal.h nvme/opal: deprecate spdk_opal_supported() 2020-05-20 14:16:44 +00:00
nvme_opal.c nvme/opal: deprecate spdk_opal_supported() 2020-05-20 14:16:44 +00:00
nvme_pcie.c nvme: add a quirk for QEMU emulated NVMe SSD 2020-05-20 14:16:52 +00:00
nvme_poll_group.c lib/nvme: switch poll group to use connect/disconnect semantics. 2020-04-22 19:06:26 +00:00
nvme_qpair.c lib/nvme: abort all requests when disconnecting a qpair. 2020-04-22 19:06:26 +00:00
nvme_quirks.c nvme: add a quirk for QEMU emulated NVMe SSD 2020-05-20 14:16:52 +00:00
nvme_rdma.c nvme/rdma: Handle failed send/recv as a fatal error 2020-05-20 12:03:50 +00:00
nvme_tcp.c nvme: implement epoll in the tcp transport. 2020-04-24 19:38:00 +00:00
nvme_transport.c Transport: allocate a global array of transports 2020-05-15 08:11:54 +00:00
nvme_uevent.c nvme: add vfio driver parse event 2019-05-29 02:36:41 +00:00
nvme_uevent.h nvme: Add support of hotplug for vfio-attached devices. 2017-12-06 17:04:49 -05:00
nvme.c nvme: Add the priority field in struct spdk_nvme_transport_id 2020-04-24 15:53:34 +00:00
spdk_nvme.map lib/nvme: add a map file. 2020-05-12 21:49:03 +00:00