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 v3: - Add more description to VFIO_IRQ_SUBTYPE_GFX_DISPLAY_IRQ and VFIO_IRQ_INFO_CAP_DISPLAY. (Alex & Gerd) 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 | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h index aa6850f1daef..2946a028b0c3 100644 --- a/include/uapi/linux/vfio.h +++ b/include/uapi/linux/vfio.h @@ -476,6 +476,44 @@ struct vfio_irq_info_cap_type { __u32 subtype; /* type specific */ }; +/* vGPU IRQ TYPE */ +#define VFIO_IRQ_TYPE_GFX (1) + +/* sub-types for VFIO_IRQ_TYPE_GFX */ +/* + * vGPU device display refresh interrupt request. This irq asking for + * a user space display refresh, covers all display updates events, + * i.e. user space can stop the display update timer and fully depend + * on getting the notification if an update is needed. + */ +#define VFIO_IRQ_SUBTYPE_GFX_DISPLAY_IRQ (1) + +/* + * Display capability of reporting display refresh interrupt events. + * This gives user space the capability to identify different display + * updates events of the display refresh interrupt request. + * + * When notified by VFIO_IRQ_SUBTYPE_GFX_DISPLAY_IRQ, user space can + * use the eventfd counter value to identify which plane has been + * updated. + * + * Note that there might be some cases like counter_value > + * (cur_event_val + pri_event_val), if notifications haven't been + * handled on time in user mode. These cases can be handled as all + * plane updated case or signle plane updated case depending on the + * value. + * + * cur_event_val: eventfd counter value for cursor plane change event. + * pri_event_val: eventfd counter value for primary plane change event. + */ +#define VFIO_IRQ_INFO_CAP_DISPLAY 2 + +struct vfio_irq_info_cap_display_plane_events { + struct vfio_info_cap_header header; + __u64 cur_event_val; + __u64 pri_event_val; +}; + /** * VFIO_DEVICE_SET_IRQS - _IOW(VFIO_TYPE, VFIO_BASE + 10, struct vfio_irq_set) * -- 2.17.1