* [PULL 0/2] hw/nvme fixes @ 2022-11-02 8:25 Klaus Jensen 2022-11-02 8:25 ` [PULL 1/2] hw/nvme: reenable cqe batching Klaus Jensen ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Klaus Jensen @ 2022-11-02 8:25 UTC (permalink / raw) To: qemu-devel; +Cc: qemu-block, Klaus Jensen, Keith Busch, Klaus Jensen From: Klaus Jensen <k.jensen@samsung.com> Hi, The following changes since commit a11f65ec1b8adcb012b89c92819cbda4dc25aaf1: Merge tag 'block-pull-request' of https://gitlab.com/stefanha/qemu into staging (2022-11-01 13:49:33 -0400) are available in the Git repository at: git://git.infradead.org/qemu-nvme.git tags/nvme-fixes-pull-request for you to fetch changes up to 632cb6cf07122b330d8ef419ec2f4aab561a9fba: hw/nvme: Abort copy command when format is one while pif (2022-11-02 09:23:05 +0100) ---------------------------------------------------------------- hw/nvme fixes Two small fixes. ---------------------------------------------------------------- Francis Pravin Antony Michael Raj (1): hw/nvme: Abort copy command when format is one while pif Klaus Jensen (1): hw/nvme: reenable cqe batching hw/nvme/ctrl.c | 29 +++++++++++++---------------- hw/nvme/nvme.h | 4 ++-- 2 files changed, 15 insertions(+), 18 deletions(-) -- 2.38.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PULL 1/2] hw/nvme: reenable cqe batching 2022-11-02 8:25 [PULL 0/2] hw/nvme fixes Klaus Jensen @ 2022-11-02 8:25 ` Klaus Jensen 2022-11-02 8:25 ` [PULL 2/2] hw/nvme: Abort copy command when format is one while pif Klaus Jensen 2022-11-03 21:26 ` [PULL 0/2] hw/nvme fixes Stefan Hajnoczi 2 siblings, 0 replies; 8+ messages in thread From: Klaus Jensen @ 2022-11-02 8:25 UTC (permalink / raw) To: qemu-devel Cc: qemu-block, Klaus Jensen, Keith Busch, Klaus Jensen, Jinhao Fan From: Klaus Jensen <k.jensen@samsung.com> 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> --- hw/nvme/ctrl.c | 26 +++++++++++--------------- hw/nvme/nvme.h | 4 ++-- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 87aeba056499..73c870a42996 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -1401,13 +1401,7 @@ static void nvme_enqueue_req_completion(NvmeCQueue *cq, NvmeRequest *req) QTAILQ_REMOVE(&req->sq->out_req_list, req, entry); QTAILQ_INSERT_TAIL(&cq->req_list, req, entry); - if (req->sq->ioeventfd_enabled) { - /* Post CQE directly since we are in main loop thread */ - nvme_post_cqes(cq); - } else { - /* Schedule the timer to post CQE later since we are in vcpu thread */ - timer_mod(cq->timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + 500); - } + qemu_bh_schedule(cq->bh); } static void nvme_process_aers(void *opaque) @@ -4252,7 +4246,7 @@ static void nvme_cq_notifier(EventNotifier *e) nvme_irq_deassert(n, cq); } - nvme_post_cqes(cq); + qemu_bh_schedule(cq->bh); } static int nvme_init_cq_ioeventfd(NvmeCQueue *cq) @@ -4307,7 +4301,7 @@ static void nvme_free_sq(NvmeSQueue *sq, NvmeCtrl *n) uint16_t offset = sq->sqid << 3; n->sq[sq->sqid] = NULL; - timer_free(sq->timer); + qemu_bh_delete(sq->bh); if (sq->ioeventfd_enabled) { memory_region_del_eventfd(&n->iomem, 0x1000 + offset, 4, false, 0, &sq->notifier); @@ -4381,7 +4375,8 @@ static void nvme_init_sq(NvmeSQueue *sq, NvmeCtrl *n, uint64_t dma_addr, sq->io_req[i].sq = sq; QTAILQ_INSERT_TAIL(&(sq->req_list), &sq->io_req[i], entry); } - sq->timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, nvme_process_sq, sq); + + sq->bh = qemu_bh_new(nvme_process_sq, sq); if (n->dbbuf_enabled) { sq->db_addr = n->dbbuf_dbs + (sqid << 3); @@ -4698,7 +4693,7 @@ static void nvme_free_cq(NvmeCQueue *cq, NvmeCtrl *n) uint16_t offset = (cq->cqid << 3) + (1 << 2); n->cq[cq->cqid] = NULL; - timer_free(cq->timer); + qemu_bh_delete(cq->bh); if (cq->ioeventfd_enabled) { memory_region_del_eventfd(&n->iomem, 0x1000 + offset, 4, false, 0, &cq->notifier); @@ -4771,7 +4766,7 @@ static void nvme_init_cq(NvmeCQueue *cq, NvmeCtrl *n, uint64_t dma_addr, } } n->cq[cqid] = cq; - cq->timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, nvme_post_cqes, cq); + cq->bh = qemu_bh_new(nvme_post_cqes, cq); } static uint16_t nvme_create_cq(NvmeCtrl *n, NvmeRequest *req) @@ -6913,9 +6908,9 @@ static void nvme_process_db(NvmeCtrl *n, hwaddr addr, int val) if (start_sqs) { NvmeSQueue *sq; QTAILQ_FOREACH(sq, &cq->sq_list, entry) { - timer_mod(sq->timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + 500); + qemu_bh_schedule(sq->bh); } - timer_mod(cq->timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + 500); + qemu_bh_schedule(cq->bh); } if (cq->tail == cq->head) { @@ -6984,7 +6979,8 @@ static void nvme_process_db(NvmeCtrl *n, hwaddr addr, int val) pci_dma_write(&n->parent_obj, sq->db_addr, &sq->tail, sizeof(sq->tail)); } - timer_mod(sq->timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + 500); + + qemu_bh_schedule(sq->bh); } } diff --git a/hw/nvme/nvme.h b/hw/nvme/nvme.h index 79f5c281c223..7adf042ec3e4 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; -- 2.38.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PULL 2/2] hw/nvme: Abort copy command when format is one while pif 2022-11-02 8:25 [PULL 0/2] hw/nvme fixes Klaus Jensen 2022-11-02 8:25 ` [PULL 1/2] hw/nvme: reenable cqe batching Klaus Jensen @ 2022-11-02 8:25 ` Klaus Jensen 2022-11-03 21:26 ` [PULL 0/2] hw/nvme fixes Stefan Hajnoczi 2 siblings, 0 replies; 8+ messages in thread From: Klaus Jensen @ 2022-11-02 8:25 UTC (permalink / raw) To: qemu-devel Cc: qemu-block, Klaus Jensen, Keith Busch, Francis Pravin Antony Michael Raj, Jonathan Derrick, Klaus Jensen From: Francis Pravin Antony Michael Raj <francis.michael@solidigm.com> As per the NVMe Command Set specification Section 3.2.2, if i) The namespace is formatted to use 16b Guard Protection Information (i.e., pif = 0) and ii) The Descriptor Format is not cleared to 0h Then the copy command should be aborted with the status code of Invalid Namespace or Format Fixes: 44219b6029fc ("hw/nvme: 64-bit pi support") Signed-off-by: Francis Pravin Antony Michael Raj <francis.michael@solidigm.com> Signed-off-by: Jonathan Derrick <jonathan.derrick@solidigm.com> Reviewed-by: Klaus Jensen <k.jensen@samsung.com> Signed-off-by: Klaus Jensen <k.jensen@samsung.com> --- hw/nvme/ctrl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 73c870a42996..9a9857ccf85f 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -3034,7 +3034,8 @@ static uint16_t nvme_copy(NvmeCtrl *n, NvmeRequest *req) goto invalid; } - if (ns->pif && format != 0x1) { + if ((ns->pif == 0x0 && format != 0x0) || + (ns->pif != 0x0 && format != 0x1)) { status = NVME_INVALID_FORMAT | NVME_DNR; goto invalid; } -- 2.38.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PULL 0/2] hw/nvme fixes 2022-11-02 8:25 [PULL 0/2] hw/nvme fixes Klaus Jensen 2022-11-02 8:25 ` [PULL 1/2] hw/nvme: reenable cqe batching Klaus Jensen 2022-11-02 8:25 ` [PULL 2/2] hw/nvme: Abort copy command when format is one while pif Klaus Jensen @ 2022-11-03 21:26 ` Stefan Hajnoczi 2 siblings, 0 replies; 8+ messages in thread From: Stefan Hajnoczi @ 2022-11-03 21:26 UTC (permalink / raw) To: Klaus Jensen Cc: qemu-devel, qemu-block, Klaus Jensen, Keith Busch, Klaus Jensen [-- Attachment #1: Type: text/plain, Size: 115 bytes --] Applied, thanks. Please update the changelog at https://wiki.qemu.org/ChangeLog/7.2 for any user-visible changes. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PULL 0/2] hw/nvme fixes @ 2023-03-27 17:09 Klaus Jensen 2023-03-28 16:00 ` Peter Maydell 0 siblings, 1 reply; 8+ messages in thread From: Klaus Jensen @ 2023-03-27 17:09 UTC (permalink / raw) To: Peter Maydell, qemu-devel Cc: Kevin Wolf, Philippe Mathieu-Daudé, Fam Zheng, qemu-block, Hanna Reitz, Stefan Hajnoczi, Keith Busch, Klaus Jensen, Klaus Jensen From: Klaus Jensen <k.jensen@samsung.com> Hi Peter, The following changes since commit e3debd5e7d0ce031356024878a0a18b9d109354a: Merge tag 'pull-request-2023-03-24' of https://gitlab.com/thuth/qemu into staging (2023-03-24 16:08:46 +0000) are available in the Git repository at: https://gitlab.com/birkelund/qemu.git tags/nvme-next-pull-request for you to fetch changes up to ca2a091802872b265bc6007a2d36276d51d8e4b3: hw/nvme: fix missing DNR on compare failure (2023-03-27 19:05:23 +0200) ---------------------------------------------------------------- hw/nvme fixes ---------------------------------------------------------------- Klaus Jensen (1): hw/nvme: fix missing DNR on compare failure Mateusz Kozlowski (1): hw/nvme: Change alignment in dma functions for nvme_blk_* hw/nvme/ctrl.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) -- 2.39.2 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PULL 0/2] hw/nvme fixes 2023-03-27 17:09 Klaus Jensen @ 2023-03-28 16:00 ` Peter Maydell 0 siblings, 0 replies; 8+ messages in thread From: Peter Maydell @ 2023-03-28 16:00 UTC (permalink / raw) To: Klaus Jensen Cc: qemu-devel, Kevin Wolf, Philippe Mathieu-Daudé, Fam Zheng, qemu-block, Hanna Reitz, Stefan Hajnoczi, Keith Busch, Klaus Jensen On Mon, 27 Mar 2023 at 18:09, Klaus Jensen <its@irrelevant.dk> wrote: > > From: Klaus Jensen <k.jensen@samsung.com> > > Hi Peter, > > The following changes since commit e3debd5e7d0ce031356024878a0a18b9d109354a: > > Merge tag 'pull-request-2023-03-24' of https://gitlab.com/thuth/qemu into staging (2023-03-24 16:08:46 +0000) > > are available in the Git repository at: > > https://gitlab.com/birkelund/qemu.git tags/nvme-next-pull-request > > for you to fetch changes up to ca2a091802872b265bc6007a2d36276d51d8e4b3: > > hw/nvme: fix missing DNR on compare failure (2023-03-27 19:05:23 +0200) > > ---------------------------------------------------------------- > hw/nvme fixes > > ---------------------------------------------------------------- > > Klaus Jensen (1): > hw/nvme: fix missing DNR on compare failure > > Mateusz Kozlowski (1): > hw/nvme: Change alignment in dma functions for nvme_blk_* > > hw/nvme/ctrl.c | 26 +++++++++++++------------- > 1 file changed, 13 insertions(+), 13 deletions(-) Applied, thanks. Please update the changelog at https://wiki.qemu.org/ChangeLog/8.0 for any user-visible changes. -- PMM ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PULL 0/2] hw/nvme fixes @ 2023-08-07 11:54 Klaus Jensen 2023-08-07 20:36 ` Richard Henderson 0 siblings, 1 reply; 8+ messages in thread From: Klaus Jensen @ 2023-08-07 11:54 UTC (permalink / raw) To: Peter Maydell, qemu-devel Cc: Philippe Mathieu-Daudé, Keith Busch, Hanna Reitz, qemu-block, Klaus Jensen, Stefan Hajnoczi, Fam Zheng, Kevin Wolf, Klaus Jensen From: Klaus Jensen <k.jensen@samsung.com> Hi, The following changes since commit 9400601a689a128c25fa9c21e932562e0eeb7a26: Merge tag 'pull-tcg-20230806-3' of https://gitlab.com/rth7680/qemu into staging (2023-08-06 16:47:48 -0700) are available in the Git repository at: https://gitlab.com/birkelund/qemu.git tags/nvme-next-pull-request for you to fetch changes up to 6a33f2e920ec0b489a77200888e3692664077f2d: hw/nvme: fix compliance issue wrt. iosqes/iocqes (2023-08-07 12:27:24 +0200) ---------------------------------------------------------------- hw/nvme fixes - two fixes for hw/nvme -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEUigzqnXi3OaiR2bATeGvMW1PDekFAmTQ2y4ACgkQTeGvMW1P DenpWQf/WFgEljzgTcgxlfZhCyzWGwVNgKqRxlTuF6ELqm8BajCuCeA5ias6AXOr x/gZ0VqrL91L5tRIH5Q0sdC+HBFC1yMs66jopdzc1oL1eYu1HTrLIqMDtkXp/K/P PyGah2t4qEMtacSkad+hmB68ViUkkmhkxrWYIeufUQTfLNF5pBqNvB1kQON3jmXE a1jI/PabYxi8Km0rfFJD6SUGmL9+m7MY/SyZAy+4EZZ1OEnp5jb3o9lbdwbhIU5e dRX4NW4BEDiOJeIcNVDiQkXv2/Lna1B51RVMvM4owpk0eRvRXMSqs2DQ5/jp/nGb 8uChUJ0QW68I4e9ptTfxmBsr4pSktg== =0nwp -----END PGP SIGNATURE----- ---------------------------------------------------------------- Klaus Jensen (2): hw/nvme: fix oob memory read in fdp events log hw/nvme: fix compliance issue wrt. iosqes/iocqes hw/nvme/ctrl.c | 51 +++++++++++++++----------------------------- hw/nvme/nvme.h | 9 ++++++-- hw/nvme/trace-events | 1 + 3 files changed, 25 insertions(+), 36 deletions(-) -- 2.41.0 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PULL 0/2] hw/nvme fixes 2023-08-07 11:54 Klaus Jensen @ 2023-08-07 20:36 ` Richard Henderson 0 siblings, 0 replies; 8+ messages in thread From: Richard Henderson @ 2023-08-07 20:36 UTC (permalink / raw) To: Klaus Jensen, Peter Maydell, qemu-devel Cc: Philippe Mathieu-Daudé, Keith Busch, Hanna Reitz, qemu-block, Stefan Hajnoczi, Fam Zheng, Kevin Wolf, Klaus Jensen On 8/7/23 04:54, Klaus Jensen wrote: > From: Klaus Jensen<k.jensen@samsung.com> > > Hi, > > The following changes since commit 9400601a689a128c25fa9c21e932562e0eeb7a26: > > Merge tag 'pull-tcg-20230806-3' ofhttps://gitlab.com/rth7680/qemu into staging (2023-08-06 16:47:48 -0700) > > are available in the Git repository at: > > https://gitlab.com/birkelund/qemu.git tags/nvme-next-pull-request > > for you to fetch changes up to 6a33f2e920ec0b489a77200888e3692664077f2d: > > hw/nvme: fix compliance issue wrt. iosqes/iocqes (2023-08-07 12:27:24 +0200) > > ---------------------------------------------------------------- > hw/nvme fixes Applied, thanks. Please update https://wiki.qemu.org/ChangeLog/8.1 as appropriate. r~ ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-08-07 20:37 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-11-02 8:25 [PULL 0/2] hw/nvme fixes Klaus Jensen 2022-11-02 8:25 ` [PULL 1/2] hw/nvme: reenable cqe batching Klaus Jensen 2022-11-02 8:25 ` [PULL 2/2] hw/nvme: Abort copy command when format is one while pif Klaus Jensen 2022-11-03 21:26 ` [PULL 0/2] hw/nvme fixes Stefan Hajnoczi -- strict thread matches above, loose matches on Subject: below -- 2023-03-27 17:09 Klaus Jensen 2023-03-28 16:00 ` Peter Maydell 2023-08-07 11:54 Klaus Jensen 2023-08-07 20:36 ` Richard Henderson
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).