44,7 → 44,11 |
|
struct drm_mm_node; |
|
struct reservation_object { |
struct mutex lock; |
}; |
|
|
/** |
* struct ttm_placement |
* |
153,7 → 157,6 |
* Lru lists may keep one refcount, the delayed delete list, and kref != 0 |
* keeps one refcount. When this refcount reaches zero, |
* the object is destroyed. |
* @event_queue: Queue for processes waiting on buffer object status change. |
* @mem: structure describing current placement. |
* @persistent_swap_storage: Usually the swap storage is deleted for buffers |
* pinned in physical memory. If this behaviour is not desired, this member |
164,12 → 167,6 |
* @lru: List head for the lru list. |
* @ddestroy: List head for the delayed destroy list. |
* @swap: List head for swap LRU list. |
* @val_seq: Sequence of the validation holding the @reserved lock. |
* Used to avoid starvation when many processes compete to validate the |
* buffer. This member is protected by the bo_device::lru_lock. |
* @seq_valid: The value of @val_seq is valid. This value is protected by |
* the bo_device::lru_lock. |
* @reserved: Deadlock-free lock used for synchronization state transitions. |
* @sync_obj: Pointer to a synchronization object. |
* @priv_flags: Flags describing buffer object internal state. |
* @vm_rb: Rb node for the vm rb tree. |
209,10 → 206,9 |
|
struct kref kref; |
struct kref list_kref; |
wait_queue_head_t event_queue; |
|
/** |
* Members protected by the bo::reserved lock. |
* Members protected by the bo::resv::reserved lock. |
*/ |
|
struct ttm_mem_reg mem; |
234,17 → 230,8 |
struct list_head ddestroy; |
struct list_head swap; |
struct list_head io_reserve_lru; |
uint32_t val_seq; |
bool seq_valid; |
|
/** |
* Members protected by the bdev::lru_lock |
* only when written to. |
*/ |
|
atomic_t reserved; |
|
/** |
* Members protected by struct buffer_object_device::fence_lock |
* In addition, setting sync_obj to anything else |
* than NULL requires bo::reserved to be held. This allows for |
272,6 → 259,9 |
uint32_t cur_placement; |
|
struct sg_table *sg; |
|
struct reservation_object *resv; |
struct reservation_object ttm_resv; |
}; |
|
/** |
725,18 → 715,4 |
|
extern void ttm_bo_swapout_all(struct ttm_bo_device *bdev); |
|
/** |
* ttm_bo_is_reserved - return an indication if a ttm buffer object is reserved |
* |
* @bo: The buffer object to check. |
* |
* This function returns an indication if a bo is reserved or not, and should |
* only be used to print an error when it is not from incorrect api usage, since |
* there's no guarantee that it is the caller that is holding the reservation. |
*/ |
static inline bool ttm_bo_is_reserved(struct ttm_buffer_object *bo) |
{ |
return atomic_read(&bo->reserved); |
} |
|
#endif |