diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 17 | 
1 files changed, 15 insertions, 2 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h index 047ec1930d12..54d7da396de0 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h @@ -257,15 +257,20 @@ struct amdgpu_vm_update_params {  	unsigned int num_dw_left;  	/** -	 * @table_freed: return true if page table is freed when updating +	 * @needs_flush: true whenever we need to invalidate the TLB  	 */ -	bool table_freed; +	bool needs_flush;  	/**  	 * @allow_override: true for memory that is not uncached: allows MTYPE  	 * to be overridden for NUMA local memory.  	 */  	bool allow_override; + +	/** +	 * @tlb_flush_waitlist: temporary storage for BOs until tlb_flush +	 */ +	struct list_head tlb_flush_waitlist;  };  struct amdgpu_vm_update_funcs { @@ -342,6 +347,7 @@ struct amdgpu_vm {  	atomic64_t		tlb_seq;  	struct dma_fence	*last_tlb_flush;  	atomic64_t		kfd_last_flushed_seq; +	uint64_t		tlb_fence_context;  	/* How many times we had to re-generate the page tables */  	uint64_t		generation; @@ -422,6 +428,8 @@ struct amdgpu_vm_manager {  	 * look up VM of a page fault  	 */  	struct xarray				pasids; +	/* Global registration of recent page fault information */ +	struct amdgpu_vm_fault_info	fault_info;  };  struct amdgpu_bo_va_mapping; @@ -544,6 +552,8 @@ int amdgpu_vm_ptes_update(struct amdgpu_vm_update_params *params,  			  uint64_t start, uint64_t end,  			  uint64_t dst, uint64_t flags);  void amdgpu_vm_pt_free_work(struct work_struct *work); +void amdgpu_vm_pt_free_list(struct amdgpu_device *adev, +			    struct amdgpu_vm_update_params *params);  #if defined(CONFIG_DEBUG_FS)  void amdgpu_debugfs_vm_bo_info(struct amdgpu_vm *vm, struct seq_file *m); @@ -609,5 +619,8 @@ void amdgpu_vm_update_fault_cache(struct amdgpu_device *adev,  				  uint64_t addr,  				  uint32_t status,  				  unsigned int vmhub); +void amdgpu_vm_tlb_fence_create(struct amdgpu_device *adev, +				 struct amdgpu_vm *vm, +				 struct dma_fence **fence);  #endif |