diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 21 | 
1 files changed, 12 insertions, 9 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h index d9e57290dc71..d97e28b4bdc4 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h @@ -65,7 +65,8 @@ struct amdgpu_bo_list_entry;  #define AMDGPU_PTE_FRAG(x)	((x & 0x1fULL) << 7) -#define AMDGPU_PTE_PRT		(1ULL << 63) +/* TILED for VEGA10, reserved for older ASICs  */ +#define AMDGPU_PTE_PRT		(1ULL << 51)  /* VEGA10 only */  #define AMDGPU_PTE_MTYPE(a)    ((uint64_t)a << 57) @@ -114,9 +115,6 @@ struct amdgpu_vm {  	struct dma_fence	*last_dir_update;  	uint64_t		last_eviction_counter; -	/* for id and flush management per ring */ -	struct amdgpu_vm_id	*ids[AMDGPU_MAX_RINGS]; -  	/* protecting freed */  	spinlock_t		freed_lock; @@ -149,12 +147,16 @@ struct amdgpu_vm_id {  	uint32_t		oa_size;  }; +struct amdgpu_vm_id_manager { +	struct mutex		lock; +	unsigned		num_ids; +	struct list_head	ids_lru; +	struct amdgpu_vm_id	ids[AMDGPU_NUM_VM]; +}; +  struct amdgpu_vm_manager {  	/* Handling of VMIDs */ -	struct mutex				lock; -	unsigned				num_ids; -	struct list_head			ids_lru; -	struct amdgpu_vm_id			ids[AMDGPU_NUM_VM]; +	struct amdgpu_vm_id_manager		id_mgr[AMDGPU_MAX_VMHUBS];  	/* Handling of VM fences */  	u64					fence_context; @@ -200,7 +202,8 @@ int amdgpu_vm_grab_id(struct amdgpu_vm *vm, struct amdgpu_ring *ring,  		      struct amdgpu_sync *sync, struct dma_fence *fence,  		      struct amdgpu_job *job);  int amdgpu_vm_flush(struct amdgpu_ring *ring, struct amdgpu_job *job); -void amdgpu_vm_reset_id(struct amdgpu_device *adev, unsigned vm_id); +void amdgpu_vm_reset_id(struct amdgpu_device *adev, unsigned vmhub, +			unsigned vmid);  int amdgpu_vm_update_directories(struct amdgpu_device *adev,  				 struct amdgpu_vm *vm);  int amdgpu_vm_clear_freed(struct amdgpu_device *adev, |