diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 16 | 
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h index 13feb313e9b3..ffe149aafc39 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h @@ -27,6 +27,7 @@  #include <linux/types.h>  #include <linux/mm.h> +#include <linux/kthread.h>  #include <linux/workqueue.h>  #include <kgd_kfd_interface.h>  #include <drm/ttm/ttm_execbuf_util.h> @@ -65,6 +66,7 @@ struct kgd_mem {  	struct amdgpu_sync sync;  	bool aql_queue; +	bool is_imported;  };  /* KFD Memory Eviction */ @@ -148,6 +150,9 @@ int amdgpu_amdkfd_post_reset(struct amdgpu_device *adev);  void amdgpu_amdkfd_gpu_reset(struct kgd_dev *kgd); +int amdgpu_queue_mask_bit_to_set_resource_bit(struct amdgpu_device *adev, +					int queue_bit); +  /* Shared API */  int amdgpu_amdkfd_alloc_gtt_mem(struct kgd_dev *kgd, size_t size,  				void **mem_obj, uint64_t *gpu_addr, @@ -175,13 +180,14 @@ uint64_t amdgpu_amdkfd_get_hive_id(struct kgd_dev *kgd);  uint64_t amdgpu_amdkfd_get_unique_id(struct kgd_dev *kgd);  uint64_t amdgpu_amdkfd_get_mmio_remap_phys_addr(struct kgd_dev *kgd);  uint32_t amdgpu_amdkfd_get_num_gws(struct kgd_dev *kgd); +uint32_t amdgpu_amdkfd_get_asic_rev_id(struct kgd_dev *kgd);  uint8_t amdgpu_amdkfd_get_xgmi_hops_count(struct kgd_dev *dst, struct kgd_dev *src);  /* Read user wptr from a specified user address space with page fault   * disabled. The memory must be pinned and mapped to the hardware when   * this is called in hqd_load functions, so it should never fault in   * the first place. This resolves a circular lock dependency involving - * four locks, including the DQM lock and mmap_sem. + * four locks, including the DQM lock and mmap_lock.   */  #define read_user_wptr(mmptr, wptr, dst)				\  	({								\ @@ -190,10 +196,10 @@ uint8_t amdgpu_amdkfd_get_xgmi_hops_count(struct kgd_dev *dst, struct kgd_dev *s  			pagefault_disable();				\  			if ((mmptr) == current->mm) {			\  				valid = !get_user((dst), (wptr));	\ -			} else if (current->mm == NULL) {		\ -				use_mm(mmptr);				\ +			} else if (current->flags & PF_KTHREAD) {	\ +				kthread_use_mm(mmptr);			\  				valid = !get_user((dst), (wptr));	\ -				unuse_mm(mmptr);			\ +				kthread_unuse_mm(mmptr);		\  			}						\  			pagefault_enable();				\  		}							\ @@ -218,7 +224,7 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(  		void *vm, struct kgd_mem **mem,  		uint64_t *offset, uint32_t flags);  int amdgpu_amdkfd_gpuvm_free_memory_of_gpu( -		struct kgd_dev *kgd, struct kgd_mem *mem); +		struct kgd_dev *kgd, struct kgd_mem *mem, uint64_t *size);  int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(  		struct kgd_dev *kgd, struct kgd_mem *mem, void *vm);  int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(  |