ENUM XE_GT_STATS_ID(9)
π enum xe_gt_stats_id(9) β the GT statistics identifiers glow-up
okay bestie, this is a page from the Kernel API Manual, and it's literally the master list of all the GT stats counters the driver keeps. every single one, no cap. we're gonna go through them all together, so grab a strawberry π and let's go.
β¨ NAME β¨
enum xe_gt_stats_id β GT statistics identifiers. that's the whole vibe: each member is the ID for one stat the driver tracks. π
π¦ SYNOPSIS π¦
enum xe_gt_stats_id {
XE_GT_STATS_ID_SVM_PAGEFAULT_COUNT ,
XE_GT_STATS_ID_TLB_INVAL ,
XE_GT_STATS_ID_SVM_TLB_INVAL_COUNT ,
XE_GT_STATS_ID_SVM_TLB_INVAL_US ,
XE_GT_STATS_ID_VMA_PAGEFAULT_COUNT ,
XE_GT_STATS_ID_VMA_PAGEFAULT_KB ,
XE_GT_STATS_ID_INVALID_PREFETCH_PAGEFAULT_COUNT ,
XE_GT_STATS_ID_SVM_4K_PAGEFAULT_COUNT ,
XE_GT_STATS_ID_SVM_64K_PAGEFAULT_COUNT ,
XE_GT_STATS_ID_SVM_2M_PAGEFAULT_COUNT ,
XE_GT_STATS_ID_SVM_4K_VALID_PAGEFAULT_COUNT ,
XE_GT_STATS_ID_SVM_64K_VALID_PAGEFAULT_COUNT ,
XE_GT_STATS_ID_SVM_2M_VALID_PAGEFAULT_COUNT ,
XE_GT_STATS_ID_SVM_4K_PAGEFAULT_US ,
XE_GT_STATS_ID_SVM_64K_PAGEFAULT_US ,
XE_GT_STATS_ID_SVM_2M_PAGEFAULT_US ,
XE_GT_STATS_ID_SVM_4K_MIGRATE_COUNT ,
XE_GT_STATS_ID_SVM_64K_MIGRATE_COUNT ,
XE_GT_STATS_ID_SVM_2M_MIGRATE_COUNT ,
XE_GT_STATS_ID_SVM_4K_MIGRATE_US ,
XE_GT_STATS_ID_SVM_64K_MIGRATE_US ,
XE_GT_STATS_ID_SVM_2M_MIGRATE_US ,
XE_GT_STATS_ID_SVM_DEVICE_COPY_US ,
XE_GT_STATS_ID_SVM_4K_DEVICE_COPY_US ,
XE_GT_STATS_ID_SVM_64K_DEVICE_COPY_US ,
XE_GT_STATS_ID_SVM_2M_DEVICE_COPY_US ,
XE_GT_STATS_ID_SVM_CPU_COPY_US ,
XE_GT_STATS_ID_SVM_4K_CPU_COPY_US ,
XE_GT_STATS_ID_SVM_64K_CPU_COPY_US ,
XE_GT_STATS_ID_SVM_2M_CPU_COPY_US ,
XE_GT_STATS_ID_SVM_DEVICE_COPY_KB ,
XE_GT_STATS_ID_SVM_4K_DEVICE_COPY_KB ,
XE_GT_STATS_ID_SVM_64K_DEVICE_COPY_KB ,
XE_GT_STATS_ID_SVM_2M_DEVICE_COPY_KB ,
XE_GT_STATS_ID_SVM_CPU_COPY_KB ,
XE_GT_STATS_ID_SVM_4K_CPU_COPY_KB ,
XE_GT_STATS_ID_SVM_64K_CPU_COPY_KB ,
XE_GT_STATS_ID_SVM_2M_CPU_COPY_KB ,
XE_GT_STATS_ID_SVM_4K_GET_PAGES_US ,
XE_GT_STATS_ID_SVM_64K_GET_PAGES_US ,
XE_GT_STATS_ID_SVM_2M_GET_PAGES_US ,
XE_GT_STATS_ID_SVM_4K_BIND_US ,
XE_GT_STATS_ID_SVM_64K_BIND_US ,
XE_GT_STATS_ID_SVM_2M_BIND_US ,
XE_GT_STATS_ID_HW_ENGINE_GROUP_SUSPEND_LR_QUEUE_COUNT ,
XE_GT_STATS_ID_HW_ENGINE_GROUP_SKIP_LR_QUEUE_COUNT ,
XE_GT_STATS_ID_HW_ENGINE_GROUP_WAIT_DMA_QUEUE_COUNT ,
XE_GT_STATS_ID_HW_ENGINE_GROUP_SUSPEND_LR_QUEUE_US ,
XE_GT_STATS_ID_HW_ENGINE_GROUP_WAIT_DMA_QUEUE_US ,
XE_GT_STATS_ID_PRL_4K_ENTRY_COUNT ,
XE_GT_STATS_ID_PRL_64K_ENTRY_COUNT ,
XE_GT_STATS_ID_PRL_2M_ENTRY_COUNT ,
XE_GT_STATS_ID_PRL_ISSUED_COUNT ,
XE_GT_STATS_ID_PRL_ABORTED_COUNT ,
__XE_GT_STATS_NUM_IDS
};
π Constants π
bestie. there are a lot of them. but every single one is here, and they're all important, so we're doing this. πͺ
πΈ SVM page-fault stuff
XE_GT_STATS_ID_SVM_PAGEFAULT_COUNTβ total SVM page faults that got handled. the big one. πXE_GT_STATS_ID_TLB_INVALβ total GPU Translation Lookaside Buffer (TLB) invalidations that were issued. flushing the vibes.XE_GT_STATS_ID_SVM_TLB_INVAL_COUNTβ TLB invalidations issued while handling SVM page faults, specifically.XE_GT_STATS_ID_SVM_TLB_INVAL_USβ cumulative time in Β΅s spent waiting for those TLB invalidations during SVM page-fault handling. yes it's a time, not a count.XE_GT_STATS_ID_VMA_PAGEFAULT_COUNTβ buffer-object (non-SVM) page faults handled. the non-SVM girlies get stats too πXE_GT_STATS_ID_VMA_PAGEFAULT_KBβ size, in KiB, of the VMAs involved in buffer-object page fault handling.XE_GT_STATS_ID_INVALID_PREFETCH_PAGEFAULT_COUNTβ GPU prefetch faults for addresses with no valid backing. literally nobody home at that address π
π§ SVM page faults by page size (4K / 64K / 2M)
XE_GT_STATS_ID_SVM_4K_PAGEFAULT_COUNTβ SVM page faults resolved by mapping 4K pages.XE_GT_STATS_ID_SVM_64K_PAGEFAULT_COUNTβ SVM page faults resolved by mapping 64K pages.XE_GT_STATS_ID_SVM_2M_PAGEFAULT_COUNTβ SVM page faults resolved by mapping 2M pages. big pages, big energy β
π«Ά the "valid" fault trio
XE_GT_STATS_ID_SVM_4K_VALID_PAGEFAULT_COUNTβ valid SVM page faults at 4K page size, where the GPU mapping was already valid β so they got resolved without creating new mappings. no new mapping needed, we been knew.XE_GT_STATS_ID_SVM_64K_VALID_PAGEFAULT_COUNTβ valid SVM page faults at 64K page size.XE_GT_STATS_ID_SVM_2M_VALID_PAGEFAULT_COUNTβ valid SVM page faults at 2M page size.
β±οΈ SVM page-fault time (Β΅s)
XE_GT_STATS_ID_SVM_4K_PAGEFAULT_USβ cumulative time in Β΅s spent handling 4K SVM page faults.XE_GT_STATS_ID_SVM_64K_PAGEFAULT_USβ cumulative time in Β΅s spent handling 64K SVM page faults.XE_GT_STATS_ID_SVM_2M_PAGEFAULT_USβ cumulative time in Β΅s spent handling 2M SVM page faults.
π¦ migrations (CPU β‘οΈ device), counts
XE_GT_STATS_ID_SVM_4K_MIGRATE_COUNTβ 4K pages moved from CPU to device memory.XE_GT_STATS_ID_SVM_64K_MIGRATE_COUNTβ 64K pages moved from CPU to device memory.XE_GT_STATS_ID_SVM_2M_MIGRATE_COUNTβ 2M pages moved from CPU to device memory.
β³ migrations (CPU β‘οΈ device), time
XE_GT_STATS_ID_SVM_4K_MIGRATE_USβ cumulative time in Β΅s spent moving 4K pages from CPU to device memory.XE_GT_STATS_ID_SVM_64K_MIGRATE_USβ cumulative time in Β΅s spent moving 64K pages from CPU to device memory.XE_GT_STATS_ID_SVM_2M_MIGRATE_USβ cumulative time in Β΅s spent moving 2M pages from CPU to device memory.
π copies to device, time
XE_GT_STATS_ID_SVM_DEVICE_COPY_USβ cumulative time in Β΅s for memory copies to device, across all page sizes. the umbrella stat βοΈXE_GT_STATS_ID_SVM_4K_DEVICE_COPY_USβ cumulative time in Β΅s for memory copies of 4K pages to device.XE_GT_STATS_ID_SVM_64K_DEVICE_COPY_USβ cumulative time in Β΅s for memory copies of 64K pages to device.XE_GT_STATS_ID_SVM_2M_DEVICE_COPY_USβ cumulative time in Β΅s for memory copies of 2M pages to device.
π copies to CPU, time
XE_GT_STATS_ID_SVM_CPU_COPY_USβ cumulative time in Β΅s for memory copies to CPU, across all page sizes.XE_GT_STATS_ID_SVM_4K_CPU_COPY_USβ cumulative time in Β΅s for memory copies of 4K pages to CPU.XE_GT_STATS_ID_SVM_64K_CPU_COPY_USβ cumulative time in Β΅s for memory copies of 64K pages to CPU.XE_GT_STATS_ID_SVM_2M_CPU_COPY_USβ cumulative time in Β΅s for memory copies of 2M pages to CPU.
π copies to device, in KiB
XE_GT_STATS_ID_SVM_DEVICE_COPY_KBβ data, in KiB, copied to device across all page sizes.XE_GT_STATS_ID_SVM_4K_DEVICE_COPY_KBβ data, in KiB, copied to device for 4K pages.XE_GT_STATS_ID_SVM_64K_DEVICE_COPY_KBβ data, in KiB, copied to device for 64K pages.XE_GT_STATS_ID_SVM_2M_DEVICE_COPY_KBβ data, in KiB, copied to device for 2M pages.
π copies to CPU, in KiB
XE_GT_STATS_ID_SVM_CPU_COPY_KBβ data, in KiB, copied to CPU across all page sizes.XE_GT_STATS_ID_SVM_4K_CPU_COPY_KBβ data, in KiB, copied to CPU for 4K pages.XE_GT_STATS_ID_SVM_64K_CPU_COPY_KBβ data, in KiB, copied to CPU for 64K pages.XE_GT_STATS_ID_SVM_2M_CPU_COPY_KBβ data, in KiB, copied to CPU for 2M pages.
π₯ get-pages time (Β΅s)
XE_GT_STATS_ID_SVM_4K_GET_PAGES_USβ cumulative time in Β΅s spent getting CPU memory pages for GPU access, at 4K page size.XE_GT_STATS_ID_SVM_64K_GET_PAGES_USβ cumulative time in Β΅s spent getting CPU memory pages for GPU access, at 64K page size.XE_GT_STATS_ID_SVM_2M_GET_PAGES_USβ cumulative time in Β΅s spent getting CPU memory pages for GPU access, at 2M page size.
π bind time (Β΅s)
XE_GT_STATS_ID_SVM_4K_BIND_USβ cumulative time in Β΅s spent binding 4K pages into the GPU page table.XE_GT_STATS_ID_SVM_64K_BIND_USβ cumulative time in Β΅s spent binding 64K pages into the GPU page table.XE_GT_STATS_ID_SVM_2M_BIND_USβ cumulative time in Β΅s spent binding 2M pages into the GPU page table.
π HW engine group, the scheduler drama
XE_GT_STATS_ID_HW_ENGINE_GROUP_SUSPEND_LR_QUEUE_COUNTβ how many times the scheduler preempted a long-running (LR) GPU exec queue. interrupting the main character π€XE_GT_STATS_ID_HW_ENGINE_GROUP_SKIP_LR_QUEUE_COUNTβ how many times the scheduler skipped suspend because the system was idle. nothing to do, so it just didn't.XE_GT_STATS_ID_HW_ENGINE_GROUP_WAIT_DMA_QUEUE_COUNTβ how many times the driver stalled waiting for prior GPU work to complete before scheduling more. the waiting room era.XE_GT_STATS_ID_HW_ENGINE_GROUP_SUSPEND_LR_QUEUE_USβ cumulative time in Β΅s spent preempting long-running (LR) GPU exec queues.XE_GT_STATS_ID_HW_ENGINE_GROUP_WAIT_DMA_QUEUE_USβ cumulative time in Β΅s spent stalled waiting for prior GPU work to complete.
π§ PRL (page reclaim list) β¨
XE_GT_STATS_ID_PRL_4K_ENTRY_COUNTβ 4K-page entries from the page reclaim list that were processed.XE_GT_STATS_ID_PRL_64K_ENTRY_COUNTβ 64K-page entries from the page reclaim list that were processed.XE_GT_STATS_ID_PRL_2M_ENTRY_COUNTβ 2M-page entries from the page reclaim list that were processed.XE_GT_STATS_ID_PRL_ISSUED_COUNTβ how many times a page reclamation was issued. go off, reclaim πXE_GT_STATS_ID_PRL_ABORTED_COUNTβ how many times the page reclaim process was aborted. it tried, it really did π
π¨ the sentinel
__XE_GT_STATS_NUM_IDSβ number of valid IDs; not a real counter. bestie, do not use this as a stat, it's just the fence at the end of the enum. π
π Description π
see Documentation/gpu/xe/xe_gt_stats.rst. that's the real doc, go read it β¨
π«Ά SEE ALSO π«Ά
- Kernel file
./drivers/gpu/drm/xe/xe_gt_stats_types.h - struct
xe_gt_stats(9)
okay and that's the whole page, you ate that π the source of all this is ./drivers/gpu/drm/xe, dated October 2026 β so yes, this manual page is literally from the future, slay. periodt. πβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms