ENUM XE_GT_STATS_ID(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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