1/* 2 * SPDX-License-Identifier: MIT 3 * 4 * Copyright �� 2019 Intel Corporation 5 */ 6 7#ifndef _I915_ACTIVE_TYPES_H_ 8#define _I915_ACTIVE_TYPES_H_ 9 10#include <linux/atomic.h> 11#include <linux/dma-fence.h> 12#include <linux/llist.h> 13#include <linux/mutex.h> 14#include <linux/rbtree.h> 15#include <linux/rcupdate.h> 16#include <linux/workqueue.h> 17 18struct i915_active_fence { 19 struct dma_fence __rcu *fence; 20 struct dma_fence_cb cb; 21}; 22 23struct active_node; 24 25struct i915_active { 26 atomic_t count; 27 struct mutex mutex; 28 29 spinlock_t tree_lock; 30 struct active_node *cache; 31 struct rb_root tree; 32 33 /* Preallocated "exclusive" node */ 34 struct i915_active_fence excl; 35 36 unsigned long flags; 37#define I915_ACTIVE_RETIRE_SLEEPS BIT(0) 38 39 int (*active)(struct i915_active *ref); 40 void (*retire)(struct i915_active *ref); 41 42 struct work_struct work; 43 44 struct llist_head preallocated_barriers; 45}; 46 47#endif /* _I915_ACTIVE_TYPES_H_ */ 48