mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-03 01:28:04 +00:00

During capture time, the target job may be unavailable (e.g., if it's in LR mode). However, the associated exec queue will be available regardless, change xe_engine_snapshot_capture_for_job to take a queue argument ann rename to xe_engine_snapshot_capture_for_queue. v2: - Reword commit message (Jonathan) - Remove redundant queueu check (Zhanjun) - Remove devcoredump job member (Zhanjun) Cc: Zhanjun Dong <zhanjun.dong@intel.com> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20241114022522.1951351-7-matthew.brost@intel.com
83 lines
2.6 KiB
C
83 lines
2.6 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2021 Intel Corporation
|
|
*/
|
|
|
|
#ifndef _XE_HW_ENGINE_H_
|
|
#define _XE_HW_ENGINE_H_
|
|
|
|
#include "xe_hw_engine_types.h"
|
|
|
|
struct drm_printer;
|
|
struct drm_xe_engine_class_instance;
|
|
struct xe_device;
|
|
struct xe_exec_queue;
|
|
|
|
#ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MIN
|
|
#define XE_HW_ENGINE_JOB_TIMEOUT_MIN CONFIG_DRM_XE_JOB_TIMEOUT_MIN
|
|
#else
|
|
#define XE_HW_ENGINE_JOB_TIMEOUT_MIN 1
|
|
#endif
|
|
#ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MAX
|
|
#define XE_HW_ENGINE_JOB_TIMEOUT_MAX CONFIG_DRM_XE_JOB_TIMEOUT_MAX
|
|
#else
|
|
#define XE_HW_ENGINE_JOB_TIMEOUT_MAX (10 * 1000)
|
|
#endif
|
|
#ifdef CONFIG_DRM_XE_TIMESLICE_MIN
|
|
#define XE_HW_ENGINE_TIMESLICE_MIN CONFIG_DRM_XE_TIMESLICE_MIN
|
|
#else
|
|
#define XE_HW_ENGINE_TIMESLICE_MIN 1
|
|
#endif
|
|
#ifdef CONFIG_DRM_XE_TIMESLICE_MAX
|
|
#define XE_HW_ENGINE_TIMESLICE_MAX CONFIG_DRM_XE_TIMESLICE_MAX
|
|
#else
|
|
#define XE_HW_ENGINE_TIMESLICE_MAX (10 * 1000 * 1000)
|
|
#endif
|
|
#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT
|
|
#define XE_HW_ENGINE_PREEMPT_TIMEOUT CONFIG_DRM_XE_PREEMPT_TIMEOUT
|
|
#else
|
|
#define XE_HW_ENGINE_PREEMPT_TIMEOUT (640 * 1000)
|
|
#endif
|
|
#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN
|
|
#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN
|
|
#else
|
|
#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN 1
|
|
#endif
|
|
#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX
|
|
#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX
|
|
#else
|
|
#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX (10 * 1000 * 1000)
|
|
#endif
|
|
|
|
int xe_hw_engines_init_early(struct xe_gt *gt);
|
|
int xe_hw_engines_init(struct xe_gt *gt);
|
|
void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec);
|
|
void xe_hw_engine_enable_ring(struct xe_hw_engine *hwe);
|
|
u32 xe_hw_engine_mask_per_class(struct xe_gt *gt,
|
|
enum xe_engine_class engine_class);
|
|
struct xe_hw_engine_snapshot *
|
|
xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe, struct xe_exec_queue *q);
|
|
void xe_hw_engine_snapshot_free(struct xe_hw_engine_snapshot *snapshot);
|
|
void xe_hw_engine_print(struct xe_hw_engine *hwe, struct drm_printer *p);
|
|
void xe_hw_engine_setup_default_lrc_state(struct xe_hw_engine *hwe);
|
|
|
|
bool xe_hw_engine_is_reserved(struct xe_hw_engine *hwe);
|
|
|
|
struct xe_hw_engine *
|
|
xe_hw_engine_lookup(struct xe_device *xe,
|
|
struct drm_xe_engine_class_instance eci);
|
|
|
|
static inline bool xe_hw_engine_is_valid(struct xe_hw_engine *hwe)
|
|
{
|
|
return hwe->name;
|
|
}
|
|
|
|
const char *xe_hw_engine_class_to_str(enum xe_engine_class class);
|
|
u64 xe_hw_engine_read_timestamp(struct xe_hw_engine *hwe);
|
|
enum xe_force_wake_domains xe_hw_engine_to_fw_domain(struct xe_hw_engine *hwe);
|
|
|
|
void xe_hw_engine_mmio_write32(struct xe_hw_engine *hwe, struct xe_reg reg, u32 val);
|
|
u32 xe_hw_engine_mmio_read32(struct xe_hw_engine *hwe, struct xe_reg reg);
|
|
|
|
#endif
|