7/20/25 12:44 PM, Akihiko Odaki wrote:
> On 2025/07/18 17:52, Paolo Abeni wrote:
>> @@ -3333,26 +3362,23 @@ virtio_load(VirtIODevice *vdev, QEMUFile *f, int 
>> version_id)
>>           vdev->device_endian = virtio_default_endian();
>>       }
>>   
>> -    if (virtio_64bit_features_needed(vdev)) {
>> -        /*
>> -         * Subsection load filled vdev->guest_features.  Run them
>> -         * through virtio_set_features to sanity-check them against
>> -         * host_features.
>> -         */
>> -        uint64_t features64 = vdev->guest_features;
>> -        if (virtio_set_features_nocheck_maybe_co(vdev, features64) < 0) {
>> -            error_report("Features 0x%" PRIx64 " unsupported. "
>> -                         "Allowed features: 0x%" PRIx64,
>> -                         features64, vdev->host_features);
>> -            return -1;
>> -        }
>> -    } else {
>> -        if (virtio_set_features_nocheck_maybe_co(vdev, features) < 0) {
>> -            error_report("Features 0x%x unsupported. "
>> -                         "Allowed features: 0x%" PRIx64,
>> -                         features, vdev->host_features);
>> -            return -1;
>> -        }
>> +    /*
>> +     * Avoid silently breaking migration should the feature space increase
>> +     * even more in the (far away) future
>> +     */
>> +    QEMU_BUILD_BUG_ON(VIRTIO_FEATURES_DWORDS != 2);
> 
> This should be moved to around virtio_128bit_features_needed() and 
> vmstate_virtio_128bit_features as they make assumptions on the feature 
> space while virtio_load() doesn't.

Please allow me the following dumb question to try to avoid more
iterations for small changes. I guess moving the above inside
virtio_128bit_features_needed() would suffice?

Thanks,

Paolo


Reply via email to