Loading...
1/* SPDX-License-Identifier: MIT */
2/*
3 * Copyright © 2021 Intel Corporation
4 */
5
6#ifndef _XE_HW_ENGINE_H_
7#define _XE_HW_ENGINE_H_
8
9#include "xe_hw_engine_types.h"
10
11struct drm_printer;
12
13#ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MIN
14#define XE_HW_ENGINE_JOB_TIMEOUT_MIN CONFIG_DRM_XE_JOB_TIMEOUT_MIN
15#else
16#define XE_HW_ENGINE_JOB_TIMEOUT_MIN 1
17#endif
18#ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MAX
19#define XE_HW_ENGINE_JOB_TIMEOUT_MAX CONFIG_DRM_XE_JOB_TIMEOUT_MAX
20#else
21#define XE_HW_ENGINE_JOB_TIMEOUT_MAX (10 * 1000)
22#endif
23#ifdef CONFIG_DRM_XE_TIMESLICE_MIN
24#define XE_HW_ENGINE_TIMESLICE_MIN CONFIG_DRM_XE_TIMESLICE_MIN
25#else
26#define XE_HW_ENGINE_TIMESLICE_MIN 1
27#endif
28#ifdef CONFIG_DRM_XE_TIMESLICE_MAX
29#define XE_HW_ENGINE_TIMESLICE_MAX CONFIG_DRM_XE_TIMESLICE_MAX
30#else
31#define XE_HW_ENGINE_TIMESLICE_MAX (10 * 1000 * 1000)
32#endif
33#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT
34#define XE_HW_ENGINE_PREEMPT_TIMEOUT CONFIG_DRM_XE_PREEMPT_TIMEOUT
35#else
36#define XE_HW_ENGINE_PREEMPT_TIMEOUT (640 * 1000)
37#endif
38#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN
39#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN
40#else
41#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN 1
42#endif
43#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX
44#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX
45#else
46#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX (10 * 1000 * 1000)
47#endif
48
49int xe_hw_engines_init_early(struct xe_gt *gt);
50int xe_hw_engines_init(struct xe_gt *gt);
51void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec);
52void xe_hw_engine_enable_ring(struct xe_hw_engine *hwe);
53u32 xe_hw_engine_mask_per_class(struct xe_gt *gt,
54 enum xe_engine_class engine_class);
55
56struct xe_hw_engine_snapshot *
57xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe);
58void xe_hw_engine_snapshot_free(struct xe_hw_engine_snapshot *snapshot);
59void xe_hw_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot,
60 struct drm_printer *p);
61void xe_hw_engine_print(struct xe_hw_engine *hwe, struct drm_printer *p);
62void xe_hw_engine_setup_default_lrc_state(struct xe_hw_engine *hwe);
63
64bool xe_hw_engine_is_reserved(struct xe_hw_engine *hwe);
65static inline bool xe_hw_engine_is_valid(struct xe_hw_engine *hwe)
66{
67 return hwe->name;
68}
69
70#endif