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

From: Alex Williamson
Date: Fri Aug 16 2019 - 16:51:54 EST


On Fri, 16 Aug 2019 10:35:24 +0800
Tina Zhang <tina.zhang@xxxxxxxxx> wrote:

> Introduce vGPU specific irq type VFIO_IRQ_TYPE_GFX, and
> VFIO_IRQ_SUBTYPE_GFX_DISPLAY_IRQ as the subtype for vGPU display.
>
> Introduce vfio_irq_info_cap_display_plane_events capability to notify
> user space with the vGPU's plane update events
>
> v2:
> - Add VFIO_IRQ_SUBTYPE_GFX_DISPLAY_IRQ description. (Alex & Kechen)
> - Introduce vfio_irq_info_cap_display_plane_events. (Gerd & Alex)
>
> Signed-off-by: Tina Zhang <tina.zhang@xxxxxxxxx>
> ---
> include/uapi/linux/vfio.h | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h
> index d83c9f136a5b..21ac69f0e1a9 100644
> --- a/include/uapi/linux/vfio.h
> +++ b/include/uapi/linux/vfio.h
> @@ -465,6 +465,27 @@ struct vfio_irq_info_cap_type {
> __u32 subtype; /* type specific */
> };
>
> +#define VFIO_IRQ_TYPE_GFX (1)
> +/*
> + * vGPU vendor sub-type
> + * vGPU device display related interrupts e.g. vblank/pageflip
> + */
> +#define VFIO_IRQ_SUBTYPE_GFX_DISPLAY_IRQ (1)

If this is a GFX/DISPLAY IRQ, why are we talking about a "vGPU" in the
description? It's not specific to a vGPU implementation, right? Is
this related to a physical display or a virtual display? If it's
related to the GFX PLANE ioctls, it should state that. It's not well
specified what this interrupt signals. Is it vblank? Is it pageflip?
Is it both? Neither? Something else?

> +
> +/*
> + * Display capability of using one eventfd to notify user space with the
> + * vGPU's plane update events.
> + * cur_event_val: eventfd value stands for cursor plane change event.
> + * pri_event_val: eventfd value stands for primary plane change event.
> + */
> +#define VFIO_IRQ_INFO_CAP_DISPLAY 4
> +
> +struct vfio_irq_info_cap_display_plane_events {
> + struct vfio_info_cap_header header;
> + __u64 cur_event_val;
> + __u64 pri_event_val;
> +};

Again, what display? Does this reference a GFX plane? The event_val
data is not well specified, examples might be necessary. They seem to
be used as a flag bit, so should we simply define a bit index for the
flag rather than a u64 value? Where are the actual events per plane
defined?

I'm not sure this patch shouldn't be rolled back into 1, I couldn't
find the previous discussion that triggered it to be separate. Perhaps
simply for sharing with the work Eric is doing? If so, that's fine,
but maybe make note of it in the cover letter. Thanks,

Alex