mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-31 06:09:56 +00:00

Upon the G2H Notify-Err-Capture event, parse through the GuC Log Buffer (error-capture-subregion) and generate one or more capture-nodes. A single node represents a single "engine- instance-capture-dump" and contains at least 3 register lists: global, engine-class and engine-instance. An internal link list is maintained to store one or more nodes. Because the link-list node generation happen before the call to devcoredump, duplicate global and engine-class register lists for each engine-instance register dump if we find dependent-engine resets in a engine-capture-group. To avoid dynamically allocate the output nodes during gt reset, pre-allocate a fixed number of empty nodes up front (at the time of ADS registration) that we can consume from or return to an internal cached list of nodes. Signed-off-by: Zhanjun Dong <zhanjun.dong@intel.com> Reviewed-by: Alan Previn <alan.previn.teres.alexis@intel.com> Signed-off-by: Matt Roper <matthew.d.roper@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20241004193428.3311145-5-zhanjun.dong@intel.com
44 lines
1.5 KiB
C
44 lines
1.5 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2022 Intel Corporation
|
|
*/
|
|
|
|
#ifndef _XE_GUC_SUBMIT_H_
|
|
#define _XE_GUC_SUBMIT_H_
|
|
|
|
#include <linux/types.h>
|
|
|
|
struct drm_printer;
|
|
struct xe_exec_queue;
|
|
struct xe_guc;
|
|
|
|
int xe_guc_submit_init(struct xe_guc *guc, unsigned int num_ids);
|
|
|
|
int xe_guc_submit_reset_prepare(struct xe_guc *guc);
|
|
void xe_guc_submit_reset_wait(struct xe_guc *guc);
|
|
void xe_guc_submit_stop(struct xe_guc *guc);
|
|
int xe_guc_submit_start(struct xe_guc *guc);
|
|
void xe_guc_submit_wedge(struct xe_guc *guc);
|
|
|
|
int xe_guc_read_stopped(struct xe_guc *guc);
|
|
int xe_guc_sched_done_handler(struct xe_guc *guc, u32 *msg, u32 len);
|
|
int xe_guc_deregister_done_handler(struct xe_guc *guc, u32 *msg, u32 len);
|
|
int xe_guc_exec_queue_reset_handler(struct xe_guc *guc, u32 *msg, u32 len);
|
|
int xe_guc_exec_queue_memory_cat_error_handler(struct xe_guc *guc, u32 *msg,
|
|
u32 len);
|
|
int xe_guc_exec_queue_reset_failure_handler(struct xe_guc *guc, u32 *msg, u32 len);
|
|
int xe_guc_error_capture_handler(struct xe_guc *guc, u32 *msg, u32 len);
|
|
|
|
struct xe_guc_submit_exec_queue_snapshot *
|
|
xe_guc_exec_queue_snapshot_capture(struct xe_exec_queue *q);
|
|
void
|
|
xe_guc_exec_queue_snapshot_capture_delayed(struct xe_guc_submit_exec_queue_snapshot *snapshot);
|
|
void
|
|
xe_guc_exec_queue_snapshot_print(struct xe_guc_submit_exec_queue_snapshot *snapshot,
|
|
struct drm_printer *p);
|
|
void
|
|
xe_guc_exec_queue_snapshot_free(struct xe_guc_submit_exec_queue_snapshot *snapshot);
|
|
void xe_guc_submit_print(struct xe_guc *guc, struct drm_printer *p);
|
|
|
|
#endif
|