[PATCH v2 0/8] [ANDROID]: Add GPU work period support for Xe driver

Aakash Deep Sarkar aakash.deep.sarkar at intel.com
Fri Aug 22 08:59:22 UTC 2025


This patch series implements the Android VSR requirement GPU work
period event for the Intel Xe driver.

|GpuWorkPeriodEvent| defines a non-overlapping, non-zero period
of time from |start_time_ns| (inclusive) until |end_time_ns|
(exclusive) for a given |uid|, and includes details of how much
work the GPU was performing for |uid| during the period. When
GPU work for a given |uid| runs on the GPU, the driver must track
one or more periods that cover the time where the work was running,
and emit events soon after.

Full requirement is defined in the following file:
https://cs.android.com/android/platform/superproject/main/+\
main:frameworks/native/services/gpuservice/gpuwork/bpfprogs/gpuWork.c;l=35

The requirement is implemented using a delayed worker thread per
user id instance to accumulate its runtime on the gpu and emit
the event. Each user id instance is tracked using an xe_user
structure and the runtime is updated every time the kworker is
executed for this uid. The delay period is hardcoded to 500 msecs.

The runtime on the gpu is collected for each xe file individually
inside the function xe_exec_queue_update_run_ticks and accumulated
into the corresponding xe_user active_duration_ns field. The HW
Context timestamp field in the GTT is used to derive the runtime
in clock ticks and then converted into nanosecs before updating the
active duration.

Signed-off-by: Aakash Deep Sarkar <aakash.deep.sarkar at intel.com>

Aakash Deep Sarkar (8):
  [ANDROID]: Add a new xe_user structure
  [ANDROID]: Add xe_gt_clock_interval_to_ns function
  [ANDROID]: Add a trace point for GPU work period
  [ANDROID]: Modify xe_exec_queue_update_run_ticks
  [ANDROID]: Handle xe_user creation and removal
  [ANDROID]: Implement xe_work_period_worker
  [ANDROID]: Add a Kconfig option for GPU work period
  [ANDROID]: Handle xe_work_period destruction

 drivers/gpu/drm/xe/Makefile                   |   2 +
 drivers/gpu/drm/xe/xe_device.c                |  90 ++++++++++
 drivers/gpu/drm/xe/xe_device_types.h          |  19 ++
 drivers/gpu/drm/xe/xe_exec_queue.c            |  10 ++
 drivers/gpu/drm/xe/xe_gt_clock.c              |  14 ++
 drivers/gpu/drm/xe/xe_gt_clock.h              |   1 +
 .../drm/xe/xe_power_gpu_work_period_trace.h   |  61 +++++++
 drivers/gpu/drm/xe/xe_user.c                  | 162 ++++++++++++++++++
 drivers/gpu/drm/xe/xe_user.h                  | 114 ++++++++++++
 drivers/gpu/trace/Kconfig                     |  12 ++
 10 files changed, 485 insertions(+)
 create mode 100644 drivers/gpu/drm/xe/xe_power_gpu_work_period_trace.h
 create mode 100644 drivers/gpu/drm/xe/xe_user.c
 create mode 100644 drivers/gpu/drm/xe/xe_user.h

-- 
2.49.0



More information about the Intel-xe mailing list