[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 09/24] ui/vdagent: fix serial reset of guest agent
From: |
Gerd Hoffmann |
Subject: |
[PULL 09/24] ui/vdagent: fix serial reset of guest agent |
Date: |
Tue, 27 Sep 2022 10:18:57 +0200 |
From: Marc-André Lureau <marcandre.lureau@redhat.com>
In order to reset the guest agent, we send CLOSED & OPENED events.
They are correctly received by the guest kernel. However, they might not
be noticed by the guest agent process, as the IO task (poll() for
example) might be wake up after both CLOSED & OPENED have been
processed.
Wait until the guest agent is disconnected to re-open our side.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20220912102455.111765-6-marcandre.lureau@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
ui/vdagent.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/ui/vdagent.c b/ui/vdagent.c
index 819e0dc1435b..4bf50f0c4d88 100644
--- a/ui/vdagent.c
+++ b/ui/vdagent.c
@@ -471,7 +471,7 @@ static void vdagent_clipboard_reset_serial(VDAgentChardev
*vd)
/* reopen the agent connection to reset the serial state */
qemu_chr_be_event(chr, CHR_EVENT_CLOSED);
- qemu_chr_be_event(chr, CHR_EVENT_OPENED);
+ /* OPENED again after the guest disconnected, see set_fe_open */
}
static void vdagent_clipboard_notify(Notifier *notifier, void *data)
@@ -875,6 +875,9 @@ static void vdagent_chr_set_fe_open(struct Chardev *chr,
int fe_open)
{
if (!fe_open) {
trace_vdagent_close();
+ /* To reset_serial, we CLOSED our side. Make sure the other end knows
we
+ * are ready again. */
+ qemu_chr_be_event(chr, CHR_EVENT_OPENED);
return;
}
--
2.37.3
- [PULL 00/24] Kraxel 20220927 patches, Gerd Hoffmann, 2022/09/27
- [PULL 01/24] ui/console: Get tab completion working again in the SDL monitor vc, Gerd Hoffmann, 2022/09/27
- [PULL 08/24] ui/clipboard: reset the serial state on reset, Gerd Hoffmann, 2022/09/27
- [PULL 07/24] ui/vdagent: always reset the clipboard serial on caps, Gerd Hoffmann, 2022/09/27
- [PULL 05/24] ui: add some vdagent related traces, Gerd Hoffmann, 2022/09/27
- [PULL 10/24] ui/console: fix three double frees in png_save(), Gerd Hoffmann, 2022/09/27
- [PULL 09/24] ui/vdagent: fix serial reset of guest agent,
Gerd Hoffmann <=
- [PULL 03/24] Revert "main-loop: Disable block backend global state assertion on Cocoa", Gerd Hoffmann, 2022/09/27
- [PULL 02/24] ui/cocoa: Run qemu_init in the main thread, Gerd Hoffmann, 2022/09/27
- [PULL 06/24] ui/clipboard: fix serial priority, Gerd Hoffmann, 2022/09/27
- [PULL 11/24] hw/usb/hcd-xhci: Check whether DMA accesses fail, Gerd Hoffmann, 2022/09/27
- [PULL 04/24] meson: Allow to enable gtk and sdl while cocoa is enabled, Gerd Hoffmann, 2022/09/27
- [PULL 16/24] usbnet: Add missing usb_wakeup() call in usbnet_receive(), Gerd Hoffmann, 2022/09/27
- [PULL 14/24] usb/msd: add usb_msd_fatal_error() and fix guest-triggerable assert, Gerd Hoffmann, 2022/09/27
- [PULL 15/24] hcd-xhci: drop operation with secondary stream arrays enabled, Gerd Hoffmann, 2022/09/27
- [PULL 12/24] hcd-ohci: Drop ohci_service_iso_td() if ed->head & OHCI_DPTR_MASK is zero, Gerd Hoffmann, 2022/09/27
- [PULL 13/24] usb/msd: move usb_msd_packet_complete(), Gerd Hoffmann, 2022/09/27