From: Aravind Iddamsetty <aravind.iddamsetty@linux.intel.com>
To: intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
netdev@vger.kernel.org, amd-gfx@lists.freedesktop.org
Cc: simona.vetter@ffwll.ch, airlied@gmail.com,
tejas.upadhyay@intel.com, himal.prasad.ghimiray@intel.com,
rodrigo.vivi@intel.com, riana.tauro@intel.com,
raag.jadav@intel.com, joshua.santosh.ranjan@intel.com,
ashwin.kumar.kulkarni@intel.com, pratik.bari@intel.com,
Hawking.Zhang@amd.com, tao.zhou1@amd.com, YiPeng.Chai@amd.com,
jinzhou.su@amd.com, cesun102@amd.com, lijo.lazar@amd.com,
alexander.deucher@amd.com, christian.koenig@amd.com
Subject: [PATCH v2 0/2] drm/xe: Expose retired VRAM pages via drm-ras
Date: Wed, 7 Oct 2026 13:33:52 +0530 [thread overview]
Message-ID: <20261007080354.3072751-1-aravind.iddamsetty@linux.intel.com> (raw)
The memory page offlining support tracks bad VRAM pages and currently
only exposes them through debugfs (vram_bad_pages), which is not a
stable ABI. Add a proper userspace interface using the drm-ras
generic netlink family.
Introduce a new node type DRM_RAS_NODE_TYPE_RETIRED_RESOURCES which
enumerates hardware resources that have been permanently taken out of
service. Each node reports a single resource type, identified by its
node-name, so the resource type is implied by the node rather than
carried per entry. The per-entry payload stays extensible: each entry
carries a single type-specific nested attribute, so future resource
types can be added without touching existing consumers. VRAM pages are
the first supported type, reported via the vram-page nest as
{address, size, status} where status is one of retired/pending/failed.
A single operation is added on the node:
- GET_RETIRED_RESOURCES: dump the resources retired on the node. The
dump opens with a leading capacity summary entry (max-pages
inside the vram-page nest, i.e. the maximum number of pages that
can be offlined, with no address/size/status), followed by one
entry per retired resource. Userspace derives the retired/queued
counts by counting entries.
The netlink interface is described by the YAML spec
Documentation/netlink/specs/drm_ras.yaml. The following files are
generated from that spec with tools/net/ynl/ynl-regen.sh and must not
be edited by hand:
- include/uapi/drm/drm_ras.h (uapi attribute/command enums)
- drivers/gpu/drm/drm_ras_nl.c (generated policy and op table)
- drivers/gpu/drm/drm_ras_nl.h (generated declarations)
Eg:
$ sudo ./tools/net/ynl/pyynl/cli.py \
--spec Documentation/netlink/specs/drm_ras.yaml \
--dump list-nodes
[{'device-name': '0000:03:00.0', 'node-id': 0, 'node-name':'correctable-errors',
'node-type': 'error-counter'},
{'device-name': '0000:03:00.0', 'node-id': 1, 'node-name':'uncorrectable-errors
', 'node-type': 'error-counter'},
{'device-name': '0000:03:00.0', 'node-id': 2, 'node-name':'vram-retired-pages',
'node-type': 'retired-resources'}]
$ sudo ./tools/net/ynl/pyynl/cli.py --spec \
Documentation/netlink/specs/drm_ras.yaml --dump get-retired-resources \
--json '{"node-id": 2}'
[{'node-id': 2, 'vram-page': {'max-pages': 100}},
{'node-id': 2, 'vram-page': {'address': 12807041024, 'size': 4096,
'status': 'retired'}},
{'node-id': 2, 'vram-page': {'address': 12809400320, 'size': 4096,
'status': 'retired'}}]
The first entry is the capacity summary (max-pages); subsequent entries
are the retired pages.
v2:
- Rebase on drm-tip
- Drop the per-entry resource-type discriminator attribute; the type is
now implied by the node (node-name), which reports a single type.
- Fold all VRAM-page fields, including the retirement status, into the
vram-page nested attribute; the top-level entry is just
{node-id, vram-page}. (Rodrigo)
- Drop the separate GET_RETIRED_RESOURCES_INFO operation. The capacity
(max-pages) is now emitted as a leading summary entry inside
GET_RETIRED_RESOURCES (max-pages in the vram-page nest, no status);
offlined/queued counts are derived by counting entries.
Cc: Tejas Upadhyay <tejas.upadhyay@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Riana Tauro <riana.tauro@intel.com>
Cc: Raag Jadav <raag.jadav@intel.com>
Cc: Joshua Santhosh Ranjan <joshua.santosh.ranjan@intel.com>
Cc: Ashwin Kumar Kulkarni <ashwin.kumar.kulkarni@intel.com>
Cc: Pratik Bari <pratik.bari@intel.com>
Aravind Iddamsetty (2):
drm/xe: Expose retired VRAM pages via drm-ras
drm/xe: Remove bad VRAM pages debugfs interface
Documentation/netlink/specs/drm_ras.yaml | 91 ++++++++++-
drivers/gpu/drm/drm_ras.c | 174 ++++++++++++++++++++-
drivers/gpu/drm/drm_ras_nl.c | 12 ++
drivers/gpu/drm/drm_ras_nl.h | 2 +
drivers/gpu/drm/xe/xe_debugfs.c | 2 -
drivers/gpu/drm/xe/xe_drm_ras.c | 77 +++++++++
drivers/gpu/drm/xe/xe_drm_ras_types.h | 3 +
drivers/gpu/drm/xe/xe_ttm_vram_mgr.c | 190 ++++++++++++++---------
drivers/gpu/drm/xe/xe_ttm_vram_mgr.h | 4 +-
include/drm/drm_ras.h | 74 +++++++++
include/uapi/drm/drm_ras.h | 48 +++++-
11 files changed, 592 insertions(+), 85 deletions(-)
--
2.25.1
next reply other threads:[~2026-10-07 8:07 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-07 8:03 Aravind Iddamsetty [this message]
2026-10-07 8:03 ` [PATCH v2 1/2] drm/xe: Expose retired VRAM pages via drm-ras Aravind Iddamsetty
2026-10-07 9:28 ` Christian König
2026-10-07 13:55 ` Rodrigo Vivi
2026-10-07 8:03 ` [PATCH v2 2/2] drm/xe: Remove bad VRAM pages debugfs interface Aravind Iddamsetty
2026-10-07 8:38 ` ✗ CI.checkpatch: warning for drm/xe: Expose retired VRAM pages via drm-ras (rev2) Patchwork
2026-10-07 8:40 ` ✓ CI.KUnit: success " Patchwork
2026-10-07 9:27 ` ✓ Xe.CI.BAT: " Patchwork
2026-10-07 10:42 ` ✓ Xe.CI.FULL: " Patchwork
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=20261007080354.3072751-1-aravind.iddamsetty@linux.intel.com \
--to=aravind.iddamsetty@linux.intel.com \
--cc=Hawking.Zhang@amd.com \
--cc=YiPeng.Chai@amd.com \
--cc=airlied@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=ashwin.kumar.kulkarni@intel.com \
--cc=cesun102@amd.com \
--cc=christian.koenig@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=himal.prasad.ghimiray@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=jinzhou.su@amd.com \
--cc=joshua.santosh.ranjan@intel.com \
--cc=lijo.lazar@amd.com \
--cc=netdev@vger.kernel.org \
--cc=pratik.bari@intel.com \
--cc=raag.jadav@intel.com \
--cc=riana.tauro@intel.com \
--cc=rodrigo.vivi@intel.com \
--cc=simona.vetter@ffwll.ch \
--cc=tao.zhou1@amd.com \
--cc=tejas.upadhyay@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.