v4: - Rebase, address Stefan's comments. - Add QAPI and doc patches. v3: Rebase, small tweaks/fixes and add locks to provide basic thread safety (basic because it is not really tested).
v2: - Implement "split vfio addr space" appraoch. [Paolo] - Add back 'device reset' in nvme_close(). [Paolo] - Better variable namings. [Stefan] - "Reuse" macro definitions from NVMe emulation code. - Rebase onto current master which has polling by default and update performance results accordingly. - Update MAINTAINERS. - Specify namespace in URI. - The sporadical I/O error from v1 "disappeared" in this version. - Tests one: qemu-img bench, fio, bonnie++ and installation of ubuntu/fedora/rhel on QEMU emulated nvme and a Intel P3700 card. Fam Zheng (9): stubs: Add stubs for ram block API util: Introduce vfio helpers block: Add VFIO based NVMe driver block: Introduce buf register API block/nvme: Implement .bdrv_(un)register_buf qemu-img: Map bench buffer block: Move NVMe constants to a separate header docs: Add section for NVMe VFIO driver qapi: Add NVMe driver options to the schema MAINTAINERS | 6 + block/Makefile.objs | 1 + block/block-backend.c | 10 + block/io.c | 24 + block/nvme.c | 1143 ++++++++++++++++++++++++++++++++++++++++ block/trace-events | 21 + docs/qemu-block-drivers.texi | 32 ++ hw/block/nvme.h | 698 +----------------------- include/block/block.h | 11 +- include/block/block_int.h | 9 + include/block/nvme.h | 700 ++++++++++++++++++++++++ include/qemu/vfio-helpers.h | 30 ++ include/sysemu/block-backend.h | 3 + qapi/block-core.json | 16 +- qemu-img.c | 9 +- stubs/Makefile.objs | 1 + stubs/ram-block.c | 16 + util/Makefile.objs | 1 + util/trace-events | 11 + util/vfio-helpers.c | 723 +++++++++++++++++++++++++ 20 files changed, 2765 insertions(+), 700 deletions(-) create mode 100644 block/nvme.c create mode 100644 include/block/nvme.h create mode 100644 include/qemu/vfio-helpers.h create mode 100644 stubs/ram-block.c create mode 100644 util/vfio-helpers.c -- 2.14.3