On (Sun) 25 Nov 2012 [15:39:14], Alon Levy wrote: > When migrating a host with with a spice agent running the mouse becomes > non operational after the migration due to the agent state being > inconsistent between the guest and the client if the client is using > semi-seamless or switch host migration. > > After migration the target client has never received the guest_open > initiated spice message. Virtio-serial holds this state information and > migrates it, so replay that over the chardev post migration. Fix is not > spice specific but spice is the only client that cares about it.
Thanks for continuing to pursue this :) > rhbz #725965. > --- > hw/virtio-serial-bus.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/hw/virtio-serial-bus.c b/hw/virtio-serial-bus.c > index efa8a81..ccce1fa 100644 > --- a/hw/virtio-serial-bus.c > +++ b/hw/virtio-serial-bus.c > @@ -641,6 +641,7 @@ static void virtio_serial_post_load_timer_cb(void *opaque) > VirtIOSerial *s = opaque; > VirtIOSerialPort *port; > uint8_t host_connected; > + VirtIOSerialPortClass *vsc; > > for (i = 0 ; i < s->post_load.nr_active_ports; ++i) { > port = s->post_load.connected[i].port; > @@ -653,6 +654,11 @@ static void virtio_serial_post_load_timer_cb(void > *opaque) > send_control_event(port, VIRTIO_CONSOLE_PORT_OPEN, > port->host_connected); > } > + vsc = VIRTIO_SERIAL_PORT_GET_CLASS(port); > + if (port->guest_connected && vsc->guest_open) { > + /* replay guest open */ > + vsc->guest_open(port); > + } I think the last time we discussed this, my objection was the guest isn't really doing an open again, and since spice depends on the guest's connectedness, spice should have a post-load hook or a similar bh that would query virtio-serial for guest connectedness status, and, if connected, do whatever setup is necessary. Adding Gerd and Markus as I think they were involved in the discussion last time as well. Amit