qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] nvme: Fix spurious interrupts
@ 2018-11-26 17:17 Keith Busch
  2018-11-26 17:28 ` Guenter Roeck
  2018-11-26 17:38 ` Kevin Wolf
  0 siblings, 2 replies; 3+ messages in thread
From: Keith Busch @ 2018-11-26 17:17 UTC (permalink / raw)
  To: qemu-block, qemu-devel; +Cc: Kevin Wolf, Max Reitz, Guenter Roeck, Keith Busch

The code had asserted an interrupt every time it was requested to check
for new completion queue entries.This can result in spurious interrupts
seen by the guest OS.

Fix this by asserting an interrupt only if there are un-acknowledged
completion queue entries available.

Reported-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Keith Busch <keith.busch@intel.com>
---
 hw/block/nvme.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/hw/block/nvme.c b/hw/block/nvme.c
index 9fbe5673cb..7c8c63e8f5 100644
--- a/hw/block/nvme.c
+++ b/hw/block/nvme.c
@@ -272,7 +272,9 @@ static void nvme_post_cqes(void *opaque)
             sizeof(req->cqe));
         QTAILQ_INSERT_TAIL(&sq->req_list, req, entry);
     }
-    nvme_irq_assert(n, cq);
+    if (cq->tail != cq->head) {
+        nvme_irq_assert(n, cq);
+    }
 }
 
 static void nvme_enqueue_req_completion(NvmeCQueue *cq, NvmeRequest *req)
-- 
2.14.4

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

* Re: [Qemu-devel] [PATCH] nvme: Fix spurious interrupts
  2018-11-26 17:17 [Qemu-devel] [PATCH] nvme: Fix spurious interrupts Keith Busch
@ 2018-11-26 17:28 ` Guenter Roeck
  2018-11-26 17:38 ` Kevin Wolf
  1 sibling, 0 replies; 3+ messages in thread
From: Guenter Roeck @ 2018-11-26 17:28 UTC (permalink / raw)
  To: Keith Busch; +Cc: qemu-block, qemu-devel, Kevin Wolf, Max Reitz

On Mon, Nov 26, 2018 at 10:17:45AM -0700, Keith Busch wrote:
> The code had asserted an interrupt every time it was requested to check
> for new completion queue entries.This can result in spurious interrupts
> seen by the guest OS.
> 
> Fix this by asserting an interrupt only if there are un-acknowledged
> completion queue entries available.
> 
> Reported-by: Guenter Roeck <linux@roeck-us.net>
> Signed-off-by: Keith Busch <keith.busch@intel.com>

Tested-by: Guenter Roeck <linux@roeck-us.net>

> ---
>  hw/block/nvme.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/block/nvme.c b/hw/block/nvme.c
> index 9fbe5673cb..7c8c63e8f5 100644
> --- a/hw/block/nvme.c
> +++ b/hw/block/nvme.c
> @@ -272,7 +272,9 @@ static void nvme_post_cqes(void *opaque)
>              sizeof(req->cqe));
>          QTAILQ_INSERT_TAIL(&sq->req_list, req, entry);
>      }
> -    nvme_irq_assert(n, cq);
> +    if (cq->tail != cq->head) {
> +        nvme_irq_assert(n, cq);
> +    }
>  }
>  
>  static void nvme_enqueue_req_completion(NvmeCQueue *cq, NvmeRequest *req)
> -- 
> 2.14.4
> 

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

* Re: [Qemu-devel] [PATCH] nvme: Fix spurious interrupts
  2018-11-26 17:17 [Qemu-devel] [PATCH] nvme: Fix spurious interrupts Keith Busch
  2018-11-26 17:28 ` Guenter Roeck
@ 2018-11-26 17:38 ` Kevin Wolf
  1 sibling, 0 replies; 3+ messages in thread
From: Kevin Wolf @ 2018-11-26 17:38 UTC (permalink / raw)
  To: Keith Busch; +Cc: qemu-block, qemu-devel, Max Reitz, Guenter Roeck

Am 26.11.2018 um 18:17 hat Keith Busch geschrieben:
> The code had asserted an interrupt every time it was requested to check
> for new completion queue entries.This can result in spurious interrupts
> seen by the guest OS.
> 
> Fix this by asserting an interrupt only if there are un-acknowledged
> completion queue entries available.
> 
> Reported-by: Guenter Roeck <linux@roeck-us.net>
> Signed-off-by: Keith Busch <keith.busch@intel.com>

Thanks, applied to the block branch.

Kevin

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

end of thread, other threads:[~2018-11-26 17:38 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-11-26 17:17 [Qemu-devel] [PATCH] nvme: Fix spurious interrupts Keith Busch
2018-11-26 17:28 ` Guenter Roeck
2018-11-26 17:38 ` Kevin Wolf

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).