| /* |
| * SPDX-License-Identifier: MIT |
| * |
| * Copyright © 2019 Intel Corporation |
| */ |
| |
| #ifndef _I915_ACTIVE_TYPES_H_ |
| #define _I915_ACTIVE_TYPES_H_ |
| |
| #include <linux/atomic.h> |
| #include <linux/dma-fence.h> |
| #include <linux/llist.h> |
| #include <linux/mutex.h> |
| #include <linux/rbtree.h> |
| #include <linux/rcupdate.h> |
| #include <linux/workqueue.h> |
| |
| struct i915_active_fence { |
| struct dma_fence __rcu *fence; |
| struct dma_fence_cb cb; |
| }; |
| |
| struct active_node; |
| |
| struct i915_active { |
| atomic_t count; |
| struct mutex mutex; |
| |
| spinlock_t tree_lock; |
| struct active_node *cache; |
| struct rb_root tree; |
| |
| /* Preallocated "exclusive" node */ |
| struct i915_active_fence excl; |
| |
| unsigned long flags; |
| #define I915_ACTIVE_RETIRE_SLEEPS BIT(0) |
| |
| int (*active)(struct i915_active *ref); |
| void (*retire)(struct i915_active *ref); |
| |
| struct work_struct work; |
| |
| struct llist_head preallocated_barriers; |
| }; |
| |
| #endif /* _I915_ACTIVE_TYPES_H_ */ |