>> @@ -250,6 +251,12 @@ void s390_virtio_device_sync(VirtIOS390Device *dev)
>>         vring = s390_virtio_next_ring(bus);
>>         virtio_queue_set_addr(dev->vdev, i, vring);
>>         virtio_queue_set_vector(dev->vdev, i, i);
>> +        idx_addr = virtio_queue_get_avail_addr(dev->vdev, i) +
>> +                     VIRTIO_VRING_AVAIL_IDX_OFFS;
>> +        stw_phys(idx_addr, 0);
>> +        idx_addr = virtio_queue_get_used_addr(dev->vdev, i) +
>> +                     VIRTIO_VRING_USED_IDX_OFFS;
>> +        stw_phys(idx_addr, 0);
> 
> Are you sure this is correct to do in the sync callback? The idea of "sync" 
> was to have a callback that can be called every time config information 
> changes.
> 
> That could even be something as simple as a byte changing in the virtio 
> device specific config space. But because we don't get callbacks when the 
> guest accesses them, we need to synchronize it with real memory.

Hmm, currently it is only called on init and virtio reset hypercall. Are you 
talking about
an intended user which is not yet finished?

Christian


Reply via email to