diff options
| author | Klaus Jensen <k.jensen@samsung.com> | 2022-10-19 22:28:02 +0200 |
|---|---|---|
| committer | Klaus Jensen <k.jensen@samsung.com> | 2022-11-02 09:23:05 +0100 |
| commit | d38cc6fd1cafc3f834bb529f79bfc23089e9e54f (patch) | |
| tree | 4bc5c8dfe26210473e957a84ab5e25f4678e078f /hw/nvme/nvme.h | |
| parent | a11f65ec1b8adcb012b89c92819cbda4dc25aaf1 (diff) | |
| download | focaccia-qemu-d38cc6fd1cafc3f834bb529f79bfc23089e9e54f.tar.gz focaccia-qemu-d38cc6fd1cafc3f834bb529f79bfc23089e9e54f.zip | |
hw/nvme: reenable cqe batching
Commit 2e53b0b45024 ("hw/nvme: Use ioeventfd to handle doorbell
updates") had the unintended effect of disabling batching of CQEs.
This patch changes the sq/cq timers to bottom halfs and instead of
calling nvme_post_cqes() immediately (causing an interrupt per cqe), we
defer the call.
| iops
-----------------+------
baseline | 138k
+cqe batching | 233k
Fixes: 2e53b0b45024 ("hw/nvme: Use ioeventfd to handle doorbell updates")
Reviewed-by: Keith Busch <kbusch@kernel.org>
Reviewed-by: Jinhao Fan <fanjinhao21s@ict.ac.cn>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
Diffstat (limited to 'hw/nvme/nvme.h')
| -rw-r--r-- | hw/nvme/nvme.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/hw/nvme/nvme.h b/hw/nvme/nvme.h index 79f5c281c2..7adf042ec3 100644 --- a/hw/nvme/nvme.h +++ b/hw/nvme/nvme.h @@ -375,7 +375,7 @@ typedef struct NvmeSQueue { uint64_t dma_addr; uint64_t db_addr; uint64_t ei_addr; - QEMUTimer *timer; + QEMUBH *bh; EventNotifier notifier; bool ioeventfd_enabled; NvmeRequest *io_req; @@ -396,7 +396,7 @@ typedef struct NvmeCQueue { uint64_t dma_addr; uint64_t db_addr; uint64_t ei_addr; - QEMUTimer *timer; + QEMUBH *bh; EventNotifier notifier; bool ioeventfd_enabled; QTAILQ_HEAD(, NvmeSQueue) sq_list; |