>-----Original Message-----
>From: Aravind Iddamsetty <aravind.iddamse...@linux.intel.com>
>Sent: Friday, October 20, 2023 11:59 AM
>To: intel...@lists.freedesktop.org; dri-devel@lists.freedesktop.org;
>alexander.deuc...@amd.com; airl...@gmail.com; dan...@ffwll.ch;
>joonas.lahti...@linux.intel.com; ogab...@kernel.org; Tayar, Tomer (Habana)
><tta...@habana.ai>; hawking.zh...@amd.com;
>harish.kasiviswanat...@amd.com; felix.kuehl...@amd.com;
>luben.tui...@amd.com; Ruhl, Michael J <michael.j.r...@intel.com>
>Subject: [RFC 4/5] drm/netlink: Define multicast groups
>
>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.

Hi Aravind,

This looks reasonable to me.

Reviewed-by: Michael J. Ruhl <michael.j.r...@intel.com>

M

>Signed-off-by: Aravind Iddamsetty <aravind.iddamse...@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 8add249c1da3..425a7355a573 100644
>--- a/drivers/gpu/drm/drm_netlink.c
>+++ b/drivers/gpu/drm/drm_netlink.c
>@@ -12,6 +12,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, },
>+};
>+
> /**
>  * drm_genl_reply - response to a request
>  * @msg: socket buffer
>@@ -133,6 +138,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 54527dae7847..758239643c17 100644
>--- a/include/drm/drm_netlink.h
>+++ b/include/drm/drm_netlink.h
>@@ -13,6 +13,11 @@
>
> struct drm_device;
>
>+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 aab42147a20e..c7a0ce5b4624 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" {
>@@ -43,6 +45,8 @@ enum drm_genl_error_cmds {
>       DRM_RAS_CMD_READ_ONE,
>       /** @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

Reply via email to