[Intel-xe] [PATCH 00/21] Add OA functionality to Xe

Lionel Landwerlin lionel.g.landwerlin at intel.com
Fri Oct 20 07:44:13 UTC 2023


On 19/09/2023 19:10, Ashutosh Dixit wrote:
> This patchset is the initial port of i915 perf/OA functionality to the XE
> driver. The following features in i915 have not been ported and will be
> added (as new patches) if/as they are needed:
>
> * Inline batch submission on stream exec_queue/hw_engine

If you give us a syncobj to wait on for the NOA reconfiguration this 
won't be necessary

> * NOA wait

This is kind of required, otherwise we start reading reports from the OA 
buffer and the values are garbage

> * GuC ctx id (guc_sw_ctx_id)

This is probably fine. On Gfx8 we always consider using OA a privileged 
operation, if we keep it like that then it's okay.

> * CTX_R_PWR_CLK_STATE/GEN8_R_PWR_CLK_STATE
I think if we never care about Gfx11 that's fine.
> * hold_preemption (DRM_XE_OA_PROP_HOLD_PREEMPTION)

Without this, we can't implement perf queries in userspace.

Maybe that's okay?

> * sseu_config (DRM_XE_OA_PROP_GLOBAL_SSEU)
Without Gfx11 probably fine.
> * MTL bios_c6_setup
> * ratelimits
> * compat ioctl




>
> I am providing the following additional HAX patch (not part of this series)
> to help review these patches:
>
> https://patchwork.freedesktop.org/patch/551683/?series=120100&rev=4
>
> The commit message in the above patch explains how it can be useful for
> reviewing this series.
>
> This series is also available at:
>          https://gitlab.freedesktop.org/adixit/kernel/-/tree/xe-oa
>
> The series has been tested against this IGT series:
>          https://gitlab.freedesktop.org/adixit/igt-gpu-tools/-/tree/xe-oa
>
> v2: Fix build
> v3: Rebase, due to s/xe_engine/xe_exec_queue/
> v4: Re-run for testing
> v5: Address review comments, new patches 11 through 17
> v6: New patches 18 through 21
>
> Ashutosh Dixit (21):
>    drm/xe/uapi: Introduce OA (observability architecture) uapi
>    drm/xe/oa: Add OA types
>    drm/xe/oa: Add registers and GPU commands used by OA
>    drm/xe/oa: Module init/exit and probe/remove
>    drm/xe/oa: Add/remove config ioctl's
>    drm/xe/oa: Start implementing OA stream open ioctl
>    drm/xe/oa: OA stream initialization
>    drm/xe/oa: Expose OA stream fd
>    drm/xe/oa: Read file_operation
>    drm/xe/oa: Implement queries
>    drm/xe/oa: Override GuC RC with OA on PVC
>    drm/xe/uapi: "Perf" layer to support multiple perf counter stream
>      types
>    drm/xe/uapi: Multiplex PERF ops through a single PERF ioctl
>    drm/xe/uapi: Simplify OA configs in uapi
>    drm/xe/uapi: Remove OA format names from OA uapi
>    drm/xe/oa: Make xe_oa_timestamp_frequency per gt
>    drm/xe/oa: Remove filtering reports on context id
>    drm/xe/uapi: More OA uapi fixes/additions
>    drm/xe/uapi: Drop OA_IOCTL_VERSION
>    drm/xe/uapi: Use OA unit id to identify OA unit
>    drm/xe/uapi: Convert OA property key/value pairs to a struct
>
>   drivers/gpu/drm/xe/Makefile               |    2 +
>   drivers/gpu/drm/xe/regs/xe_engine_regs.h  |    2 +
>   drivers/gpu/drm/xe/regs/xe_gpu_commands.h |   13 +
>   drivers/gpu/drm/xe/regs/xe_oa_regs.h      |  173 ++
>   drivers/gpu/drm/xe/xe_device.c            |   13 +
>   drivers/gpu/drm/xe/xe_device_types.h      |    4 +
>   drivers/gpu/drm/xe/xe_gt_types.h          |    4 +
>   drivers/gpu/drm/xe/xe_guc_pc.c            |   60 +
>   drivers/gpu/drm/xe/xe_guc_pc.h            |    3 +
>   drivers/gpu/drm/xe/xe_hw_engine_types.h   |    2 +
>   drivers/gpu/drm/xe/xe_module.c            |    5 +
>   drivers/gpu/drm/xe/xe_oa.c                | 2314 +++++++++++++++++++++
>   drivers/gpu/drm/xe/xe_oa.h                |   27 +
>   drivers/gpu/drm/xe/xe_oa_types.h          |  307 +++
>   drivers/gpu/drm/xe/xe_perf.c              |   36 +
>   drivers/gpu/drm/xe/xe_perf.h              |   16 +
>   drivers/gpu/drm/xe/xe_query.c             |    5 +-
>   include/uapi/drm/xe_drm.h                 |  288 ++-
>   18 files changed, 3272 insertions(+), 2 deletions(-)
>   create mode 100644 drivers/gpu/drm/xe/regs/xe_oa_regs.h
>   create mode 100644 drivers/gpu/drm/xe/xe_oa.c
>   create mode 100644 drivers/gpu/drm/xe/xe_oa.h
>   create mode 100644 drivers/gpu/drm/xe/xe_oa_types.h
>   create mode 100644 drivers/gpu/drm/xe/xe_perf.c
>   create mode 100644 drivers/gpu/drm/xe/xe_perf.h
>



More information about the Intel-xe mailing list