1 /* SPDX-License-Identifier: MIT */
3 * Copyright © 2021 Intel Corporation
6 #ifndef _XE_HW_ENGINE_H_
7 #define _XE_HW_ENGINE_H_
9 #include "xe_hw_engine_types.h"
13 #ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MIN
14 #define XE_HW_ENGINE_JOB_TIMEOUT_MIN CONFIG_DRM_XE_JOB_TIMEOUT_MIN
16 #define XE_HW_ENGINE_JOB_TIMEOUT_MIN 1
18 #ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MAX
19 #define XE_HW_ENGINE_JOB_TIMEOUT_MAX CONFIG_DRM_XE_JOB_TIMEOUT_MAX
21 #define XE_HW_ENGINE_JOB_TIMEOUT_MAX (10 * 1000)
23 #ifdef CONFIG_DRM_XE_TIMESLICE_MIN
24 #define XE_HW_ENGINE_TIMESLICE_MIN CONFIG_DRM_XE_TIMESLICE_MIN
26 #define XE_HW_ENGINE_TIMESLICE_MIN 1
28 #ifdef CONFIG_DRM_XE_TIMESLICE_MAX
29 #define XE_HW_ENGINE_TIMESLICE_MAX CONFIG_DRM_XE_TIMESLICE_MAX
31 #define XE_HW_ENGINE_TIMESLICE_MAX (10 * 1000 * 1000)
33 #ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT
34 #define XE_HW_ENGINE_PREEMPT_TIMEOUT CONFIG_DRM_XE_PREEMPT_TIMEOUT
36 #define XE_HW_ENGINE_PREEMPT_TIMEOUT (640 * 1000)
38 #ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN
39 #define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN
41 #define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN 1
43 #ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX
44 #define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX
46 #define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX (10 * 1000 * 1000)
49 int xe_hw_engines_init_early(struct xe_gt *gt);
50 int xe_hw_engines_init(struct xe_gt *gt);
51 void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec);
52 void xe_hw_engine_enable_ring(struct xe_hw_engine *hwe);
53 u32 xe_hw_engine_mask_per_class(struct xe_gt *gt,
54 enum xe_engine_class engine_class);
56 struct xe_hw_engine_snapshot *
57 xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe);
58 void xe_hw_engine_snapshot_free(struct xe_hw_engine_snapshot *snapshot);
59 void xe_hw_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot,
60 struct drm_printer *p);
61 void xe_hw_engine_print(struct xe_hw_engine *hwe, struct drm_printer *p);
62 void xe_hw_engine_setup_default_lrc_state(struct xe_hw_engine *hwe);
64 bool xe_hw_engine_is_reserved(struct xe_hw_engine *hwe);
65 static inline bool xe_hw_engine_is_valid(struct xe_hw_engine *hwe)