[RFC v5 4/5] drm/netlink: Define multicast groups

Rodrigo Vivi rodrigo.vivi at intel.com
Fri Aug 15 22:00:02 UTC 2025


On Wed, Jul 30, 2025 at 12:19:55PM +0530, Aravind Iddamsetty wrote:
> Netlink subsystem supports event notifications to userspace. we define
> two multicast groups for correctable and uncorrectable errors to which
> userspace can subscribe and be notified when any of those errors happen.
> The group names are local to the driver's genl netlink family.
> 
> Reviewed-by: Michael J. Ruhl <michael.j.ruhl at intel.com>
> Signed-off-by: Aravind Iddamsetty <aravind.iddamsetty at linux.intel.com>
> ---
>  drivers/gpu/drm/drm_netlink.c  | 7 +++++++
>  include/drm/drm_netlink.h      | 5 +++++
>  include/uapi/drm/drm_netlink.h | 4 ++++
>  3 files changed, 16 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_netlink.c b/drivers/gpu/drm/drm_netlink.c
> index da4bfde32a22..a7c0a4401ca9 100644
> --- a/drivers/gpu/drm/drm_netlink.c
> +++ b/drivers/gpu/drm/drm_netlink.c
> @@ -15,6 +15,11 @@
>  
>  DEFINE_XARRAY(drm_dev_xarray);
>  
> +static const struct genl_multicast_group drm_event_mcgrps[] = {
> +	[DRM_GENL_MCAST_CORR_ERR] = { .name = DRM_GENL_MCAST_GROUP_NAME_CORR_ERR, },
> +	[DRM_GENL_MCAST_UNCORR_ERR] = { .name = DRM_GENL_MCAST_GROUP_NAME_UNCORR_ERR, },
> +};

this was the thing I thought for that 'monitor' but well, that can be ignored
and we can indeed leave this per error component. but I also don't like it
to be forced. It should be a driver definition and driver adoption.

> +
>  /**
>   * drm_genl_reply - response to a request
>   * @msg: socket buffer
> @@ -156,6 +161,8 @@ static void drm_genl_family_init(struct drm_device *dev)
>  	dev->drm_genl_family->ops = drm_genl_ops;
>  	dev->drm_genl_family->n_ops = ARRAY_SIZE(drm_genl_ops);
>  	dev->drm_genl_family->maxattr = DRM_ATTR_MAX;
> +	dev->drm_genl_family->mcgrps = drm_event_mcgrps;
> +	dev->drm_genl_family->n_mcgrps = ARRAY_SIZE(drm_event_mcgrps);
>  	dev->drm_genl_family->module = dev->dev->driver->owner;
>  }
>  
> diff --git a/include/drm/drm_netlink.h b/include/drm/drm_netlink.h
> index 4a746222337a..9e48147d0d36 100644
> --- a/include/drm/drm_netlink.h
> +++ b/include/drm/drm_netlink.h
> @@ -12,6 +12,11 @@ struct drm_device;
>  struct genl_info;
>  struct sk_buff;
>  
> +enum mcgrps_events {
> +	DRM_GENL_MCAST_CORR_ERR,
> +	DRM_GENL_MCAST_UNCORR_ERR,
> +};
> +
>  struct driver_genl_ops {
>  	int		       (*doit)(struct drm_device *dev,
>  				       struct sk_buff *skb,
> diff --git a/include/uapi/drm/drm_netlink.h b/include/uapi/drm/drm_netlink.h
> index 58afb6e8d84a..c978efaab124 100644
> --- a/include/uapi/drm/drm_netlink.h
> +++ b/include/uapi/drm/drm_netlink.h
> @@ -26,6 +26,8 @@
>  #define _DRM_NETLINK_H_
>  
>  #define DRM_GENL_VERSION 1
> +#define DRM_GENL_MCAST_GROUP_NAME_CORR_ERR	"drm_corr_err"
> +#define DRM_GENL_MCAST_GROUP_NAME_UNCORR_ERR	"drm_uncorr_err"
>  
>  #if defined(__cplusplus)
>  extern "C" {
> @@ -50,6 +52,8 @@ enum drm_genl_error_cmds {
>  	DRM_RAS_CMD_READ_BLOCK,
>  	/** @DRM_RAS_CMD_READ_ALL: Command to get counters of all errors */
>  	DRM_RAS_CMD_READ_ALL,
> +	/** @DRM_RAS_CMD_ERROR_EVENT: Command sent as part of multicast event */
> +	DRM_RAS_CMD_ERROR_EVENT,
>  
>  	__DRM_CMD_MAX,
>  	DRM_CMD_MAX = __DRM_CMD_MAX - 1,
> -- 
> 2.25.1
> 


More information about the Intel-xe mailing list