Skip to content

Commit a6691e4

Browse files
xiaogang-chen-amdSasha Levin
authored andcommitted
drm/amdkfd: Fix pasid value leak
[ Upstream commit 10e0894 ] Curret kfd does not allocate pasid values, instead uses pasid value for each vm from graphic driver. So should not prevent graphic driver from releasing pasid values since the values are allocated by graphic driver, not kfd driver anymore. This patch does not stop graphic driver release pasid values. Fixes: 8544374 ("drm/amdkfd: Have kfd driver use same PASID values from graphic driver") Signed-off-by: Xiaogang Chen <[email protected]> Reviewed-by: Felix Kuehling <[email protected]> Signed-off-by: Alex Deucher <[email protected]> Signed-off-by: Sasha Levin <[email protected]>
1 parent 9fdd540 commit a6691e4

File tree

5 files changed

+1
-42
lines changed

5 files changed

+1
-42
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,8 +303,6 @@ int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct amdgpu_device *adev,
303303
struct amdgpu_vm *avm,
304304
void **process_info,
305305
struct dma_fence **ef);
306-
void amdgpu_amdkfd_gpuvm_release_process_vm(struct amdgpu_device *adev,
307-
void *drm_priv);
308306
uint64_t amdgpu_amdkfd_gpuvm_get_process_page_dir(void *drm_priv);
309307
size_t amdgpu_amdkfd_get_available_memory(struct amdgpu_device *adev,
310308
uint8_t xcp_id);

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1578,27 +1578,6 @@ void amdgpu_amdkfd_gpuvm_destroy_cb(struct amdgpu_device *adev,
15781578
}
15791579
}
15801580

1581-
void amdgpu_amdkfd_gpuvm_release_process_vm(struct amdgpu_device *adev,
1582-
void *drm_priv)
1583-
{
1584-
struct amdgpu_vm *avm;
1585-
1586-
if (WARN_ON(!adev || !drm_priv))
1587-
return;
1588-
1589-
avm = drm_priv_to_vm(drm_priv);
1590-
1591-
pr_debug("Releasing process vm %p\n", avm);
1592-
1593-
/* The original pasid of amdgpu vm has already been
1594-
* released during making a amdgpu vm to a compute vm
1595-
* The current pasid is managed by kfd and will be
1596-
* released on kfd process destroy. Set amdgpu pasid
1597-
* to 0 to avoid duplicate release.
1598-
*/
1599-
amdgpu_vm_release_compute(adev, avm);
1600-
}
1601-
16021581
uint64_t amdgpu_amdkfd_gpuvm_get_process_page_dir(void *drm_priv)
16031582
{
16041583
struct amdgpu_vm *avm = drm_priv_to_vm(drm_priv);

drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2687,20 +2687,6 @@ int amdgpu_vm_make_compute(struct amdgpu_device *adev, struct amdgpu_vm *vm)
26872687
return r;
26882688
}
26892689

2690-
/**
2691-
* amdgpu_vm_release_compute - release a compute vm
2692-
* @adev: amdgpu_device pointer
2693-
* @vm: a vm turned into compute vm by calling amdgpu_vm_make_compute
2694-
*
2695-
* This is a correspondant of amdgpu_vm_make_compute. It decouples compute
2696-
* pasid from vm. Compute should stop use of vm after this call.
2697-
*/
2698-
void amdgpu_vm_release_compute(struct amdgpu_device *adev, struct amdgpu_vm *vm)
2699-
{
2700-
amdgpu_vm_set_pasid(adev, vm, 0);
2701-
vm->is_compute_context = false;
2702-
}
2703-
27042690
static int amdgpu_vm_stats_is_zero(struct amdgpu_vm *vm)
27052691
{
27062692
for (int i = 0; i < __AMDGPU_PL_NUM; ++i) {

drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,6 @@ int amdgpu_vm_set_pasid(struct amdgpu_device *adev, struct amdgpu_vm *vm,
489489
long amdgpu_vm_wait_idle(struct amdgpu_vm *vm, long timeout);
490490
int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm, int32_t xcp_id);
491491
int amdgpu_vm_make_compute(struct amdgpu_device *adev, struct amdgpu_vm *vm);
492-
void amdgpu_vm_release_compute(struct amdgpu_device *adev, struct amdgpu_vm *vm);
493492
void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm);
494493
int amdgpu_vm_lock_pd(struct amdgpu_vm *vm, struct drm_exec *exec,
495494
unsigned int num_fences);

drivers/gpu/drm/amd/amdkfd/kfd_process.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1059,11 +1059,8 @@ static void kfd_process_destroy_pdds(struct kfd_process *p)
10591059
kfd_process_device_destroy_cwsr_dgpu(pdd);
10601060
kfd_process_device_destroy_ib_mem(pdd);
10611061

1062-
if (pdd->drm_file) {
1063-
amdgpu_amdkfd_gpuvm_release_process_vm(
1064-
pdd->dev->adev, pdd->drm_priv);
1062+
if (pdd->drm_file)
10651063
fput(pdd->drm_file);
1066-
}
10671064

10681065
if (pdd->qpd.cwsr_kaddr && !pdd->qpd.cwsr_base)
10691066
free_pages((unsigned long)pdd->qpd.cwsr_kaddr,

0 commit comments

Comments
 (0)