From: Jakub Kicinski <kuba@kernel.org>
To: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: <dri-devel@lists.freedesktop.org>,
<intel-xe@lists.freedesktop.org>,
Zack McKevitt <zachary.mckevitt@oss.qualcomm.com>,
Lukas Wunner <lukas@wunner.de>, "Lijo Lazar" <lijo.lazar@amd.com>,
Hawking Zhang <Hawking.Zhang@amd.com>,
"Aravind Iddamsetty" <aravind.iddamsetty@linux.intel.com>
Subject: Re: [PATCH 1/2] drm/ras: Introduce the DRM RAS infrastructure over generic netlink
Date: Thu, 30 Oct 2025 18:32:54 -0700 [thread overview]
Message-ID: <20251030183254.10d64ee1@kernel.org> (raw)
In-Reply-To: <20250929214415.326414-5-rodrigo.vivi@intel.com>
On Mon, 29 Sep 2025 17:44:13 -0400 Rodrigo Vivi wrote:
> Introduces the DRM RAS infrastructure over generic netlink.
Can't comment on the merits but in terms of netlink..
> + ./tools/net/ynl/pyynl/cli.py --spec Documentation/netlink/specs/drm_ras.yaml --dump list-nodes
We recommend using the "installed" syntax in examples, so:
ynl --family drm_ras
instead of:
./tools/net/ynl/pyynl/cli.py --spec
Documentation/netlink/specs/drm_ras.yaml
If you're using Fedora or another good distro ynl CLI is packaged (for
Fedora in kernel-tools). The in-tree syntax is a bit verbose.
> + xa_for_each(&drm_ras_xa, id, node) {
> + if (id < ctx->restart)
> + continue;
IIRC xa_for_each_start can make this simpler?
> + hdr = genlmsg_put(skb, NETLINK_CB(cb->skb).portid,
> + cb->nlh->nlmsg_seq,
> + &drm_ras_nl_family, NLM_F_MULTI,
> + DRM_RAS_CMD_LIST_NODES);
genlmsg_iput()
genl_info_dump(cb) to get info
> + if (!hdr) {
> + ret = -EMSGSIZE;
> + break;
> + }
> +
> + ret = nla_put_u32(skb, DRM_RAS_A_NODE_ATTRS_NODE_ID, node->id);
> + if (ret) {
> + genlmsg_cancel(skb, hdr);
> + break;
> + }
> +
> + ret = nla_put_string(skb, DRM_RAS_A_NODE_ATTRS_DEVICE_NAME,
> + node->device_name);
> + if (ret) {
> + genlmsg_cancel(skb, hdr);
> + break;
> + }
> +
> + ret = nla_put_string(skb, DRM_RAS_A_NODE_ATTRS_NODE_NAME,
> + node->node_name);
> + if (ret) {
> + genlmsg_cancel(skb, hdr);
> + break;
> + }
> +
> + ret = nla_put_u32(skb, DRM_RAS_A_NODE_ATTRS_NODE_TYPE,
> + node->type);
> + if (ret) {
> + genlmsg_cancel(skb, hdr);
> + break;
> + }
> +
> + genlmsg_end(skb, hdr);
> + }
> +
> + if (ret == -EMSGSIZE) {
> + ctx->restart = id;
> + return skb->len;
> + }
> +
> + return ret;
Separate handling of -EMSGSIZE and returning skb->len is not necessary
as of a few releases ago. Just return ret; core will do the right thing
if ret == -EMSGSIZE and skb->len != 0
> +static int doit_reply_value(struct genl_info *info, u32 node_id,
> + u32 error_id)
> +{
> + struct sk_buff *msg;
> + struct nlattr *hdr;
> + const char *error_name;
> + u32 value;
> + int ret;
> +
> + msg = genlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL);
> + if (!msg)
> + return -ENOMEM;
> + hdr = genlmsg_put_reply(msg, info, &drm_ras_nl_family, 0,
> + DRM_RAS_CMD_QUERY_ERROR_COUNTER);
> + if (!hdr) {
> + nlmsg_free(msg);
> + return -EMSGSIZE;
> + }
> +
> + ret = get_node_error_counter(node_id, error_id,
> + &error_name, &value);
> + if (ret)
> + return ret;
> +
> + ret = msg_reply_value(msg, error_id, error_name, value);
> + if (ret)
> + return ret;
Leaking message on errors?
> + genlmsg_end(msg, hdr);
> +
> + return genlmsg_reply(msg, info);
> +}
next prev parent reply other threads:[~2025-10-31 1:32 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-29 21:44 [PATCH 0/2] Introduce DRM_RAS using generic netlink for RAS Rodrigo Vivi
2025-09-29 21:44 ` [PATCH 1/2] drm/ras: Introduce the DRM RAS infrastructure over generic netlink Rodrigo Vivi
2025-10-31 1:32 ` Jakub Kicinski [this message]
2025-11-06 13:30 ` Rodrigo Vivi
2025-11-06 14:58 ` Jakub Kicinski
2025-09-29 21:44 ` [PATCH 2/2] drm/xe: Introduce the usage of drm_ras with supported HW errors Rodrigo Vivi
2025-09-30 2:07 ` kernel test robot
2025-10-02 20:38 ` [PATCH 0/2] Introduce DRM_RAS using generic netlink for RAS Zack McKevitt
2025-10-28 19:14 ` Rodrigo Vivi
2025-11-06 13:42 ` Rodrigo Vivi
2025-11-07 20:20 ` Zack McKevitt
2025-11-08 3:01 ` Rodrigo Vivi
2025-10-28 19:13 ` DRM_RAS for CPER Error logging?! Rodrigo Vivi
2025-10-29 2:00 ` Zhang, Hawking
2025-11-06 13:16 ` Rodrigo Vivi
2025-11-10 3:34 ` Dave Airlie
2025-11-10 5:13 ` John Hubbard
2025-11-10 20:35 ` Rodrigo Vivi
2025-10-30 14:47 ` Rodrigo Vivi
2025-10-30 15:37 ` DRM_RAS (netlink genl family) " Rodrigo Vivi
2025-10-31 5:38 ` DRM_RAS " Lukas Wunner
2025-11-06 13:08 ` Rodrigo Vivi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251030183254.10d64ee1@kernel.org \
--to=kuba@kernel.org \
--cc=Hawking.Zhang@amd.com \
--cc=aravind.iddamsetty@linux.intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=lijo.lazar@amd.com \
--cc=lukas@wunner.de \
--cc=rodrigo.vivi@intel.com \
--cc=zachary.mckevitt@oss.qualcomm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).