@@ -79,6 +79,29 @@ struct lock_class_key;
79
79
#define ENGINE_WRITE (...) __ENGINE_WRITE_OP(write, __VA_ARGS__)
80
80
#define ENGINE_WRITE_FW (...) __ENGINE_WRITE_OP(write_fw, __VA_ARGS__)
81
81
82
+ #define __HAS_ENGINE (engine_mask , id ) ((engine_mask) & BIT(id))
83
+ #define HAS_ENGINE (gt , id ) __HAS_ENGINE((gt)->info.engine_mask, id)
84
+
85
+ #define __ENGINE_INSTANCES_MASK (mask , first , count ) ({ \
86
+ unsigned int first__ = (first); \
87
+ unsigned int count__ = (count); \
88
+ ((mask) & GENMASK(first__ + count__ - 1, first__)) >> first__; \
89
+ })
90
+
91
+ #define ENGINE_INSTANCES_MASK (gt , first , count ) \
92
+ __ENGINE_INSTANCES_MASK((gt)->info.engine_mask, first, count)
93
+
94
+ #define RCS_MASK (gt ) \
95
+ ENGINE_INSTANCES_MASK(gt, RCS0, I915_MAX_RCS)
96
+ #define BCS_MASK (gt ) \
97
+ ENGINE_INSTANCES_MASK(gt, BCS0, I915_MAX_BCS)
98
+ #define VDBOX_MASK (gt ) \
99
+ ENGINE_INSTANCES_MASK(gt, VCS0, I915_MAX_VCS)
100
+ #define VEBOX_MASK (gt ) \
101
+ ENGINE_INSTANCES_MASK(gt, VECS0, I915_MAX_VECS)
102
+ #define CCS_MASK (gt ) \
103
+ ENGINE_INSTANCES_MASK(gt, CCS0, I915_MAX_CCS)
104
+
82
105
#define GEN6_RING_FAULT_REG_READ (engine__ ) \
83
106
intel_uncore_read((engine__)->uncore, RING_FAULT_REG(engine__))
84
107
@@ -355,4 +378,12 @@ u64 intel_clamp_preempt_timeout_ms(struct intel_engine_cs *engine, u64 value);
355
378
u64 intel_clamp_stop_timeout_ms (struct intel_engine_cs * engine , u64 value );
356
379
u64 intel_clamp_timeslice_duration_ms (struct intel_engine_cs * engine , u64 value );
357
380
381
+ #define rb_to_uabi_engine (rb ) \
382
+ rb_entry_safe(rb, struct intel_engine_cs, uabi_node)
383
+
384
+ #define for_each_uabi_engine (engine__ , i915__ ) \
385
+ for ((engine__) = rb_to_uabi_engine(rb_first(&(i915__)->uabi_engines));\
386
+ (engine__); \
387
+ (engine__) = rb_to_uabi_engine(rb_next(&(engine__)->uabi_node)))
388
+
358
389
#endif /* _INTEL_RINGBUFFER_H_ */
0 commit comments