Re: [PATCH V2 4/5] virtio-pci: implement synchronize_vqs()
From: Cornelia Huck
Date: Wed Apr 13 2022 - 02:41:48 EST
On Wed, Apr 13 2022, Jason Wang <jasowang@xxxxxxxxxx> wrote:
> On Wed, Apr 13, 2022 at 12:49 AM Cornelia Huck <cohuck@xxxxxxxxxx> wrote:
>>
>> 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?)
>
> I think only vring interrupts, since the config interrupt hardening is
> done via 22b7050a024d7 ("virtio: defer config changed notifications")
Ah thanks, I even reviewed that one back then :)