Re: [RFC PATCH v4 2/6] vfio: Introduce vGPU display irq type

From: Alex Williamson
Date: Mon Jul 22 2019 - 21:18:35 EST


On Tue, 23 Jul 2019 01:08:19 +0000
"Zhang, Tina" <tina.zhang@xxxxxxxxx> wrote:

> > -----Original Message-----
> > From: Alex Williamson [mailto:alex.williamson@xxxxxxxxxx]
> > Sent: Tuesday, July 23, 2019 3:41 AM
> > To: Lu, Kechen <kechen.lu@xxxxxxxxx>
> > Cc: intel-gvt-dev@xxxxxxxxxxxxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx; linux-
> > kernel@xxxxxxxxxxxxxxx; Zhang, Tina <tina.zhang@xxxxxxxxx>;
> > kraxel@xxxxxxxxxx; zhenyuw@xxxxxxxxxxxxxxx; Lv, Zhiyuan
> > <zhiyuan.lv@xxxxxxxxx>; Wang, Zhi A <zhi.a.wang@xxxxxxxxx>; Tian, Kevin
> > <kevin.tian@xxxxxxxxx>; Yuan, Hang <hang.yuan@xxxxxxxxx>
> > Subject: Re: [RFC PATCH v4 2/6] vfio: Introduce vGPU display irq type
> >
> > On Mon, 22 Jul 2019 05:28:35 +0000
> > "Lu, Kechen" <kechen.lu@xxxxxxxxx> wrote:
> >
> > > Hi,
> > >
> > > > -----Original Message-----
> > > > From: Alex Williamson [mailto:alex.williamson@xxxxxxxxxx]
> > > > Sent: Saturday, July 20, 2019 12:25 AM
> > > > To: Lu, Kechen <kechen.lu@xxxxxxxxx>
> > > > Cc: intel-gvt-dev@xxxxxxxxxxxxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx; linux-
> > > > kernel@xxxxxxxxxxxxxxx; Zhang, Tina <tina.zhang@xxxxxxxxx>;
> > > > kraxel@xxxxxxxxxx; zhenyuw@xxxxxxxxxxxxxxx; Lv, Zhiyuan
> > > > <zhiyuan.lv@xxxxxxxxx>; Wang, Zhi A <zhi.a.wang@xxxxxxxxx>; Tian,
> > > > Kevin <kevin.tian@xxxxxxxxx>; Yuan, Hang <hang.yuan@xxxxxxxxx>
> > > > Subject: Re: [RFC PATCH v4 2/6] vfio: Introduce vGPU display irq
> > > > type
> > > >
> > > > On Thu, 18 Jul 2019 23:56:36 +0800
> > > > Kechen Lu <kechen.lu@xxxxxxxxx> wrote:
> > > >
> > > > > From: Tina Zhang <tina.zhang@xxxxxxxxx>
> > > > >
> > > > > Introduce vGPU specific irq type VFIO_IRQ_TYPE_GFX, and
> > > > > VFIO_IRQ_SUBTYPE_GFX_DISPLAY_IRQ as the subtype for vGPU display
> > > > >
> > > > > Signed-off-by: Tina Zhang <tina.zhang@xxxxxxxxx>
> > > > > ---
> > > > > include/uapi/linux/vfio.h | 3 +++
> > > > > 1 file changed, 3 insertions(+)
> > > > >
> > > > > diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h
> > > > > index be6adab4f759..df28b17a6e2e 100644
> > > > > --- a/include/uapi/linux/vfio.h
> > > > > +++ b/include/uapi/linux/vfio.h
> > > > > @@ -469,6 +469,9 @@ struct vfio_irq_info_cap_type {
> > > > > __u32 subtype; /* type specific */ };
> > > > >
> > > > > +#define VFIO_IRQ_TYPE_GFX (1)
> > > > > +#define VFIO_IRQ_SUBTYPE_GFX_DISPLAY_IRQ (1)
> > > > > +
> > > >
> > > > Please include a description defining exactly what this IRQ is intended to
> > signal.
> > > > For instance, if another vGPU vendor wanted to implement this in
> > > > their driver and didn't have the QEMU code for reference to what it
> > > > does with the IRQ, what would they need to know? Thanks,
> > > >
> > > > Alex
> > > >
> > >
> > > Yes, that makes more sense. I'll add the description for it at next version
> > patch.
> > >
> > > BTW, may I have one more question? In the current design ideas, we
> > > partitioned the vGPU display eventfd counted 8-byte value into at most
> > > 8 events to deliver multiple display events, so we need different
> > > increasement counter value to differentiate the events. As this is the
> > > exposed thing the QEMU has to know, we plan adds a macro here
> > > VFIO_IRQ_SUBTYPE_GFX_DISPLAY_EVENTFD_BASE_SHIFT to make sure
> > the
> > > partitions shift in 1 byte, does it make sense putting here? Looking forward
> > to your and Gerd's comments. Thanks!
> >
> > 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,

Alex