On 05/08/2017 07:27 PM, Dr. David Alan Gilbert wrote:
> * Halil Pasic ([email protected]) 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.
[..]
>> @@ -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.
Many thanks for your review!
Halil