Re: [PATCH V2 4/5] virtio-pci: implement synchronize_vqs()

From: Cornelia Huck
Date: Tue Apr 12 2022 - 12:49:16 EST


On Tue, Apr 12 2022, Halil Pasic <pasic@xxxxxxxxxxxxx> wrote:

> On Mon, 11 Apr 2022 16:27:41 +0200
> Cornelia Huck <cohuck@xxxxxxxxxx> wrote:

>> My main concern is that we would need to synchronize against a single
>> interrupt that covers all kinds of I/O interrupts, not just a single
>> device...
>>
>
> Could we synchronize on struct airq_info's lock member? If we were
> to grab all of these that might be involved...

Hm, that could possibly narrow the sync down to a subset, which seems
better. For devices still using classic interrupts, per-device sync
would be easy.

>
> AFAIU for the synchronize implementation we need a lock or a set of locks
> that contain all the possible vring_interrupt() calls with the queuues
> that belong to the given device as a critical section. That way, one
> has the acquire's and release's in place so that the vrign_interrupt()
> either guaranteed to finish before the change of driver_ready is
> guaranteed to be complete, or it is guaranteed to see the change.
>
> In any case, I guess we should first get clear on the first part. I.e.
> when do we want to allow host->guest notifications.

Also, whether we just care about vring interrupts, or general device
interrupts (not sure if a config change interrupt may also trigger
things we do not want to trigger?)