qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PULL for-7.1 0/3] hw/nvme fixes
@ 2022-08-01 10:05 Klaus Jensen
  2022-08-01 10:05 ` [PULL for-7.1 1/3] hw/nvme: skip queue processing if notifier is cleared Klaus Jensen
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Klaus Jensen @ 2022-08-01 10:05 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Keith Busch, qemu-block, Klaus Jensen, Klaus Jensen

From: Klaus Jensen <k.jensen@samsung.com>

Hi,

The following changes since commit 3916603e0c1d909e14e09d5ebcbdaa9c9e21adf3:

  Merge tag 'pull-la-20220729' of https://gitlab.com/rth7680/qemu into staging (2022-07-29 17:39:17 -0700)

are available in the Git repository at:

  git://git.infradead.org/qemu-nvme.git tags/nvme-next-pull-request

for you to fetch changes up to e2e137f64282a2ee2f359b6df4cd93c83a308e7b:

  hw/nvme: do not enable ioeventfd by default (2022-08-01 12:01:21 +0200)

----------------------------------------------------------------
hw/nvme fixes

Some fixes for hw/nvme ioeventfd support.

----------------------------------------------------------------

Klaus Jensen (3):
  hw/nvme: skip queue processing if notifier is cleared
  hw/nvme: unregister the event notifier handler on the main loop
  hw/nvme: do not enable ioeventfd by default

 hw/nvme/ctrl.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

-- 
2.36.1



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PULL for-7.1 1/3] hw/nvme: skip queue processing if notifier is cleared
  2022-08-01 10:05 [PULL for-7.1 0/3] hw/nvme fixes Klaus Jensen
@ 2022-08-01 10:05 ` Klaus Jensen
  2022-08-01 10:05 ` [PULL for-7.1 2/3] hw/nvme: unregister the event notifier handler on the main loop Klaus Jensen
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Klaus Jensen @ 2022-08-01 10:05 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Keith Busch, qemu-block, Klaus Jensen, Klaus Jensen, Jinhao Fan

From: Klaus Jensen <k.jensen@samsung.com>

While it is safe to process the queues when they are empty, skip it if
the event notifier callback was invoked spuriously.

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 | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
index 533ad14e7a61..8aa73b048d51 100644
--- a/hw/nvme/ctrl.c
+++ b/hw/nvme/ctrl.c
@@ -4238,7 +4238,9 @@ static void nvme_cq_notifier(EventNotifier *e)
     NvmeCQueue *cq = container_of(e, NvmeCQueue, notifier);
     NvmeCtrl *n = cq->ctrl;
 
-    event_notifier_test_and_clear(&cq->notifier);
+    if (!event_notifier_test_and_clear(e)) {
+        return;
+    }
 
     nvme_update_cq_head(cq);
 
@@ -4275,7 +4277,9 @@ static void nvme_sq_notifier(EventNotifier *e)
 {
     NvmeSQueue *sq = container_of(e, NvmeSQueue, notifier);
 
-    event_notifier_test_and_clear(&sq->notifier);
+    if (!event_notifier_test_and_clear(e)) {
+        return;
+    }
 
     nvme_process_sq(sq);
 }
-- 
2.36.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PULL for-7.1 2/3] hw/nvme: unregister the event notifier handler on the main loop
  2022-08-01 10:05 [PULL for-7.1 0/3] hw/nvme fixes Klaus Jensen
  2022-08-01 10:05 ` [PULL for-7.1 1/3] hw/nvme: skip queue processing if notifier is cleared Klaus Jensen
@ 2022-08-01 10:05 ` Klaus Jensen
  2022-08-01 10:05 ` [PULL for-7.1 3/3] hw/nvme: do not enable ioeventfd by default Klaus Jensen
  2022-08-01 15:49 ` [PULL for-7.1 0/3] hw/nvme fixes Richard Henderson
  3 siblings, 0 replies; 5+ messages in thread
From: Klaus Jensen @ 2022-08-01 10:05 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Keith Busch, qemu-block, Klaus Jensen, Klaus Jensen, Jinhao Fan

From: Klaus Jensen <k.jensen@samsung.com>

Make sure the notifier handler is unregistered in the main loop prior to
cleaning it up.

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 | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
index 8aa73b048d51..70b454eedbd8 100644
--- a/hw/nvme/ctrl.c
+++ b/hw/nvme/ctrl.c
@@ -4311,6 +4311,7 @@ static void nvme_free_sq(NvmeSQueue *sq, NvmeCtrl *n)
     if (sq->ioeventfd_enabled) {
         memory_region_del_eventfd(&n->iomem,
                                   0x1000 + offset, 4, false, 0, &sq->notifier);
+        event_notifier_set_handler(&sq->notifier, NULL);
         event_notifier_cleanup(&sq->notifier);
     }
     g_free(sq->io_req);
@@ -4701,6 +4702,7 @@ static void nvme_free_cq(NvmeCQueue *cq, NvmeCtrl *n)
     if (cq->ioeventfd_enabled) {
         memory_region_del_eventfd(&n->iomem,
                                   0x1000 + offset, 4, false, 0, &cq->notifier);
+        event_notifier_set_handler(&cq->notifier, NULL);
         event_notifier_cleanup(&cq->notifier);
     }
     if (msix_enabled(&n->parent_obj)) {
-- 
2.36.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PULL for-7.1 3/3] hw/nvme: do not enable ioeventfd by default
  2022-08-01 10:05 [PULL for-7.1 0/3] hw/nvme fixes Klaus Jensen
  2022-08-01 10:05 ` [PULL for-7.1 1/3] hw/nvme: skip queue processing if notifier is cleared Klaus Jensen
  2022-08-01 10:05 ` [PULL for-7.1 2/3] hw/nvme: unregister the event notifier handler on the main loop Klaus Jensen
@ 2022-08-01 10:05 ` Klaus Jensen
  2022-08-01 15:49 ` [PULL for-7.1 0/3] hw/nvme fixes Richard Henderson
  3 siblings, 0 replies; 5+ messages in thread
From: Klaus Jensen @ 2022-08-01 10:05 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Keith Busch, qemu-block, Klaus Jensen, Klaus Jensen, Jinhao Fan

From: Klaus Jensen <k.jensen@samsung.com>

Do not enable ioeventfd by default. Let the feature mature a bit before
we consider enabling it by default.

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 | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
index 70b454eedbd8..87aeba056499 100644
--- a/hw/nvme/ctrl.c
+++ b/hw/nvme/ctrl.c
@@ -7670,7 +7670,7 @@ static Property nvme_props[] = {
     DEFINE_PROP_UINT8("vsl", NvmeCtrl, params.vsl, 7),
     DEFINE_PROP_BOOL("use-intel-id", NvmeCtrl, params.use_intel_id, false),
     DEFINE_PROP_BOOL("legacy-cmb", NvmeCtrl, params.legacy_cmb, false),
-    DEFINE_PROP_BOOL("ioeventfd", NvmeCtrl, params.ioeventfd, true),
+    DEFINE_PROP_BOOL("ioeventfd", NvmeCtrl, params.ioeventfd, false),
     DEFINE_PROP_UINT8("zoned.zasl", NvmeCtrl, params.zasl, 0),
     DEFINE_PROP_BOOL("zoned.auto_transition", NvmeCtrl,
                      params.auto_transition_zones, true),
-- 
2.36.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PULL for-7.1 0/3] hw/nvme fixes
  2022-08-01 10:05 [PULL for-7.1 0/3] hw/nvme fixes Klaus Jensen
                   ` (2 preceding siblings ...)
  2022-08-01 10:05 ` [PULL for-7.1 3/3] hw/nvme: do not enable ioeventfd by default Klaus Jensen
@ 2022-08-01 15:49 ` Richard Henderson
  3 siblings, 0 replies; 5+ messages in thread
From: Richard Henderson @ 2022-08-01 15:49 UTC (permalink / raw)
  To: Klaus Jensen, qemu-devel, Peter Maydell
  Cc: Keith Busch, qemu-block, Klaus Jensen

On 8/1/22 03:05, Klaus Jensen wrote:
> From: Klaus Jensen <k.jensen@samsung.com>
> 
> Hi,
> 
> The following changes since commit 3916603e0c1d909e14e09d5ebcbdaa9c9e21adf3:
> 
>    Merge tag 'pull-la-20220729' of https://gitlab.com/rth7680/qemu into staging (2022-07-29 17:39:17 -0700)
> 
> are available in the Git repository at:
> 
>    git://git.infradead.org/qemu-nvme.git tags/nvme-next-pull-request
> 
> for you to fetch changes up to e2e137f64282a2ee2f359b6df4cd93c83a308e7b:
> 
>    hw/nvme: do not enable ioeventfd by default (2022-08-01 12:01:21 +0200)
> 
> ----------------------------------------------------------------
> hw/nvme fixes
> 
> Some fixes for hw/nvme ioeventfd support.

Applied, thanks.  Please update https://wiki.qemu.org/ChangeLog/7.1 as appropriate.


r~


> 
> ----------------------------------------------------------------
> 
> Klaus Jensen (3):
>    hw/nvme: skip queue processing if notifier is cleared
>    hw/nvme: unregister the event notifier handler on the main loop
>    hw/nvme: do not enable ioeventfd by default
> 
>   hw/nvme/ctrl.c | 12 +++++++++---
>   1 file changed, 9 insertions(+), 3 deletions(-)
> 



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-08-01 15:54 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-01 10:05 [PULL for-7.1 0/3] hw/nvme fixes Klaus Jensen
2022-08-01 10:05 ` [PULL for-7.1 1/3] hw/nvme: skip queue processing if notifier is cleared Klaus Jensen
2022-08-01 10:05 ` [PULL for-7.1 2/3] hw/nvme: unregister the event notifier handler on the main loop Klaus Jensen
2022-08-01 10:05 ` [PULL for-7.1 3/3] hw/nvme: do not enable ioeventfd by default Klaus Jensen
2022-08-01 15:49 ` [PULL for-7.1 0/3] hw/nvme fixes 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).