* [Qemu-devel] [PATCH v2 0/2] vhost-user-bridge reconnect regression @ 2017-08-29 15:27 Marc-André Lureau 2017-08-29 15:27 ` [Qemu-devel] [PATCH v2 1/2] libvhost-user: support resuming vq->last_avail_idx based on used_idx Marc-André Lureau ` (2 more replies) 0 siblings, 3 replies; 6+ messages in thread From: Marc-André Lureau @ 2017-08-29 15:27 UTC (permalink / raw) To: qemu-devel; +Cc: victork, qemu-stable, mst, Marc-André Lureau Hi, libvhost-user doesn't support resuming with the same trick vubr had since commit 523b018dde3b7650fe5401d0499b30cf2f117515. The following two patches fix that regression. Thanks Marc-André Lureau (2): libvhost-user: support resuming vq->last_avail_idx based on used_idx vhost-user-bridge: fix resume regression (since 2.9) contrib/libvhost-user/libvhost-user.h | 7 +++++++ contrib/libvhost-user/libvhost-user.c | 13 +++++++++++++ tests/vhost-user-bridge.c | 7 +++++++ 3 files changed, 27 insertions(+) -- 2.14.1.146.gd35faa819 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH v2 1/2] libvhost-user: support resuming vq->last_avail_idx based on used_idx 2017-08-29 15:27 [Qemu-devel] [PATCH v2 0/2] vhost-user-bridge reconnect regression Marc-André Lureau @ 2017-08-29 15:27 ` Marc-André Lureau 2017-08-29 15:27 ` [Qemu-devel] [PATCH v2 2/2] vhost-user-bridge: fix resume regression (since 2.9) Marc-André Lureau 2017-08-29 15:34 ` [Qemu-devel] [PATCH v2 0/2] vhost-user-bridge reconnect regression Michael S. Tsirkin 2 siblings, 0 replies; 6+ messages in thread From: Marc-André Lureau @ 2017-08-29 15:27 UTC (permalink / raw) To: qemu-devel; +Cc: victork, qemu-stable, mst, Marc-André Lureau This is the same workaround as commit 523b018dde3b765, which was lost with libvhost-user transition in commit e10e798c85c2331. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- contrib/libvhost-user/libvhost-user.h | 7 +++++++ contrib/libvhost-user/libvhost-user.c | 13 +++++++++++++ 2 files changed, 20 insertions(+) diff --git a/contrib/libvhost-user/libvhost-user.h b/contrib/libvhost-user/libvhost-user.h index 53ef222c0b..4021f1124e 100644 --- a/contrib/libvhost-user/libvhost-user.h +++ b/contrib/libvhost-user/libvhost-user.h @@ -132,6 +132,7 @@ typedef void (*vu_set_features_cb) (VuDev *dev, uint64_t features); typedef int (*vu_process_msg_cb) (VuDev *dev, VhostUserMsg *vmsg, int *do_reply); typedef void (*vu_queue_set_started_cb) (VuDev *dev, int qidx, bool started); +typedef bool (*vu_queue_is_processed_in_order_cb) (VuDev *dev, int qidx); typedef struct VuDevIface { /* called by VHOST_USER_GET_FEATURES to get the features bitmask */ @@ -148,6 +149,12 @@ typedef struct VuDevIface { vu_process_msg_cb process_msg; /* tells when queues can be processed */ vu_queue_set_started_cb queue_set_started; + /* + * If the queue is processed in order, in which case it will be + * resumed to vring.used->idx. This can help to support resuming + * on unmanaged exit/crash. + */ + vu_queue_is_processed_in_order_cb queue_is_processed_in_order; } VuDevIface; typedef void (*vu_queue_handler_cb) (VuDev *dev, int qidx); diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-user/libvhost-user.c index 35fa0c5e56..d27d6303db 100644 --- a/contrib/libvhost-user/libvhost-user.c +++ b/contrib/libvhost-user/libvhost-user.c @@ -521,6 +521,19 @@ vu_set_vring_addr_exec(VuDev *dev, VhostUserMsg *vmsg) vq->used_idx = vq->vring.used->idx; + if (vq->last_avail_idx != vq->used_idx) { + bool resume = dev->iface->queue_is_processed_in_order && + dev->iface->queue_is_processed_in_order(dev, index); + + DPRINT("Last avail index != used index: %u != %u%s\n", + vq->last_avail_idx, vq->used_idx, + resume ? ", resuming" : ""); + + if (resume) { + vq->shadow_avail_idx = vq->last_avail_idx = vq->used_idx; + } + } + return false; } -- 2.14.1.146.gd35faa819 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH v2 2/2] vhost-user-bridge: fix resume regression (since 2.9) 2017-08-29 15:27 [Qemu-devel] [PATCH v2 0/2] vhost-user-bridge reconnect regression Marc-André Lureau 2017-08-29 15:27 ` [Qemu-devel] [PATCH v2 1/2] libvhost-user: support resuming vq->last_avail_idx based on used_idx Marc-André Lureau @ 2017-08-29 15:27 ` Marc-André Lureau 2017-08-29 15:34 ` [Qemu-devel] [PATCH v2 0/2] vhost-user-bridge reconnect regression Michael S. Tsirkin 2 siblings, 0 replies; 6+ messages in thread From: Marc-André Lureau @ 2017-08-29 15:27 UTC (permalink / raw) To: qemu-devel; +Cc: victork, qemu-stable, mst, Marc-André Lureau Commit e10e798c85c2331 switched to libvhost-user which lacked support for resuming the avail_idx based on used_idx. Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1485867 Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- tests/vhost-user-bridge.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c index 1e5b5ca3da..f922cc75ae 100644 --- a/tests/vhost-user-bridge.c +++ b/tests/vhost-user-bridge.c @@ -466,11 +466,18 @@ vubr_panic(VuDev *dev, const char *msg) vubr->quit = 1; } +static bool +vubr_queue_is_processed_in_order(VuDev *dev, int qidx) +{ + return true; +} + static const VuDevIface vuiface = { .get_features = vubr_get_features, .set_features = vubr_set_features, .process_msg = vubr_process_msg, .queue_set_started = vubr_queue_set_started, + .queue_is_processed_in_order = vubr_queue_is_processed_in_order, }; static void -- 2.14.1.146.gd35faa819 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v2 0/2] vhost-user-bridge reconnect regression 2017-08-29 15:27 [Qemu-devel] [PATCH v2 0/2] vhost-user-bridge reconnect regression Marc-André Lureau 2017-08-29 15:27 ` [Qemu-devel] [PATCH v2 1/2] libvhost-user: support resuming vq->last_avail_idx based on used_idx Marc-André Lureau 2017-08-29 15:27 ` [Qemu-devel] [PATCH v2 2/2] vhost-user-bridge: fix resume regression (since 2.9) Marc-André Lureau @ 2017-08-29 15:34 ` Michael S. Tsirkin 2017-08-29 15:57 ` Marc-André Lureau 2 siblings, 1 reply; 6+ messages in thread From: Michael S. Tsirkin @ 2017-08-29 15:34 UTC (permalink / raw) To: Marc-André Lureau; +Cc: qemu-devel, victork, qemu-stable On Tue, Aug 29, 2017 at 05:27:49PM +0200, Marc-André Lureau wrote: > Hi, > > libvhost-user doesn't support resuming with the same trick vubr had > since commit 523b018dde3b7650fe5401d0499b30cf2f117515. The following > two patches fix that regression. Thanks! Do we need this in 2.10? If not pls ping after 2.10 is out. > Thanks > > Marc-André Lureau (2): > libvhost-user: support resuming vq->last_avail_idx based on used_idx > vhost-user-bridge: fix resume regression (since 2.9) > > contrib/libvhost-user/libvhost-user.h | 7 +++++++ > contrib/libvhost-user/libvhost-user.c | 13 +++++++++++++ > tests/vhost-user-bridge.c | 7 +++++++ > 3 files changed, 27 insertions(+) > > -- > 2.14.1.146.gd35faa819 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v2 0/2] vhost-user-bridge reconnect regression 2017-08-29 15:34 ` [Qemu-devel] [PATCH v2 0/2] vhost-user-bridge reconnect regression Michael S. Tsirkin @ 2017-08-29 15:57 ` Marc-André Lureau 2017-09-15 0:07 ` [Qemu-devel] [Qemu-stable] " Michael Roth 0 siblings, 1 reply; 6+ messages in thread From: Marc-André Lureau @ 2017-08-29 15:57 UTC (permalink / raw) To: Michael S. Tsirkin; +Cc: Victor Kaplansky, QEMU, qemu-stable Hi On Tue, Aug 29, 2017 at 5:34 PM, Michael S. Tsirkin <mst@redhat.com> wrote: > On Tue, Aug 29, 2017 at 05:27:49PM +0200, Marc-André Lureau wrote: >> Hi, >> >> libvhost-user doesn't support resuming with the same trick vubr had >> since commit 523b018dde3b7650fe5401d0499b30cf2f117515. The following >> two patches fix that regression. > > > Thanks! Do we need this in 2.10? If not pls ping after 2.10 is out. I think it's not necessary since the regression appeared in 2.9 already, and it's a manual test. I'll ping after 2.10 > >> Thanks >> >> Marc-André Lureau (2): >> libvhost-user: support resuming vq->last_avail_idx based on used_idx >> vhost-user-bridge: fix resume regression (since 2.9) >> >> contrib/libvhost-user/libvhost-user.h | 7 +++++++ >> contrib/libvhost-user/libvhost-user.c | 13 +++++++++++++ >> tests/vhost-user-bridge.c | 7 +++++++ >> 3 files changed, 27 insertions(+) >> >> -- >> 2.14.1.146.gd35faa819 > -- Marc-André Lureau ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [Qemu-stable] [PATCH v2 0/2] vhost-user-bridge reconnect regression 2017-08-29 15:57 ` Marc-André Lureau @ 2017-09-15 0:07 ` Michael Roth 0 siblings, 0 replies; 6+ messages in thread From: Michael Roth @ 2017-09-15 0:07 UTC (permalink / raw) To: Michael S. Tsirkin, Marc-André Lureau Cc: Victor Kaplansky, QEMU, qemu-stable Quoting Marc-André Lureau (2017-08-29 10:57:01) > Hi > > On Tue, Aug 29, 2017 at 5:34 PM, Michael S. Tsirkin <mst@redhat.com> wrote: > > On Tue, Aug 29, 2017 at 05:27:49PM +0200, Marc-André Lureau wrote: > >> Hi, > >> > >> libvhost-user doesn't support resuming with the same trick vubr had > >> since commit 523b018dde3b7650fe5401d0499b30cf2f117515. The following > >> two patches fix that regression. > > > > > > Thanks! Do we need this in 2.10? If not pls ping after 2.10 is out. > > I think it's not necessary since the regression appeared in 2.9 > already, and it's a manual test. > > I'll ping after 2.10 FYI I'm looking to get v2.10.1 out this month, freeze will likely be set for Sep. 25th if you're looking to get this in. > > > > >> Thanks > >> > >> Marc-André Lureau (2): > >> libvhost-user: support resuming vq->last_avail_idx based on used_idx > >> vhost-user-bridge: fix resume regression (since 2.9) > >> > >> contrib/libvhost-user/libvhost-user.h | 7 +++++++ > >> contrib/libvhost-user/libvhost-user.c | 13 +++++++++++++ > >> tests/vhost-user-bridge.c | 7 +++++++ > >> 3 files changed, 27 insertions(+) > >> > >> -- > >> 2.14.1.146.gd35faa819 > > > > > > -- > Marc-André Lureau > ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-09-15 0:35 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-08-29 15:27 [Qemu-devel] [PATCH v2 0/2] vhost-user-bridge reconnect regression Marc-André Lureau 2017-08-29 15:27 ` [Qemu-devel] [PATCH v2 1/2] libvhost-user: support resuming vq->last_avail_idx based on used_idx Marc-André Lureau 2017-08-29 15:27 ` [Qemu-devel] [PATCH v2 2/2] vhost-user-bridge: fix resume regression (since 2.9) Marc-André Lureau 2017-08-29 15:34 ` [Qemu-devel] [PATCH v2 0/2] vhost-user-bridge reconnect regression Michael S. Tsirkin 2017-08-29 15:57 ` Marc-André Lureau 2017-09-15 0:07 ` [Qemu-devel] [Qemu-stable] " Michael Roth
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).