On Mon, Jul 10, 2017 at 04:13:54PM +0200, Laurent Vivier wrote: > > static void virtconsole_realize(DeviceState *dev, Error **errp) > > { > > VirtIOSerialPort *port = VIRTIO_SERIAL_PORT(dev); > > @@ -233,6 +253,7 @@ static void virtserialport_class_init(ObjectClass > > *klass, void *data) > > k->unrealize = virtconsole_unrealize; > > k->have_data = flush_buf; > > k->set_guest_connected = set_guest_connected; > > + k->enable_backend = virtconsole_enable_backend; > > Why don't you register a vm_state change handler to change the state of > the virtconsole according to the state of the machine instead of adding > a new function in the VirtIOSerialPortClass? > > See a23a6d1 ("virtio-rng: stop virtqueue while the CPU is stopped") > > Thanks, > Laurent
In fact that commit does it the wrong way IMHO. The order of this call wrt other virtio calls is not guaranteed. IMHO the right way is to set a vm state change handler in VirtioBusClass or status change handler in VirtioDeviceClass. -- MST