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


Reply via email to