]> Git Repo - linux.git/blob - drivers/gpu/drm/i915/gt/intel_breadcrumbs.h
Linux 6.14-rc3
[linux.git] / drivers / gpu / drm / i915 / gt / intel_breadcrumbs.h
1 /* SPDX-License-Identifier: MIT */
2 /*
3  * Copyright © 2019 Intel Corporation
4  */
5
6 #ifndef __INTEL_BREADCRUMBS__
7 #define __INTEL_BREADCRUMBS__
8
9 #include <linux/atomic.h>
10 #include <linux/irq_work.h>
11
12 #include "intel_breadcrumbs_types.h"
13
14 struct drm_printer;
15 struct i915_request;
16 struct intel_breadcrumbs;
17
18 struct intel_breadcrumbs *
19 intel_breadcrumbs_create(struct intel_engine_cs *irq_engine);
20 void intel_breadcrumbs_free(struct kref *kref);
21
22 void intel_breadcrumbs_reset(struct intel_breadcrumbs *b);
23 void __intel_breadcrumbs_park(struct intel_breadcrumbs *b);
24
25 static inline void intel_breadcrumbs_unpark(struct intel_breadcrumbs *b)
26 {
27         atomic_inc(&b->active);
28 }
29
30 static inline void intel_breadcrumbs_park(struct intel_breadcrumbs *b)
31 {
32         if (atomic_dec_and_test(&b->active))
33                 __intel_breadcrumbs_park(b);
34 }
35
36 static inline void
37 intel_engine_signal_breadcrumbs(struct intel_engine_cs *engine)
38 {
39         irq_work_queue(&engine->breadcrumbs->irq_work);
40 }
41
42 void intel_engine_print_breadcrumbs(struct intel_engine_cs *engine,
43                                     struct drm_printer *p);
44
45 bool i915_request_enable_breadcrumb(struct i915_request *request);
46 void i915_request_cancel_breadcrumb(struct i915_request *request);
47
48 void intel_context_remove_breadcrumbs(struct intel_context *ce,
49                                       struct intel_breadcrumbs *b);
50
51 static inline struct intel_breadcrumbs *
52 intel_breadcrumbs_get(struct intel_breadcrumbs *b)
53 {
54         kref_get(&b->ref);
55         return b;
56 }
57
58 static inline void intel_breadcrumbs_put(struct intel_breadcrumbs *b)
59 {
60         kref_put(&b->ref, intel_breadcrumbs_free);
61 }
62
63 #endif /* __INTEL_BREADCRUMBS__ */
This page took 0.03489 seconds and 4 git commands to generate.