diff options
Diffstat (limited to 'include/drm/ttm/ttm_bo_api.h')
| -rw-r--r-- | include/drm/ttm/ttm_bo_api.h | 80 | 
1 files changed, 18 insertions, 62 deletions
diff --git a/include/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h index 43c4929a2171..65e399d280f7 100644 --- a/include/drm/ttm/ttm_bo_api.h +++ b/include/drm/ttm/ttm_bo_api.h @@ -147,7 +147,6 @@ struct ttm_tt;   * holds a pointer to a persistent shmem object.   * @ttm: TTM structure holding system pages.   * @evicted: Whether the object was evicted without user-space knowing. - * @cpu_writes: For synchronization. Number of cpu writers.   * @lru: List head for the lru list.   * @ddestroy: List head for the delayed destroy list.   * @swap: List head for swap LRU list. @@ -199,12 +198,6 @@ struct ttm_buffer_object {  	bool evicted;  	/** -	 * Members protected by the bo::reserved lock only when written to. -	 */ - -	atomic_t cpu_writers; - -	/**  	 * Members protected by the bdev::lru_lock.  	 */ @@ -368,30 +361,6 @@ int ttm_bo_validate(struct ttm_buffer_object *bo,  void ttm_bo_put(struct ttm_buffer_object *bo);  /** - * ttm_bo_add_to_lru - * - * @bo: The buffer object. - * - * Add this bo to the relevant mem type lru and, if it's backed by - * system pages (ttms) to the swap list. - * This function must be called with struct ttm_bo_global::lru_lock held, and - * is typically called immediately prior to unreserving a bo. - */ -void ttm_bo_add_to_lru(struct ttm_buffer_object *bo); - -/** - * ttm_bo_del_from_lru - * - * @bo: The buffer object. - * - * Remove this bo from all lru lists used to lookup and reserve an object. - * This function must be called with struct ttm_bo_global::lru_lock held, - * and is usually called just immediately after the bo has been reserved to - * avoid recursive reservation from lru lists. - */ -void ttm_bo_del_from_lru(struct ttm_buffer_object *bo); - -/**   * ttm_bo_move_to_lru_tail   *   * @bo: The buffer object. @@ -442,31 +411,6 @@ bool ttm_bo_eviction_valuable(struct ttm_buffer_object *bo,  			      const struct ttm_place *place);  /** - * ttm_bo_synccpu_write_grab - * - * @bo: The buffer object: - * @no_wait: Return immediately if buffer is busy. - * - * Synchronizes a buffer object for CPU RW access. This means - * command submission that affects the buffer will return -EBUSY - * until ttm_bo_synccpu_write_release is called. - * - * Returns - * -EBUSY if the buffer is busy and no_wait is true. - * -ERESTARTSYS if interrupted by a signal. - */ -int ttm_bo_synccpu_write_grab(struct ttm_buffer_object *bo, bool no_wait); - -/** - * ttm_bo_synccpu_write_release: - * - * @bo : The buffer object. - * - * Releases a synccpu lock. - */ -void ttm_bo_synccpu_write_release(struct ttm_buffer_object *bo); - -/**   * ttm_bo_acc_size   *   * @bdev: Pointer to a ttm_bo_device struct. @@ -710,16 +654,14 @@ int ttm_bo_kmap(struct ttm_buffer_object *bo, unsigned long start_page,  void ttm_bo_kunmap(struct ttm_bo_kmap_obj *map);  /** - * ttm_fbdev_mmap - mmap fbdev memory backed by a ttm buffer object. + * ttm_bo_mmap_obj - mmap memory backed by a ttm buffer object.   *   * @vma:       vma as input from the fbdev mmap method. - * @bo:        The bo backing the address space. The address space will - * have the same size as the bo, and start at offset 0. + * @bo:        The bo backing the address space.   * - * This function is intended to be called by the fbdev mmap method - * if the fbdev address space is to be backed by a bo. + * Maps a buffer object.   */ -int ttm_fbdev_mmap(struct vm_area_struct *vma, struct ttm_buffer_object *bo); +int ttm_bo_mmap_obj(struct vm_area_struct *vma, struct ttm_buffer_object *bo);  /**   * ttm_bo_mmap - mmap out of the ttm device address space. @@ -785,4 +727,18 @@ static inline bool ttm_bo_uses_embedded_gem_object(struct ttm_buffer_object *bo)  {  	return bo->base.dev != NULL;  } + +/* Default number of pre-faulted pages in the TTM fault handler */ +#define TTM_BO_VM_NUM_PREFAULT 16 + +vm_fault_t ttm_bo_vm_reserve(struct ttm_buffer_object *bo, +			     struct vm_fault *vmf); + +vm_fault_t ttm_bo_vm_fault_reserved(struct vm_fault *vmf, +				    pgprot_t prot, +				    pgoff_t num_prefault); + +void ttm_bo_vm_open(struct vm_area_struct *vma); + +void ttm_bo_vm_close(struct vm_area_struct *vma);  #endif  |