On 6/3/26 18:33, Srinivasan Shanmugam wrote:
> The current EVENTFD UAPI describes subscriptions using a userspace-defined
> event_id and reserves queue_id for future use.
> 
> That no longer matches the intended render-node event model. Userspace
> should subscribe to kernel-defined event types, while the kernel keeps
> control of event semantics and signaling sources.
> 
> Add a shared UAPI enum for AMDGPU EVENTFD event types and update the
> EVENTFD ioctl documentation to describe subscriptions as notification-only.
> 
> queue_id remains part of the UAPI and is now used to distinguish
> queue-scoped subscriptions from GPU/device-scoped subscriptions.
> 
> USERQ_EOP, QUEUE_RESET, and SCRATCH may use queue_id for queue-specific
> subscriptions. MEMORY_EXCEPTION is currently GPU-scoped and requires
> queue_id = 0.
> 
> Cc: Alex Deucher <[email protected]>
> Cc: Christian König <[email protected]>
> Signed-off-by: Srinivasan Shanmugam <[email protected]>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c |  6 +++---
>  include/uapi/drm/amdgpu_drm.h           | 25 +++++++++++++++++++------
>  2 files changed, 22 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> index cd127a271c19..75fc3a74db28 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> @@ -643,7 +643,7 @@ int amdgpu_eventfd_ioctl(struct drm_device *dev, void 
> *data,
>       if (!fpriv)
>               return -EINVAL;
>  
> -     if (args->flags || !args->event_id || args->eventfd < 0)
> +     if (args->flags || !args->event_type || args->eventfd < 0)
>               return -EINVAL;
>  
>       /*
> @@ -656,11 +656,11 @@ int amdgpu_eventfd_ioctl(struct drm_device *dev, void 
> *data,
>       switch (args->op) {
>       case DRM_AMDGPU_EVENTFD_OP_BIND:
>               return amdgpu_eventfd_bind(&fpriv->eventfd_mgr,
> -                                        args->event_id,
> +                                        args->event_type,
>                                          args->eventfd);
>       case DRM_AMDGPU_EVENTFD_OP_UNBIND:
>               return amdgpu_eventfd_unbind(&fpriv->eventfd_mgr,
> -                                          args->event_id,
> +                                          args->event_type,
>                                            args->eventfd);
>       default:
>               return -EINVAL;
> diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h
> index 63cde4487c47..3dffd9e581a1 100644
> --- a/include/uapi/drm/amdgpu_drm.h
> +++ b/include/uapi/drm/amdgpu_drm.h
> @@ -207,28 +207,41 @@ union drm_amdgpu_gem_create {
>       struct drm_amdgpu_gem_create_out        out;
>  };
>  
> +enum drm_amdgpu_event_type {
> +     DRM_AMDGPU_EVENT_TYPE_INVALID = 0,

What exactly is the invalid event_type?

> +     DRM_AMDGPU_EVENT_TYPE_USERQ_EOP = 1,
> +     DRM_AMDGPU_EVENT_TYPE_QUEUE_RESET = 2,
> +     DRM_AMDGPU_EVENT_TYPE_MEMORY_EXCEPTION = 3,
> +     DRM_AMDGPU_EVENT_TYPE_SCRATCH = 4,
> +     DRM_AMDGPU_EVENT_TYPE_GPU_RESET = 5,
> +};
> +
>  enum drm_amdgpu_eventfd_op {
>       DRM_AMDGPU_EVENTFD_OP_BIND = 0,
>       DRM_AMDGPU_EVENTFD_OP_UNBIND = 1,
>  };
>  
>  /**
> - * struct drm_amdgpu_eventfd - bind or unbind an eventfd to an event_id
> + * struct drm_amdgpu_eventfd - bind or unbind an eventfd to an AMDGPU event
>   * @op: operation type, see &enum drm_amdgpu_eventfd_op
> - * @event_id: userspace-defined event identifier
> + * @event_type: kernel-defined AMDGPU event type
>   * @eventfd: eventfd file descriptor
> - * @queue_id: queue identifier for future queue-specific subscriptions
> + * @queue_id: queue identifier for queue-scoped subscriptions, or 0 for
> + *         device/GPU-scoped subscriptions
>   * @flags: must be 0
>   *
>   * This ioctl lets userspace register or unregister eventfd notifications
>   * for a render-node event.
>   *
> - * For now, @queue_id is reserved for future queue-specific subscriptions
> - * and must be 0.
> + * Eventfd signaling is notification-only.
> + *
> + * USERQ_EOP, QUEUE_RESET, and SCRATCH may use @queue_id for queue-scoped
> + * subscriptions. MEMORY_EXCEPTION is currently GPU-scoped and requires
> + * @queue_id = 0.
>   */
>  struct drm_amdgpu_eventfd {
>       __u32 op;
> -     __u32 event_id;
> +     __u32 event_type;

That rename should be in the original patch adding the interface.

Maybe best to squash the two patches together.

Regards,
Christian.

>       __s32 eventfd;
>       __u32 queue_id;
>       __u32 flags;

Reply via email to