>-----Original Message----- >From: Aravind Iddamsetty <aravind.iddamsetty@xxxxxxxxxxxxxxx> >Sent: Friday, October 20, 2023 11:59 AM >To: intel-xe@xxxxxxxxxxxxxxxxxxxxx; dri-devel@xxxxxxxxxxxxxxxxxxxxx; >alexander.deucher@xxxxxxx; airlied@xxxxxxxxx; daniel@xxxxxxxx; >joonas.lahtinen@xxxxxxxxxxxxxxx; ogabbay@xxxxxxxxxx; Tayar, Tomer (Habana) ><ttayar@xxxxxxxxx>; Hawking.Zhang@xxxxxxx; >Harish.Kasiviswanathan@xxxxxxx; Felix.Kuehling@xxxxxxx; >Luben.Tuikov@xxxxxxx; Ruhl, Michael J <michael.j.ruhl@xxxxxxxxx> >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.ruhl@xxxxxxxxx> M >Signed-off-by: Aravind Iddamsetty <aravind.iddamsetty@xxxxxxxxxxxxxxx> >--- > 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