aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/1734-amd-amdkfd-follow-up-change-for-signal-handling.patch
blob: d8115919851319e6acec7d3799f9b6c7ea39b259 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
From 2da3a382972793451d3b4486c4cee7e35960c116 Mon Sep 17 00:00:00 2001
From: Lan Xiao <Lan.Xiao@amd.com>
Date: Thu, 6 Jul 2017 15:57:27 -0400
Subject: [PATCH 1734/4131] amd/amdkfd: follow-up change for signal handling

1. Unreserve BOs even if the wait fails (e.g. interrupted system call).
When the system call is restarted, it will reserve the BO again

2. Create mem->sync object when importing a dmabuf

Change-Id: Iceb68ccec800a6fac062f8b41831f4868235f49e
Signed-off-by: Lan Xiao <Lan.Xiao@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
index 475e7fb..01414bc 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
@@ -874,11 +874,8 @@ static int unreserve_bo_and_vms(struct bo_vm_reservation_context *ctx,
 {
 	int ret = 0;
 
-	if (wait) {
+	if (wait)
 		ret = amdgpu_sync_wait(ctx->sync, intr);
-		if (ret)
-			return ret;
-	}
 
 	if (ctx->reserved)
 		ttm_eu_backoff_reservation(&ctx->ticket, &ctx->list);
@@ -1228,7 +1225,7 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
 				entry, bo_size);
 	}
 
-	ret = unreserve_bo_and_vms(&ctx, false, true);
+	ret = unreserve_bo_and_vms(&ctx, false, false);
 
 	/* Free the sync object */
 	amdgpu_sync_free(&mem->sync);
@@ -1357,7 +1354,7 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
 		amdgpu_bo_fence(bo,
 				&kfd_vm->process_info->eviction_fence->base,
 				true);
-	ret = unreserve_bo_and_vms(&ctx, false, true);
+	ret = unreserve_bo_and_vms(&ctx, false, false);
 
 	mutex_unlock(&mem->process_info->lock);
 	mutex_unlock(&mem->lock);
@@ -1866,6 +1863,7 @@ int amdgpu_amdkfd_gpuvm_import_dmabuf(struct kgd_dev *kgd,
 	(*mem)->mapped_to_gpu_memory = 0;
 	(*mem)->process_info = kfd_vm->process_info;
 	add_kgd_mem_to_kfd_bo_list(*mem, kfd_vm->process_info, false);
+	amdgpu_sync_create(&(*mem)->sync);
 
 	return 0;
 }
-- 
2.7.4