* Halil Pasic (pa...@linux.vnet.ibm.com) wrote: > > > On 05/08/2017 07:27 PM, Dr. David Alan Gilbert wrote: > > * Halil Pasic (pa...@linux.vnet.ibm.com) wrote: > >> Turn on migration for the channel subsystem and the new scheme for > >> migrating virtio-ccw proxy devices (instead of letting the transport > >> independent child device migrate it's proxy, use the usual > >> DeviceClass.vmsd mechanism) for future machine versions. > > [..] > > >> +void css_register_vmstate(void) > >> +{ > >> + vmstate_register(NULL, 0, &vmstate_css, &channel_subsys); > >> +} > >> + > > > > Why isn't that attached to a device vmsd? > > Because there is no device. The channel subsystem is not modeled > as a QEMU device but it does have state which needs to be > migrated.
Ah OK. > [..] > > >> @@ -1365,6 +1373,11 @@ static void virtio_ccw_device_plugged(DeviceState > >> *d, Error **errp) > >> sch->id.cu_model = virtio_bus_get_vdev_id(&dev->bus); > >> > >> > >> + /* Avoid generating unknown section for legacy migration target. */ > >> + if (!css_migration_enabled()) { > >> + DEVICE_GET_CLASS(ccw_dev)->vmsd = NULL; > >> + } > >> + > > > > That's a very odd thing to do; can't you use a .needed at the > > top level of the vmstate_virtio_ccw_dev to avoid having to > > set it to NULL like this? > > > > I agree it's odd. As far as I remember I can't use .needed but > I will double check. You can have top level .needed's - both vmstate_globalstate in migration.c and colo's colo_state use them. Dave > Many thanks for your review! > > Halil > -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK