All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.