From: Aravind Iddamsetty <aravind.iddamsetty@linux.intel.com>
To: Rodrigo Vivi <rodrigo.vivi@intel.com>,
"Upadhyay, Tejas" <tejas.upadhyay@intel.com>
Cc: "Wajdeczko, Michal" <michal.wajdeczko@intel.com>,
"intel-xe@lists.freedesktop.org" <intel-xe@lists.freedesktop.org>,
"Thomas Hellström" <thomas.hellstrom@linux.intel.com>,
"Ghimiray, Himal Prasad" <himal.prasad.ghimiray@intel.com>
Subject: Re: [PATCH V16 10/12] drm/xe: Add sysfs interface for bad gpu vram pages
Date: Wed, 19 Aug 2026 19:20:30 +0530 [thread overview]
Message-ID: <8ceaee0e-cd24-4382-bb45-c59f9444e6ca@linux.intel.com> (raw)
In-Reply-To: <aoRWO88_jtfv1V-g@intel.com>
On 18-08-2026 18:25, Rodrigo Vivi wrote:
> On Tue, Aug 18, 2026 at 09:08:46AM +0000, Upadhyay, Tejas wrote:
>>
>>> -----Original Message-----
>>> From: Vivi, Rodrigo <rodrigo.vivi@intel.com>
>>> Sent: 18 August 2026 01:01
>>> To: Wajdeczko, Michal <michal.wajdeczko@intel.com>
>>> Cc: Upadhyay, Tejas <tejas.upadhyay@intel.com>; intel-
>>> xe@lists.freedesktop.org; Thomas Hellström
>>> <thomas.hellstrom@linux.intel.com>; Ghimiray, Himal Prasad
>>> <himal.prasad.ghimiray@intel.com>
>>> Subject: Re: [PATCH V16 10/12] drm/xe: Add sysfs interface for bad gpu vram
>>> pages
>>>
>>> On Mon, Aug 17, 2026 at 07:09:46PM +0200, Michal Wajdeczko wrote:
>>>>
>>>> On 8/17/2026 6:06 PM, Rodrigo Vivi wrote:
>>>>> On Mon, Aug 17, 2026 at 02:58:31PM +0000, Upadhyay, Tejas wrote:
>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: Wajdeczko, Michal <michal.wajdeczko@intel.com>
>>>>>>> Sent: 17 August 2026 16:57
>>>>>>> To: Upadhyay, Tejas <tejas.upadhyay@intel.com>; intel-
>>>>>>> xe@lists.freedesktop.org; Vivi, Rodrigo <rodrigo.vivi@intel.com>;
>>>>>>> Thomas Hellström <thomas.hellstrom@linux.intel.com>
>>>>>>> Cc: Ghimiray, Himal Prasad <himal.prasad.ghimiray@intel.com>
>>>>>>> Subject: Re: [PATCH V16 10/12] drm/xe: Add sysfs interface for bad
>>>>>>> gpu vram pages
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 8/17/2026 8:51 AM, Tejas Upadhyay wrote:
>>>>>>>> Include a sysfs interface designed to expose information about
>>>>>>>> bad VRAM pages — those identified as having hardware faults
>>>>>>>> (e.g., ECC errors). This interface allows userspace tools and
>>>>>>>> administrators to monitor the health of the GPU's local memory
>>>>>>>> and track the status of page retirement. Details on bad gpu vram
>>>>>>>> pages can be found under
>>> /sys/bus/pci/devices/<bdf>/vram_bad_pages.
>>>>>>> since those new files are xe driver specific, shouldn't we refer
>>>>>>> to them using
>>>>>>>
>>>>>>> /sys/bus/pci/drivers/xe/<bdf>/vram...
>>>>>>>
>>>>>>>> The format is: pfn : gpu_page_size : flags
>>>>>>> kernel documentation [1] says
>>>>>>>
>>>>>>> "Mixing types, expressing multiple lines of data, and doing
>>>>>>> fancy formatting of data is heavily frowned upon"
>>>>>>>
>>>>>>> [1] https://docs.kernel.org/filesystems/sysfs.html#attributes
>>>>>>>
>>>>>>> so to follow the guidelines maybe we expose the separate files:
>>>>>>>
>>>>>>> /sys/bus/pci/drivers/xe/<bdf>/vram_page_size u64
>>>>>>> /sys/bus/pci/drivers/xe/<bdf>/vram_bad_pages_count u64
>>>>>>> /sys/bus/pci/drivers/xe/<bdf>/vram_bad_pages_reserved u64[]
>>>>>>> /sys/bus/pci/drivers/xe/<bdf>/vram_bad_pages_pending u64[]
>>>>>>> /sys/bus/pci/drivers/xe/<bdf>/vram_bad_pages_failed u64[]
>>>>>>>
>>>>>>> or
>>>>>>>
>>>>>>> /sys/bus/pci/drivers/xe/<bdf>
>>>>>>> |
>>>>>>> +-- vram/
>>>>>>> +-- page_size u64
>>>>>>> +-- bad_pages/
>>>>>>> +-- count u64
>>>>>>> +-- reserved u64[]
>>>>>>> +-- pending u64[]
>>>>>>> +-- failed u64[]
>>>>>>>
>>>>>>> then
>>>>>>>
>>>>>>> /sys/bus/pci/drivers/xe/<bdf>/vram_page_size:0x1000
>>>>>>> /sys/bus/pci/drivers/xe/<bdf>/vram_bad_pages_count:5
>>>>>>>
>>> /sys/bus/pci/drivers/xe/<bdf>/vram_bad_pages_reserved:0x0000000000
>>>>>>> 00
>>>>>>> 0000
>>>>>>>
>>> /sys/bus/pci/drivers/xe/<bdf>/vram_bad_pages_pending:0x00000000012
>>>>>>> 34
>>>>>>> 000
>>>>>>>
>>> /sys/bus/pci/drivers/xe/<bdf>/vram_bad_pages_pending:0x00000000012
>>>>>>> 35
>>>>>>> 000
>>>>>>>
>>> /sys/bus/pci/drivers/xe/<bdf>/vram_bad_pages_pending:0x00000000012
>>>>>>> 36
>>>>>>> 000
>>>>>>>
>>> /sys/bus/pci/drivers/xe/<bdf>/vram_bad_pages_pending:0x00000000012
>>>>>>> 37
>>>>>>> 000
>>>>>> Thanks for comment, this is documented format by design doc. Sysman
>>> also depending on this format. So I don’t see this can be done without design
>>> being changed for everyone.
>>>>> Internal design docs don't superseed upstream documentation.
>>>>> It is the other way around.
>>>>>
>>>>> But also, the files will be there one way or another. Both paths are
>>>>> valid, so I don't believe that change in here force changes in the
>>>>> userspace. Although, yes consistency is good...
>>>>>
>>>>> That said, I don't have a strong feeling for one way or the other.
>>>>>
>>>>> Since we are adding to the device level anyway, I believe it should
>>>>> be okay. But Michal, do you know any doc or any precedence that kind
>>>>> of force us to go the other way?
>>>> hmm, are we talking here about the attribute format or folder layout?
>>>>
>>>> if about the latter, no strong feeling either ("files will be there
>>>> one way or another")
>>>>
>>>> but if about the former, then the same documentation [1] earlier says:
>>>>
>>>> "Attributes should be ASCII text files, preferably with only
>>>> "one value per file. It is noted that it may not be efficient
>>>> "to contain only one value per file, so it is socially acceptable
>>>> "to express an array of values of the same type.
>>>>
>>>> and my proposal with separate files meets that expectations (there
>>>> will be either single value in the file or array of values of the same
>>>> type), opposed to original idea of array of offset:page_size:flag
>>>> tuples
>>> doh! I'm sorry... my comment was purely driven by the other sentence above:
>>> "since those new files are xe driver specific, shouldn't we refer to them using"
>>>
>>> But now I looked at the content o the patch itself. This patch as is is a BIG NO!
>>> It is against the sysfs rules. Period. Internal spec and other components need
>>> to adjust.
>>>
>>> Also please do not repeat the same PVC mistakes with tenths of lingering sysfs
>>> entries. Organize this per directory as Michal told.
>>>
>>> Another thing, make a design that is future ready, use 'vram0/' as the name of
>>> the directory with vram0 stuff. Like we have freq0/ for instance.
>>>
>>> Perhaps even
>>>
>>> +-- vram0/
>>> +-- pages/
>>> +-- size u64
>>> +-- bad_pages/
>>> +-- count u64
>>> +-- reserved u64[]
>>> +-- pending u64[]
>>> +-- failed u64[]
>> Currently information shown under vram_bad_pages(looks similar to what other competitor's bad pages info shows), actual gives data which consumer can extract directly meaningful info out of it. With above approach, consumer need to make one, which we need to discuss with other folks. Lets discuss in a group.
> 2 wrongs don't make 1 right!
>
> If you don't believe in the reviewers check the documentation yourself:
>
> https://www.kernel.org/doc/html/latest/filesystems/sysfs.html
>
> "Mixing types, expressing multiple lines of data, and doing fancy formatting
> of data is heavily frowned upon. Doing these things may get you publicly
> humiliated and your code rewritten without notice."
Is my understanding correct that the PAGE_SIZE limit and the "one value
per file" guidance apply to regular attributes only, and that a
bin_attribute is the sanctioned mechanism for streaming output larger
than one page (via the off/count arguments)?
Thanks,
Aravind.
>
>> Tejas
>>> Thanks,
>>> Rodrigo.
>>>
>>>>>> Tejas
>>>>>>>> flags:
>>>>>>>> R: reserved, this gpu page is reserved.
>>>>>>>> P: pending for reserve, this gpu page is marked as bad, will be
>>>>>>>> reserved in next window of page_reserve.
>>>>>>>> F: unable to reserve, this gpu page can't be reserved due to some
>>>>>>>> reasons.
>>>>>>>>
>>>>>>>> For example, cat /sys/bus/pci/devices/<bdf>/vram_bad_pages:
>>>>>>>> max_pages : 10000
>>>>>>>> 0x0000000000000000 : 0x0000000000001000 : R
>>>>>>>> 0x0000000000001234 : 0x0000000000001000 : P
>>>>>>>>
>>>>>>>> The sysfs binary attribute is created under the PCI device
>>>>>>>> kobject when the platform supports it and the configfs
>>>>>>>> bad_page_reservation policy is enabled. Uses RCU-protected list
>>>>>>>> traversal so reads never block normal VRAM allocation operations.
>>>>>>>>
next prev parent reply other threads:[~2026-08-19 13:50 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-17 6:50 [PATCH V16 00/12] Add memory page offlining support Tejas Upadhyay
2026-08-17 6:50 ` [PATCH V16 01/12] drm/xe: Link VRAM object with gpu buddy Tejas Upadhyay
2026-08-17 6:50 ` [PATCH V16 02/12] drm/xe: Link LRC BO and its execution Queue Tejas Upadhyay
2026-08-17 6:50 ` [PATCH V16 03/12] drm/xe: Extend BO purge to handle vram pages as well Tejas Upadhyay
2026-08-17 6:50 ` [PATCH V16 04/12] drm/xe/bo: Make xe_bo_is_user() public Tejas Upadhyay
2026-08-17 6:51 ` [PATCH V16 05/12] drm/xe: Guard teardown paths against purged BOs Tejas Upadhyay
2026-08-17 6:51 ` [PATCH V16 06/12] drm/xe/vram: Extract buddy alloc and free helpers Tejas Upadhyay
2026-08-17 6:51 ` [PATCH V16 07/12] drm/xe/vram: Add page offline data structures and lifecycle Tejas Upadhyay
2026-08-17 6:51 ` [PATCH V16 08/12] drm/xe/vram: Add VRAM page offline fault handler Tejas Upadhyay
2026-08-17 6:51 ` [PATCH V16 09/12] drm/xe/configfs: Add vram bad page reservation policy Tejas Upadhyay
2026-08-17 6:51 ` [PATCH V16 10/12] drm/xe: Add sysfs interface for bad gpu vram pages Tejas Upadhyay
2026-08-17 11:27 ` Michal Wajdeczko
2026-08-17 14:58 ` Upadhyay, Tejas
2026-08-17 16:06 ` Rodrigo Vivi
2026-08-17 17:09 ` Michal Wajdeczko
2026-08-17 19:30 ` Rodrigo Vivi
2026-08-18 9:08 ` Upadhyay, Tejas
2026-08-18 12:55 ` Rodrigo Vivi
2026-08-19 13:50 ` Aravind Iddamsetty [this message]
2026-08-19 14:15 ` Rodrigo Vivi
2026-08-19 14:49 ` Aravind Iddamsetty
2026-08-19 15:08 ` Rodrigo Vivi
2026-08-17 6:51 ` [PATCH V16 11/12] drm/xe/uapi: Expose ban reason in EXEC_QUEUE_GET_PROPERTY_BAN Tejas Upadhyay
2026-08-17 6:51 ` [PATCH V16 12/12] drm/xe: Add fault-inject based VRAM page offline injection Tejas Upadhyay
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=8ceaee0e-cd24-4382-bb45-c59f9444e6ca@linux.intel.com \
--to=aravind.iddamsetty@linux.intel.com \
--cc=himal.prasad.ghimiray@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=michal.wajdeczko@intel.com \
--cc=rodrigo.vivi@intel.com \
--cc=tejas.upadhyay@intel.com \
--cc=thomas.hellstrom@linux.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.