[PATCH v5 3/3] drm/xe: Add WA BB to capture active context utilization

Umesh Nerlige Ramappa umesh.nerlige.ramappa at intel.com
Mon May 12 22:53:14 UTC 2025


On Fri, May 09, 2025 at 11:40:12AM -0500, Lucas De Marchi wrote:
>On Fri, May 09, 2025 at 09:12:03AM -0700, Umesh Nerlige Ramappa wrote:
>>Context Timestamp (CTX_TIMESTAMP) in the LRC accumulates the run ticks
>>of the context, but only gets updated when the context switches out. In
>>order to check how long a context has been active before it switches
>>out, two things are required:
>>
>>(1) Determine if the context is running:
>>
>>To do so, we program the WA BB to set an initial value for CTX_TIMESTAMP
>>in the LRC. The value chosen is 1 since 0 is the initial value when the
>>LRC is initialized. During a query, we just check for this value to
>>determine if the context is active. If the context switched out, it
>>would overwrite this location with the actual CTX_TIMESTAMP MMIO value.
>>Note that WA BB runs as the last part of the context restore, so reusing
>>this LRC location will not clobber anything.
>>
>>(2) Calculate the time that the context has been active for:
>>
>>The CTX_TIMESTAMP ticks only when the context is active. If a context is
>>active, we just use the CTX_TIMESTAMP MMIO as the new value of
>>utilization. While doing so, we need to read the CTX_TIMESTAMP MMIO
>>for the specific engine instance. Since we do not know which instance
>>the context is running on until it is scheduled, we also read the
>>ENGINE_ID MMIO in the WA BB and store it in the PPHSWP.
>>
>>Using the above 2 instructions in a WA BB, capture active context
>>utilization.
>>
>>v2: (Matt Brost)
>>- This breaks TDR, fix it by saving the CTX_TIMESTAMP register
>> "drm/xe: Save CTX_TIMESTAMP mmio value instead of LRC value"
>>- Drop tile from LRC if using gt
>> "drm/xe: Save the gt pointer in LRC and drop the tile"
>>
>>v3:
>>- Remove helpers for bb_per_ctx_ptr (Matt)
>>- Add define for context active value (Matt)
>>- Use 64 bit CTX TIMESTAMP for platforms that support it. For platforms
>> that don't, live with the rare race. (Matt, Lucas)
>>- Convert engine id to hwe and get the MMIO value (Lucas)
>>- Correct commit message on when WA BB runs (Lucas)
>>
>>v4:
>>- s/GRAPHICS_VER(...)/xe->info.has_64bit_timestamp/ (Matt)
>>- Drop support for active utilization on a VF (CI failure)
>>- In xe_lrc_init ensure the lrc value is 0 to begin with (CI regression)
>>
>>v5:
>>- Minor checkpatch fix
>>- Squash into previous commit and make TDR use 32-bit time
>>- Update code comment to match commit msg
>>
>>Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/4532
>>Suggested-by: Lucas De Marchi <lucas.demarchi at intel.com>
>>Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa at intel.com>
>
>
>Reviewed-by: Lucas De Marchi <lucas.demarchi at intel.com>

Series is pushed. Thanks Matt and Lucas for the inputs.

Umesh
>
>thanks
>Lucas De Marchi


More information about the Intel-xe mailing list