Hi Jonathan, On 2025-02-20 at 20:37:47 +0000, Jonathan Cavitt wrote: > Add tests that exercise the xe reset stats query. The current tests > simply output the result of the tests and assert that the reset and ban > counters properly increment. > > Signed-off-by: Jonathan Cavitt <jonathan.cavitt@xxxxxxxxx> > --- > include/drm-uapi/xe_drm.h | 50 ++++++ Please split drm-uapi change into separate patch, also give drm-next hash and/or lore.kernel.org link See git log -- include/drm-uapi/xe_drm.h Regards, Kamil > tests/intel/xe_query.c | 339 ++++++++++++++++++++++++++++++++++++++ > 2 files changed, 389 insertions(+) > > diff --git a/include/drm-uapi/xe_drm.h b/include/drm-uapi/xe_drm.h > index 08e263b3b2..e4f2f0d2a6 100644 > --- a/include/drm-uapi/xe_drm.h > +++ b/include/drm-uapi/xe_drm.h > @@ -700,6 +700,7 @@ struct drm_xe_device_query { > #define DRM_XE_DEVICE_QUERY_ENGINE_CYCLES 6 > #define DRM_XE_DEVICE_QUERY_UC_FW_VERSION 7 > #define DRM_XE_DEVICE_QUERY_OA_UNITS 8 > +#define DRM_XE_DEVICE_QUERY_RESET_STATS 10 > /** @query: The type of data to query */ > __u32 query; > > @@ -1729,6 +1730,55 @@ struct drm_xe_oa_stream_info { > __u64 reserved[3]; > }; > > +#define MAX_BAN_COUNT 50 > +/** > + * struct drm_xe_exec_queue_ban - Per drm client exec queue ban info returned > + * from @DRM_XE_DEVICE_QUERY_RESET_STATS query. Includes the exec queue ID and > + * all associated pagefault information, if relevant. > + */ > +struct drm_xe_exec_queue_ban { > + /** @exec_queue_id: ID of banned exec queue */ > + __u32 exec_queue_id; > + /** > + * @pf_found: whether or not the ban is associated with a pagefault. > + * If not, all pagefault data will default to 0 and will not be relevant. > + */ > + __u8 pf_found; > + /** @access_type: access type of associated pagefault */ > + __u8 access_type; > + /** @fault_type: fault type of associated pagefault */ > + __u8 fault_type; > + /** @vfid: VFID of associated pagefault */ > + __u8 vfid; > + /** @asid: ASID of associated pagefault */ > + __u32 asid; > + /** @pdata: PDATA of associated pagefault */ > + __u16 pdata; > + /** @engine_class: engine class of associated pagefault */ > + __u8 engine_class; > + /** @engine_instance: engine instance of associated pagefault */ > + __u8 engine_instance; > + /** @fault_addr: faulted address of associated pagefault */ > + __u64 fault_addr; > +}; > + > +/** > + * struct drm_xe_query_reset_stats - Per drm client reset stats query. > + */ > +struct drm_xe_query_reset_stats { > + /** @extensions: Pointer to the first extension struct, if any */ > + __u64 extensions; > + /** @reset_count: Number of times the drm client has observed an engine reset */ > + __u64 reset_count; > + /** @ban_count: number of exec queue bans saved by the drm client */ > + __u64 ban_count; > + /** > + * @ban_list: flexible array of struct drm_xe_exec_queue_ban, reporting all > + * observed exec queue bans on the drm client. > + */ > + struct drm_xe_exec_queue_ban ban_list[]; > +}; > + > #if defined(__cplusplus) > } > #endif [...]