diff options
| -rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_flat_memory.c | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_process.c | 9 | 
3 files changed, 11 insertions, 8 deletions
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c index 4f7b275f2f7b..7d4974b83af7 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c @@ -121,13 +121,9 @@ static int kfd_open(struct inode *inode, struct file *filep)  	if (IS_ERR(process))  		return PTR_ERR(process); -	process->is_32bit_user_mode = is_32bit_user_mode; -  	dev_dbg(kfd_device, "process %d opened, compat mode (32 bit) - %d\n",  		process->pasid, process->is_32bit_user_mode); -	kfd_init_apertures(process); -  	return 0;  } diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_flat_memory.c b/drivers/gpu/drm/amd/amdkfd/kfd_flat_memory.c index 66df4da01c29..e64aa99e5e41 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_flat_memory.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_flat_memory.c @@ -299,13 +299,13 @@ int kfd_init_apertures(struct kfd_process *process)  	struct kfd_dev *dev;  	struct kfd_process_device *pdd; -	mutex_lock(&process->mutex); -  	/*Iterating over all devices*/  	while ((dev = kfd_topology_enum_kfd_devices(id)) != NULL &&  		id < NUM_OF_SUPPORTED_GPUS) {  		pdd = kfd_get_process_device_data(dev, process, 1); +		if (!pdd) +			return -1;  		/*  		 * For 64 bit process aperture will be statically reserved in @@ -348,8 +348,6 @@ int kfd_init_apertures(struct kfd_process *process)  		id++;  	} -	mutex_unlock(&process->mutex); -  	return 0;  } diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c index b85eb0b830b4..3c76ef05cbcf 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c @@ -26,6 +26,8 @@  #include <linux/slab.h>  #include <linux/amd-iommu.h>  #include <linux/notifier.h> +#include <linux/compat.h> +  struct mm_struct;  #include "kfd_priv.h" @@ -285,8 +287,15 @@ static struct kfd_process *create_process(const struct task_struct *thread)  	if (err != 0)  		goto err_process_pqm_init; +	/* init process apertures*/ +	process->is_32bit_user_mode = is_compat_task(); +	if (kfd_init_apertures(process) != 0) +		goto err_init_apretures; +  	return process; +err_init_apretures: +	pqm_uninit(&process->pqm);  err_process_pqm_init:  	hash_del_rcu(&process->kfd_processes);  	synchronize_rcu();  | 
