All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steve Sistare <steven.sistare@oracle.com>
To: qemu-devel@nongnu.org
Cc: "Daniel P. Berrange" <berrange@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	"Jason Zeng" <jason.zeng@linux.intel.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Juan Quintela" <quintela@redhat.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	"Eric Blake" <eblake@redhat.com>,
	"Markus Armbruster" <armbru@redhat.com>,
	"Zheng Chuan" <zhengchuan@huawei.com>,
	"Alex Williamson" <alex.williamson@redhat.com>,
	"Steve Sistare" <steven.sistare@oracle.com>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>
Subject: [PATCH V7 23/29] vhost: reset vhost devices for cpr
Date: Wed, 22 Dec 2021 11:05:28 -0800	[thread overview]
Message-ID: <1640199934-455149-24-git-send-email-steven.sistare@oracle.com> (raw)
In-Reply-To: <1640199934-455149-1-git-send-email-steven.sistare@oracle.com>

A vhost device is implicitly preserved across re-exec because its fd is not
closed, and the value of the fd is specified on the command line for the
new qemu to find.  However, new qemu issues an VHOST_RESET_OWNER ioctl,
which fails because the device already has an owner.  To fix, reset the
owner prior to exec.

Signed-off-by: Mark Kanda <mark.kanda@oracle.com>
Signed-off-by: Steve Sistare <steven.sistare@oracle.com>
---
 hw/virtio/vhost.c         | 11 +++++++++++
 include/hw/virtio/vhost.h |  1 +
 migration/cpr.c           |  2 ++
 3 files changed, 14 insertions(+)

diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
index 20913cf..35d0836 100644
--- a/hw/virtio/vhost.c
+++ b/hw/virtio/vhost.c
@@ -1853,6 +1853,17 @@ void vhost_dev_stop(struct vhost_dev *hdev, VirtIODevice *vdev)
     hdev->vdev = NULL;
 }
 
+void vhost_dev_reset_all(void)
+{
+    struct vhost_dev *dev;
+
+    QLIST_FOREACH(dev, &vhost_devices, entry) {
+        if (dev->vhost_ops->vhost_reset_device(dev) < 0) {
+            VHOST_OPS_DEBUG("vhost_reset_device failed");
+        }
+    }
+}
+
 int vhost_net_set_backend(struct vhost_dev *hdev,
                           struct vhost_vring_file *file)
 {
diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h
index 58a73e7..d436eba 100644
--- a/include/hw/virtio/vhost.h
+++ b/include/hw/virtio/vhost.h
@@ -114,6 +114,7 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaque,
 void vhost_dev_cleanup(struct vhost_dev *hdev);
 int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev);
 void vhost_dev_stop(struct vhost_dev *hdev, VirtIODevice *vdev);
+void vhost_dev_reset_all(void);
 int vhost_dev_enable_notifiers(struct vhost_dev *hdev, VirtIODevice *vdev);
 void vhost_dev_disable_notifiers(struct vhost_dev *hdev, VirtIODevice *vdev);
 
diff --git a/migration/cpr.c b/migration/cpr.c
index cee82cf..4229c17 100644
--- a/migration/cpr.c
+++ b/migration/cpr.c
@@ -8,6 +8,7 @@
 #include "qemu/osdep.h"
 #include "exec/memory.h"
 #include "hw/vfio/vfio-common.h"
+#include "hw/virtio/vhost.h"
 #include "io/channel-buffer.h"
 #include "io/channel-file.h"
 #include "migration.h"
@@ -109,6 +110,7 @@ void qmp_cpr_exec(strList *args, Error **errp)
     if (cpr_state_save(errp)) {
         return;
     }
+    vhost_dev_reset_all();
     qemu_system_exec_request(args);
 }
 
-- 
1.8.3.1



  parent reply	other threads:[~2021-12-22 19:50 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-22 19:05 [PATCH V7 00/29] Live Update Steve Sistare
2021-12-22 19:05 ` [PATCH V7 01/29] memory: qemu_check_ram_volatile Steve Sistare
2022-02-24 18:28   ` Dr. David Alan Gilbert
2022-03-03 15:55     ` Steven Sistare
2022-03-04 12:47   ` Philippe Mathieu-Daudé
2021-12-22 19:05 ` [PATCH V7 02/29] migration: fix populate_vfio_info Steve Sistare
2022-02-24 18:42   ` Peter Maydell
2022-03-03 15:55     ` Steven Sistare
2022-03-03 16:21       ` Peter Maydell
2022-03-03 16:38         ` Steven Sistare
2021-12-22 19:05 ` [PATCH V7 03/29] migration: qemu file wrappers Steve Sistare
2022-02-24 18:21   ` Dr. David Alan Gilbert
2022-03-03 15:55     ` Steven Sistare
2021-12-22 19:05 ` [PATCH V7 04/29] migration: simplify savevm Steve Sistare
2022-02-24 18:25   ` Dr. David Alan Gilbert
2022-03-03 15:55     ` Steven Sistare
2021-12-22 19:05 ` [PATCH V7 05/29] vl: start on wakeup request Steve Sistare
2022-02-24 18:51   ` Dr. David Alan Gilbert
2022-03-03 15:56     ` Steven Sistare
2021-12-22 19:05 ` [PATCH V7 06/29] cpr: reboot mode Steve Sistare
2021-12-22 19:05 ` [PATCH V7 07/29] cpr: reboot HMP interfaces Steve Sistare
2021-12-22 19:05 ` [PATCH V7 08/29] memory: flat section iterator Steve Sistare
2022-03-04 12:48   ` Philippe Mathieu-Daudé
2022-03-07 14:42     ` Steven Sistare
2022-03-09 14:18   ` Marc-André Lureau
2021-12-22 19:05 ` [PATCH V7 09/29] oslib: qemu_clear_cloexec Steve Sistare
2021-12-22 19:05 ` [PATCH V7 10/29] machine: memfd-alloc option Steve Sistare
2022-02-18  8:05   ` Guoyi Tu
2022-03-03 15:55     ` Steven Sistare
2022-02-24 17:56   ` Dr. David Alan Gilbert
2022-03-03 15:56     ` Steven Sistare
2022-03-03 17:21   ` Michael S. Tsirkin
2022-03-04 10:41     ` Igor Mammedov
2022-03-07 14:41       ` Steven Sistare
2022-03-08  6:50         ` Michael S. Tsirkin
2022-03-08  7:20           ` Igor Mammedov
2022-03-10 15:36             ` Steven Sistare
2022-03-10 16:00               ` Igor Mammedov
2022-03-10 17:28                 ` Steven Sistare
2022-03-10 18:18                   ` Steven Sistare
2022-03-11  9:42                     ` Igor Mammedov
2022-03-29 17:43                       ` Steven Sistare
2022-03-11 10:08         ` Daniel P. Berrangé
2022-03-11 10:25     ` David Hildenbrand
2022-03-11  9:54   ` David Hildenbrand
2021-12-22 19:05 ` [PATCH V7 11/29] qapi: list utility functions Steve Sistare
2022-03-09 14:11   ` Marc-André Lureau
2022-03-11 16:45     ` Steven Sistare
2022-03-11 21:59       ` Marc-André Lureau
2021-12-22 19:05 ` [PATCH V7 12/29] vl: helper to request re-exec Steve Sistare
2022-03-09 14:16   ` Marc-André Lureau
2022-03-11 16:45     ` Steven Sistare
2021-12-22 19:05 ` [PATCH V7 13/29] cpr: preserve extra state Steve Sistare
2021-12-22 19:05 ` [PATCH V7 14/29] cpr: restart mode Steve Sistare
2021-12-22 19:05 ` [PATCH V7 15/29] cpr: restart HMP interfaces Steve Sistare
2021-12-22 19:05 ` [PATCH V7 16/29] hostmem-memfd: cpr for memory-backend-memfd Steve Sistare
2021-12-22 19:05 ` [PATCH V7 17/29] pci: export functions for cpr Steve Sistare
2021-12-22 23:07   ` Michael S. Tsirkin
2022-01-05 17:22     ` Steven Sistare
2022-01-05 20:16       ` Michael S. Tsirkin
2022-01-06 22:48         ` Steven Sistare
2022-01-07 10:03           ` Michael S. Tsirkin
2021-12-22 19:05 ` [PATCH V7 18/29] vfio-pci: refactor " Steve Sistare
2022-03-03 23:21   ` Alex Williamson
2022-03-07 14:42     ` Steven Sistare
2021-12-22 19:05 ` [PATCH V7 19/29] vfio-pci: cpr part 1 (fd and dma) Steve Sistare
2021-12-22 23:15   ` Michael S. Tsirkin
2022-01-05 17:24     ` Steven Sistare
2022-01-05 21:14       ` Michael S. Tsirkin
2022-01-05 21:40         ` Steven Sistare
2022-01-05 23:09           ` Michael S. Tsirkin
2022-01-05 23:24             ` Steven Sistare
2022-01-06  9:12               ` Michael S. Tsirkin
2022-01-06 19:13                 ` Steven Sistare
2022-03-07 22:16   ` Alex Williamson
2022-03-10 15:00     ` Steven Sistare
2022-03-10 18:35       ` Alex Williamson
2022-03-10 19:55         ` Steven Sistare
2022-03-10 22:30           ` Alex Williamson
2022-03-11 16:22             ` Steven Sistare
2021-12-22 19:05 ` [PATCH V7 20/29] vfio-pci: cpr part 2 (msi) Steve Sistare
2021-12-22 19:05 ` [PATCH V7 21/29] vfio-pci: cpr part 3 (intx) Steve Sistare
2021-12-22 19:05 ` [PATCH V7 22/29] vfio-pci: recover from unmap-all-vaddr failure Steve Sistare
2021-12-22 19:05 ` Steve Sistare [this message]
2021-12-22 19:05 ` [PATCH V7 24/29] loader: suppress rom_reset during cpr Steve Sistare
2021-12-22 19:05 ` [PATCH V7 25/29] chardev: cpr framework Steve Sistare
2021-12-22 19:05 ` [PATCH V7 26/29] chardev: cpr for simple devices Steve Sistare
2021-12-22 19:05 ` [PATCH V7 27/29] chardev: cpr for pty Steve Sistare
2021-12-22 19:05 ` [PATCH V7 28/29] chardev: cpr for sockets Steve Sistare
2022-02-18  9:03   ` Guoyi Tu
2022-03-03 15:55     ` Steven Sistare
2021-12-22 19:05 ` [PATCH V7 29/29] cpr: only-cpr-capable option Steve Sistare
2022-02-18  9:43   ` Guoyi Tu
2022-03-03 15:54     ` Steven Sistare
2022-01-07 18:45 ` [PATCH V7 00/29] Live Update Steven Sistare
2022-02-18 13:36   ` Steven Sistare

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1640199934-455149-24-git-send-email-steven.sistare@oracle.com \
    --to=steven.sistare@oracle.com \
    --cc=alex.bennee@linaro.org \
    --cc=alex.williamson@redhat.com \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=eblake@redhat.com \
    --cc=jason.zeng@linux.intel.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=stefanha@redhat.com \
    --cc=zhengchuan@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.