[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