On Fri, 2 Aug 2019 15:35:31 +0200 "kraxel@xxxxxxxxxx" <kraxel@xxxxxxxxxx> wrote: > Hi, > > > > > Couldn't you expose this as another capability within the IRQ_INFO return > > > > data? If you were to define it as a macro, I assume that means it would be > > > > hard coded, in which case this probably becomes an Intel specific IRQ, rather > > > > than what appears to be framed as a generic graphics IRQ extension. A new > > > > capability could instead allow the vendor to specify their own value, where > > > > we could define how userspace should interpret and make use of this value. > > > > Thanks, > > > Good suggestion. Currently, vfio_irq_info is used to save one irq > > > info. What we need here is to use it to save several events info. > > > Maybe we could figure out a general layout of this capability so that > > > it can be leveraged by others, not only for display irq/events. > > > > You could also expose a device specific IRQ with count > 1 (ie. similar > > to MSI/X) and avoid munging the eventfd value, which is not something > > we do elsewhere, at least in vfio. Thanks, > > Well, the basic idea is to use the eventfd value to signal the kind of > changes which did happen, simliar to IRQ status register bits. > > So, when the guest changes the primary plane, the mdev driver notes > this. Same with the cursor plane. On vblank (when the guests update > is actually applied) the mdev driver wakes the eventfd and uses eventfd > value to signal whenever primary plane or cursor plane or both did > change. > > Then userspace knows which planes need an update without an extra > VFIO_DEVICE_QUERY_GFX_PLANE roundtrip to the kernel. > > Alternatively we could have one eventfd for each change type. But given > that these changes are typically applied at the same time (vblank) we > would have multiple eventfds being signaled at the same time. Which > doesn't look ideal to me ... Good point, looking at the bits in the eventfd value seems better than a flood of concurrent interrupts. Thanks, Alex