qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v1 22/24] vfio-user: add 'x-msg-timeout' option that specifie


From: Cédric Le Goater
Subject: Re: [PATCH v1 22/24] vfio-user: add 'x-msg-timeout' option that specifies msg wait times
Date: Thu, 15 Dec 2022 13:56:31 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.1

On 11/9/22 00:13, John Johnson wrote:
Signed-off-by: John G Johnson <john.g.johnson@oracle.com>
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com>
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com>
---
  hw/vfio/pci.c  | 4 ++++
  hw/vfio/pci.h  | 1 +
  hw/vfio/user.c | 7 +++++--
  hw/vfio/user.h | 1 +
  4 files changed, 11 insertions(+), 2 deletions(-)>
diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
index 005fcf8..3ae3a13 100644
--- a/hw/vfio/pci.c
+++ b/hw/vfio/pci.c
@@ -3729,6 +3729,9 @@ static void vfio_user_pci_realize(PCIDevice *pdev, Error 
**errp)
      if (udev->no_post) {
          proxy->flags |= VFIO_PROXY_NO_POST;
      }
+    if (udev->wait_time) {
+        proxy->wait_time = udev->wait_time;
+    }
vfio_user_validate_version(proxy, &err);
      if (err != NULL) {
@@ -3848,6 +3851,7 @@ static Property vfio_user_pci_dev_properties[] = {
      DEFINE_PROP_BOOL("secure-dma", VFIOUserPCIDevice, secure_dma, false),
      DEFINE_PROP_BOOL("x-send-queued", VFIOUserPCIDevice, send_queued, false),
      DEFINE_PROP_BOOL("x-no-posted-writes", VFIOUserPCIDevice, no_post, false),
+    DEFINE_PROP_UINT32("x-msg-timeout", VFIOUserPCIDevice, wait_time, 0),

I see that patch 9 introduced :

+static int wait_time = 5000;   /* wait up to 5 sec for busy servers */

May be use a define instead and assign  "x-msg-timeout" to this default
value.

how do you plan to use the "x-msg-timeout" property ?

Thanks,

C.

      DEFINE_PROP_END_OF_LIST(),
  };
diff --git a/hw/vfio/pci.h b/hw/vfio/pci.h
index c4b8e5c..48b19ee 100644
--- a/hw/vfio/pci.h
+++ b/hw/vfio/pci.h
@@ -199,6 +199,7 @@ struct VFIOUserPCIDevice {
      bool secure_dma;    /* disable shared mem for DMA */
      bool send_queued;   /* all sends are queued */
      bool no_post;       /* all regions write are sync */
+    uint32_t wait_time; /* timeout for message replies */
  };
/* Use uin32_t for vendor & device so PCI_ANY_ID expands and cannot match hw */
diff --git a/hw/vfio/user.c b/hw/vfio/user.c
index ddf9e13..a9e6cf5 100644
--- a/hw/vfio/user.c
+++ b/hw/vfio/user.c
@@ -717,7 +717,8 @@ static void vfio_user_send_wait(VFIOProxy *proxy, 
VFIOUserHdr *hdr,
if (ret == 0) {
          while (!msg->complete) {
-            if (!qemu_cond_timedwait(&msg->cv, &proxy->lock, wait_time)) {
+            if (!qemu_cond_timedwait(&msg->cv, &proxy->lock,
+                                     proxy->wait_time)) {
                  VFIOUserMsgQ *list;
list = msg->pending ? &proxy->pending : &proxy->outgoing;
@@ -759,7 +760,8 @@ static void vfio_user_wait_reqs(VFIOProxy *proxy)
          msg = proxy->last_nowait;
          msg->type = VFIO_MSG_WAIT;
          while (!msg->complete) {
-            if (!qemu_cond_timedwait(&msg->cv, &proxy->lock, wait_time)) {
+            if (!qemu_cond_timedwait(&msg->cv, &proxy->lock,
+                                     proxy->wait_time)) {
                  VFIOUserMsgQ *list;
list = msg->pending ? &proxy->pending : &proxy->outgoing;
@@ -881,6 +883,7 @@ VFIOProxy *vfio_user_connect_dev(SocketAddress *addr, Error 
**errp)
proxy->flags = VFIO_PROXY_CLIENT;
      proxy->state = VFIO_PROXY_CONNECTED;
+    proxy->wait_time = wait_time;
qemu_mutex_init(&proxy->lock);
      qemu_cond_init(&proxy->close_cv);
diff --git a/hw/vfio/user.h b/hw/vfio/user.h
index d88ffe5..f711861 100644
--- a/hw/vfio/user.h
+++ b/hw/vfio/user.h
@@ -62,6 +62,7 @@ typedef struct VFIOProxy {
      uint64_t max_bitmap;
      uint64_t migr_pgsize;
      int flags;
+    uint32_t wait_time;
      QemuCond close_cv;
      AioContext *ctx;
      QEMUBH *req_bh;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]