aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1563-drm-amdgpu-Improve-debug-information-for-kfd-memory-.patch
blob: 0a4214a3d8c6cbbb3a5447749e4befa1b6d71ea1 (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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
From 2319e32ad11ff2b5f126efbb39506ab67ade7515 Mon Sep 17 00:00:00 2001
From: Yong Zhao <yong.zhao@amd.com>
Date: Wed, 23 Nov 2016 17:44:25 -0500
Subject: [PATCH 1563/4131] drm/amdgpu: Improve debug information for kfd
 memory management

Change-Id: Icc557cb53e3ee581a028b3cf585f546626de124e
Signed-off-by: Yong Zhao <yong.zhao@amd.com>

 Conflicts:
	drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c        |   4 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c |  12 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c |  12 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c  | 196 ++++++++++++----------
 4 files changed, 127 insertions(+), 97 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
index f425878..07150a6 100755
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
@@ -20,6 +20,8 @@
  * OTHER DEALINGS IN THE SOFTWARE.
  */
 
+#define pr_fmt(fmt) "kfd2kgd: " fmt
+
 #include "amdgpu_amdkfd.h"
 #include <linux/dma-buf.h>
 #include <drm/drmP.h>
@@ -435,7 +437,7 @@ void get_local_mem_info(struct kgd_dev *kgd,
 	}
 	mem_info->vram_width = adev->mc.vram_width;
 
-	pr_debug("amdgpu: address base: 0x%llx limit 0x%llx public 0x%llx private 0x%llx\n",
+	pr_debug("Address base: 0x%llx limit 0x%llx public 0x%llx private 0x%llx\n",
 			adev->mc.aper_base, aper_limit,
 			mem_info->local_mem_size_public,
 			mem_info->local_mem_size_private);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
index 4896541..cebf03a 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
@@ -20,6 +20,8 @@
  * OTHER DEALINGS IN THE SOFTWARE.
  */
 
+#define pr_fmt(fmt) "kfd2kgd: " fmt
+
 #include <linux/fdtable.h>
 #include <linux/uaccess.h>
 #include <linux/firmware.h>
@@ -356,7 +358,7 @@ static inline uint32_t get_sdma_base_addr(struct cik_sdma_rlc_registers *m)
 
 	retval = m->sdma_engine_id * SDMA1_REGISTER_OFFSET +
 			m->sdma_queue_id * KFD_CIK_SDMA_QUEUE_OFFSET;
-	pr_debug("kfd: sdma base address: 0x%x\n", retval);
+	pr_debug("sdma base address: 0x%x\n", retval);
 
 	return retval;
 }
@@ -622,7 +624,7 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd,
 			break;
 	loop:
 		if (!retry) {
-			pr_err("kfd: CP HQD IQ timer status time out\n");
+			pr_err("CP HQD IQ timer status time out\n");
 			break;
 		}
 		ndelay(100);
@@ -636,7 +638,7 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd,
 		pr_debug("Dequeue request is pending\n");
 
 		if (!retry) {
-			pr_err("kfd: CP HQD dequeue request time out\n");
+			pr_err("CP HQD dequeue request time out\n");
 			break;
 		}
 		ndelay(100);
@@ -653,7 +655,7 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd,
 		if (!(temp & CP_HQD_ACTIVE__ACTIVE_MASK))
 			break;
 		if (time_after(jiffies, end_jiffies)) {
-			pr_err("kfd: cp queue preemption time out\n");
+			pr_err("cp queue preemption time out\n");
 			release_queue(kgd);
 			return -ETIME;
 		}
@@ -912,7 +914,7 @@ static void set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmid,
 	struct amdgpu_device *adev = get_amdgpu_device(kgd);
 	/* TODO: Don't use hardcoded VMIDs */
 	if (vmid < 8 || vmid > 15) {
-		pr_err("amdkfd: trying to set page table base for wrong VMID\n");
+		pr_err("trying to set page table base for wrong VMID\n");
 		return;
 	}
 	WREG32(mmVM_CONTEXT8_PAGE_TABLE_BASE_ADDR + vmid - 8, page_table_base);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
index 60dafce..da6a243 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
@@ -20,6 +20,8 @@
  * OTHER DEALINGS IN THE SOFTWARE.
  */
 
+#define pr_fmt(fmt) "kfd2kgd: " fmt
+
 #include <linux/module.h>
 #include <linux/fdtable.h>
 #include <linux/uaccess.h>
@@ -348,7 +350,7 @@ static inline uint32_t get_sdma_base_addr(struct vi_sdma_mqd *m)
 
 	retval = m->sdma_engine_id * SDMA1_REGISTER_OFFSET +
 		m->sdma_queue_id * KFD_VI_SDMA_QUEUE_OFFSET;
-	pr_debug("kfd: sdma base address: 0x%x\n", retval);
+	pr_debug("sdma base address: 0x%x\n", retval);
 
 	return retval;
 }
@@ -634,7 +636,7 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd,
 			break;
 	loop:
 		if (!retry) {
-			pr_err("kfd: CP HQD IQ timer status time out\n");
+			pr_err("CP HQD IQ timer status time out\n");
 			break;
 		}
 		ndelay(100);
@@ -648,7 +650,7 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd,
 		pr_debug("Dequeue request is pending\n");
 
 		if (!retry) {
-			pr_err("kfd: CP HQD dequeue request time out\n");
+			pr_err("CP HQD dequeue request time out\n");
 			break;
 		}
 		ndelay(100);
@@ -665,7 +667,7 @@ static int kgd_hqd_destroy(struct kgd_dev *kgd,
 		if (!(temp & CP_HQD_ACTIVE__ACTIVE_MASK))
 			break;
 		if (time_after(jiffies, end_jiffies)) {
-			pr_err("kfd: cp queue preemption time out.\n");
+			pr_err("cp queue preemption time out.\n");
 			release_queue(kgd);
 			return -ETIME;
 		}
@@ -918,7 +920,7 @@ static void set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmid,
 	struct amdgpu_device *adev = get_amdgpu_device(kgd);
 	/* TODO: Don't use hardcoded VMIDs */
 	if (vmid < 8 || vmid > 15) {
-		pr_err("amdkfd: trying to set page table base for wrong VMID\n");
+		pr_err("trying to set page table base for wrong VMID\n");
 		return;
 	}
 	WREG32(mmVM_CONTEXT8_PAGE_TABLE_BASE_ADDR + vmid - 8, page_table_base);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
index ec63c82..7c6f8ed 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
@@ -20,6 +20,8 @@
  * OTHER DEALINGS IN THE SOFTWARE.
  */
 
+#define pr_fmt(fmt) "kfd2kgd: " fmt
+
 #include <linux/module.h>
 #include <linux/fdtable.h>
 #include <linux/uaccess.h>
@@ -60,6 +62,17 @@ struct amdgpu_vm_parser {
 	bool            wait;
 };
 
+static const char * const domain_bit_to_string[] = {
+		"CPU",
+		"GTT",
+		"VRAM",
+		"GDS",
+		"GWS",
+		"OA"
+};
+
+#define domain_string(domain) domain_bit_to_string[ffs(domain)-1]
+
 
 static inline struct amdgpu_device *get_amdgpu_device(struct kgd_dev *kgd)
 {
@@ -304,9 +317,10 @@ static int add_bo_to_vm(struct amdgpu_device *adev, struct kgd_mem *mem,
 	struct amdgpu_bo *bo = mem->bo;
 	uint64_t va = mem->va;
 	struct list_head *list_bo_va = &mem->bo_va_list;
+	unsigned long bo_size = bo->tbo.mem.size;
 
 	if (is_aql)
-		va += bo->tbo.mem.size;
+		va += bo_size;
 
 	bo_va_entry = kzalloc(sizeof(*bo_va_entry), GFP_KERNEL);
 	if (!bo_va_entry)
@@ -314,14 +328,14 @@ static int add_bo_to_vm(struct amdgpu_device *adev, struct kgd_mem *mem,
 
 	BUG_ON(va == 0);
 
-	pr_debug("amdkfd: adding bo_va to bo %p and va 0x%llx id 0x%x\n",
-			bo, va, adev->dev->id);
+	pr_debug("\t add VA 0x%llx - 0x%llx to vm %p\n", va,
+			va + bo_size, avm);
 
 	/* Add BO to VM internal data structures*/
 	bo_va_entry->bo_va = amdgpu_vm_bo_add(adev, avm, bo);
 	if (bo_va_entry->bo_va == NULL) {
 		ret = -EINVAL;
-		pr_err("amdkfd: Failed to add BO object to VM. ret == %d\n",
+		pr_err("Failed to add BO object to VM. ret == %d\n",
 				ret);
 		goto err_vmadd;
 	}
@@ -341,8 +355,11 @@ static int add_bo_to_vm(struct amdgpu_device *adev, struct kgd_mem *mem,
 }
 
 static void remove_bo_from_vm(struct amdgpu_device *adev,
-		struct kfd_bo_va_list *entry)
+		struct kfd_bo_va_list *entry, unsigned long size)
 {
+	pr_debug("\t remove VA 0x%llx - 0x%llx in entry %p\n",
+			entry->va,
+			entry->va + size, entry);
 	amdgpu_vm_bo_rmv(adev, entry->bo_va);
 	list_del(&entry->bo_list);
 	kfree(entry);
@@ -410,7 +427,7 @@ static int amdgpu_amdkfd_bo_invalidate(struct amdgpu_bo *bo)
 		amdgpu_ttm_placement_from_domain(bo, AMDGPU_GEM_DOMAIN_CPU);
 		ret = ttm_bo_validate(&bo->tbo, &bo->placement, true, false);
 		if (ret != 0)
-			pr_err("amdgpu: failed to invalidate userptr BO\n");
+			pr_err("Failed to invalidate userptr BO\n");
 	}
 	return ret;
 }
@@ -435,7 +452,7 @@ static int validate_pt_pd_bos(struct amdgpu_vm *vm)
 		ret = amdgpu_amdkfd_bo_validate(bo, AMDGPU_GEM_DOMAIN_VRAM,
 						true);
 		if (ret != 0) {
-			pr_err("amdgpu: failed to validate PTE %d\n", i);
+			pr_err("Failed to validate PTE %d\n", i);
 			break;
 		}
 	}
@@ -443,7 +460,7 @@ static int validate_pt_pd_bos(struct amdgpu_vm *vm)
 	ret = amdgpu_amdkfd_bo_validate(pd, AMDGPU_GEM_DOMAIN_VRAM,
 					true);
 	if (ret != 0) {
-		pr_err("amdgpu: failed to validate PD\n");
+		pr_err("Failed to validate PD\n");
 		return ret;
 	}
 
@@ -579,15 +596,15 @@ static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va,
 	(*mem)->pte_flags = pte_flags;
 
 	alloc_domain = userptr ? AMDGPU_GEM_DOMAIN_CPU : domain;
-	pr_debug("amdkfd: allocating BO on domain %d with size %llu\n",
-				alloc_domain, size);
 
 	ret = amdgpu_amdkfd_reserve_system_mem_limit(adev, size, alloc_domain);
 	if (ret) {
-		pr_err("amdkfd: Insufficient system memory\n");
+		pr_err("Insufficient system memory\n");
 		goto err_bo_create;
 	}
 
+	pr_debug("\t create BO VA 0x%llx size 0x%llx domain %s\n",
+			va, size, domain_string(alloc_domain));
 
 	/* Allocate buffer object. Userptr objects need to start out
 	 * in the CPU domain, get moved to GTT when pinned. */
@@ -595,8 +612,8 @@ static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va,
 				alloc_domain,
 			       flags, sg, NULL, &bo);
 	if (ret != 0) {
-		pr_err("amdkfd: failed to create BO on domain %d. ret %d\n",
-				alloc_domain, ret);
+		pr_err("Failed to create BO on domain %s. ret %d\n",
+				domain_string(alloc_domain), ret);
 		goto err_bo_create;
 	}
 	bo->kfd_bo = *mem;
@@ -605,34 +622,30 @@ static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va,
 	if (domain == AMDGPU_GEM_DOMAIN_VRAM) {
 		ret = amdgpu_bo_reserve(bo, true);
 		if (ret) {
-			dev_err(adev->dev,
-				"(%d) failed to reserve bo for amdkfd\n", ret);
+			pr_err("Failed to reserve bo. ret %d\n",
+					ret);
 			goto err_bo_clear;
 		}
 		ret = amdgpu_amdkfd_gpuvm_clear_bo(adev, vm, bo);
 		amdgpu_bo_unreserve(bo);
 		if (ret) {
-			pr_err("amdkfd: failed to clear VRAM BO object. ret %d\n",
+			pr_err("Failed to clear VRAM BO object. ret %d\n",
 					ret);
 			goto err_bo_clear;
 		}
 	}
 
-	pr_debug("amdkfd: created BO on domain %d with size %llu\n",
-				alloc_domain, size);
-
 	if (userptr) {
 		ret = amdgpu_ttm_tt_set_userptr(bo->tbo.ttm, user_addr, 0);
 		if (ret) {
-			dev_err(adev->dev,
-				"(%d) failed to set userptr\n", ret);
+			pr_err("Failed to set userptr. ret %d\n", ret);
 			goto allocate_mem_set_userptr_failed;
 		}
 
 		ret = amdgpu_mn_register(bo, user_addr);
 		if (ret) {
-			dev_err(adev->dev,
-				"(%d) failed to register MMU notifier\n", ret);
+			pr_err("Failed to register MMU notifier %d\n",
+					ret);
 			goto allocate_mem_set_userptr_failed;
 		}
 	}
@@ -640,21 +653,21 @@ static int __alloc_memory_of_gpu(struct kgd_dev *kgd, uint64_t va,
 	if (kptr) {
 		ret = amdgpu_bo_reserve(bo, true);
 		if (ret) {
-			dev_err(adev->dev, "(%d) failed to reserve bo for amdkfd\n", ret);
+			pr_err("Failed to reserve bo. ret %d\n", ret);
 			goto allocate_mem_reserve_bo_failed;
 		}
 
 		ret = amdgpu_bo_pin(bo, domain,
 					NULL);
 		if (ret) {
-			dev_err(adev->dev, "(%d) failed to pin bo for amdkfd\n", ret);
+			pr_err("Failed to pin bo. ret %d\n", ret);
 			goto allocate_mem_pin_bo_failed;
 		}
 
 		ret = amdgpu_bo_kmap(bo, kptr);
 		if (ret) {
-			dev_err(adev->dev,
-				"(%d) failed to map bo to kernel for amdkfd\n", ret);
+			pr_err("Failed to map bo to kernel. ret %d\n",
+					ret);
 			goto allocate_mem_kmap_bo_failed;
 		}
 		(*mem)->kptr = *kptr;
@@ -750,7 +763,7 @@ static int reserve_bo_and_vm(struct kgd_mem *mem,
 	if (!ret)
 		ctx->reserved = true;
 	else
-		pr_err("amdkfd: Failed to reserve buffers in ttm\n");
+		pr_err("Failed to reserve buffers in ttm\n");
 
 	if (ret) {
 		kfree(ctx->vm_pd);
@@ -840,7 +853,7 @@ static int reserve_bo_and_cond_vms(struct kgd_mem *mem,
 	if (!ret)
 		ctx->reserved = true;
 	else
-		pr_err("amdkfd: Failed to reserve buffers in ttm\n");
+		pr_err("Failed to reserve buffers in ttm.\n");
 
 	if (ret) {
 		kfree(ctx->vm_pd);
@@ -978,14 +991,14 @@ static int update_gpuvm_pte(struct amdgpu_device *adev, struct amdgpu_bo *bo,
 	/* Validate PT / PTs */
 	ret = validate_pt_pd_bos(vm);
 	if (ret != 0) {
-		pr_err("amdkfd: Failed to validate_pt_pd_bos\n");
+		pr_err("validate_pt_pd_bos failed\n");
 		return ret;
 	}
 
 	/* Update the page directory */
 	ret = amdgpu_vm_update_page_directory(adev, vm);
 	if (ret != 0) {
-		pr_err("amdkfd: Failed to amdgpu_vm_update_page_directory\n");
+		pr_err("amdgpu_vm_update_page_directory failed\n");
 		return ret;
 	}
 
@@ -994,7 +1007,7 @@ static int update_gpuvm_pte(struct amdgpu_device *adev, struct amdgpu_bo *bo,
 	/* Update the page tables  */
 	ret = amdgpu_vm_bo_update(adev, bo_va, &bo->tbo.mem);
 	if (ret != 0) {
-		pr_err("amdkfd: Failed to amdgpu_vm_bo_update\n");
+		pr_err("amdgpu_vm_bo_update failed\n");
 		return ret;
 	}
 
@@ -1021,14 +1034,14 @@ static int map_bo_to_gpuvm(struct amdgpu_device *adev, struct amdgpu_bo *bo,
 			entry->va, 0, amdgpu_bo_size(bo),
 			pte_flags);
 	if (ret != 0) {
-		pr_err("amdkfd: Failed to map bo in vm. ret == %d (0x%llx)\n",
-				ret, entry->va);
+		pr_err("Failed to map VA 0x%llx in vm. ret %d\n",
+				entry->va, ret);
 		return ret;
 	}
 
 	ret = update_gpuvm_pte(adev, bo, entry, sync);
 	if (ret != 0) {
-		pr_err("amdkfd: update_gpuvm_pte() failed\n");
+		pr_err("update_gpuvm_pte() failed\n");
 		goto update_gpuvm_pte_failed;
 	}
 
@@ -1072,7 +1085,7 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
 	struct sg_table *sg = NULL;
 
 	if (!(flags & ALLOC_MEM_FLAGS_NONPAGED)) {
-		pr_err("amdgpu: current hw doesn't support paged memory\n");
+		pr_err("current hw doesn't support paged memory\n");
 		return -EINVAL;
 	}
 
@@ -1088,7 +1101,7 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
 	userptr   = (flags & ALLOC_MEM_FLAGS_USERPTR) ? true : false;
 
 	if (userptr && kptr) {
-		pr_err("amdgpu: userptr can't be mapped to kernel\n");
+		pr_err("userptr can't be mapped to kernel\n");
 		return -EINVAL;
 	}
 
@@ -1120,14 +1133,14 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
 	if (offset && !userptr)
 		*offset = 0;
 
-	pr_debug("amdgpu: allocating BO domain %d alloc_flag 0x%llu public %s readonly %s execute %s no substitue %s va 0x%llx\n",
-			domain,
-			alloc_flag,
-			BOOL_TO_STR(public),
-			BOOL_TO_STR(readonly),
-			BOOL_TO_STR(execute),
-			BOOL_TO_STR(no_sub),
-			va);
+	pr_debug("Allocate VA 0x%llx - 0x%llx domain %s aql %s\n",
+			va, va + size, domain_string(domain),
+			BOOL_TO_STR(aql_queue));
+
+	pr_debug("\t alloc_flag 0x%llx public %s readonly %s execute %s no_sub %s\n",
+			alloc_flag, BOOL_TO_STR(public),
+			BOOL_TO_STR(readonly), BOOL_TO_STR(execute),
+			BOOL_TO_STR(no_sub));
 
 	return __alloc_memory_of_gpu(kgd, va, size, vm, mem,
 			temp_offset, kptr, domain,
@@ -1145,6 +1158,7 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
 	int ret;
 	struct amdgpu_bo_list_entry *bo_list_entry;
 	struct amdkfd_vm *master_vm;
+	unsigned long bo_size;
 
 	BUG_ON(kgd == NULL);
 	BUG_ON(mem == NULL);
@@ -1154,11 +1168,13 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
 	master_vm = ((struct amdkfd_vm *)vm)->master;
 	BUG_ON(master_vm == NULL);
 
+	bo_size = mem->bo->tbo.mem.size;
+
 	mutex_lock(&mem->lock);
 
 	if (mem->mapped_to_gpu_memory > 0) {
-		pr_err("BO with size %lu bytes is mapped to GPU. Need to unmap it before release va 0x%llx\n",
-			mem->bo->tbo.mem.size, mem->va);
+		pr_err("BO VA 0x%llx size 0x%lx is already mapped to vm %p.\n",
+				mem->va, bo_size, vm);
 		mutex_unlock(&mem->lock);
 		return -EBUSY;
 	}
@@ -1181,15 +1197,13 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
 	 */
 	amdgpu_amdkfd_remove_eviction_fence(mem->bo, master_vm->eviction_fence,
 					    NULL, NULL);
-	pr_debug("Releasing BO with VA 0x%llx, size %lu bytes\n",
-					mem->va,
-					mem->bo->tbo.mem.size);
+	pr_debug("Release VA 0x%llx - 0x%llx\n", mem->va,
+		mem->va + bo_size * (1 + mem->aql_queue));
 
 	/* Remove from VM internal data structures */
 	list_for_each_entry_safe(entry, tmp, &mem->bo_va_list, bo_list) {
-		pr_debug("\t remove from amdgpu_bo_va %p\n", entry->bo_va);
 		remove_bo_from_vm((struct amdgpu_device *)entry->kgd_dev,
-				entry);
+				entry, bo_size);
 	}
 
 	unreserve_bo_and_vms(&ctx, false);
@@ -1227,6 +1241,7 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
 	struct kfd_bo_va_list *bo_va_entry_aql = NULL;
 	struct amdkfd_vm *kfd_vm = (struct amdkfd_vm *)vm;
 	int num_to_quiesce = 0;
+	unsigned long bo_size;
 
 	BUG_ON(kgd == NULL);
 	BUG_ON(mem == NULL);
@@ -1240,17 +1255,18 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
 	BUG_ON(bo == NULL);
 
 	domain = mem->domain;
+	bo_size = bo->tbo.mem.size;
 
-	pr_debug("amdgpu: try to map VA 0x%llx domain %d\n",
-			mem->va, domain);
+	pr_debug("Map VA 0x%llx - 0x%llx to vm %p domain %s\n",
+			mem->va,
+			mem->va + bo_size * (1 + mem->aql_queue),
+			vm, domain_string(domain));
 
 	ret = reserve_bo_and_vm(mem, vm, &ctx);
 	if (unlikely(ret != 0))
 		goto bo_reserve_failed;
 
 	if (check_if_add_bo_to_vm((struct amdgpu_vm *)vm, mem)) {
-		pr_debug("amdkfd: add new BO_VA to list 0x%llx\n",
-				mem->va);
 		ret = add_bo_to_vm(adev, mem, (struct amdgpu_vm *)vm, false,
 				&bo_va_entry);
 		if (ret != 0)
@@ -1265,14 +1281,16 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
 
 	if (!mem->evicted) {
 		ret = update_user_pages(mem, current->mm, &ctx);
-		if (ret != 0)
+		if (ret != 0) {
+			pr_err("update_user_pages failed\n");
 			goto update_user_pages_failed;
+		}
 	}
 
 	if (amdgpu_ttm_tt_get_usermm(bo->tbo.ttm)) {
 		ret = amdgpu_amdkfd_bo_validate(bo, domain, true);
 		if (ret) {
-			pr_debug("amdkfd: userptr: Validate failed\n");
+			pr_debug("userptr: Validate failed\n");
 			goto map_bo_to_gpuvm_failed;
 		}
 	} else if (mem->mapped_to_gpu_memory == 0) {
@@ -1282,7 +1300,7 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
 		 */
 		ret = amdgpu_amdkfd_bo_validate(bo, domain, true);
 		if (ret) {
-			pr_debug("amdkfd: Validate failed\n");
+			pr_debug("Validate failed\n");
 			goto map_bo_to_gpuvm_failed;
 		}
 	}
@@ -1301,18 +1319,19 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
 				continue;
 			}
 
-			pr_debug("amdkfd: Trying to map VA 0x%llx to vm %p\n",
-					mem->va, vm);
+			pr_debug("\t map VA 0x%llx - 0x%llx in entry %p\n",
+					entry->va, entry->va + bo_size,
+					entry);
 
 			ret = map_bo_to_gpuvm(adev, bo, entry, mem->pte_flags,
 					&ctx.sync);
 			if (ret != 0) {
-				pr_err("amdkfd: Failed to map radeon bo to gpuvm\n");
+				pr_err("Failed to map radeon bo to gpuvm\n");
 				goto map_bo_to_gpuvm_failed;
 			}
 			entry->is_mapped = true;
 			mem->mapped_to_gpu_memory++;
-				pr_debug("amdgpu: INC mapping count %d\n",
+			pr_debug("\t INC mapping count %d\n",
 					mem->mapped_to_gpu_memory);
 		}
 	}
@@ -1341,10 +1360,10 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
 map_bo_to_gpuvm_failed:
 update_user_pages_failed:
 	if (bo_va_entry_aql)
-		remove_bo_from_vm(adev, bo_va_entry_aql);
+		remove_bo_from_vm(adev, bo_va_entry_aql, bo_size);
 add_bo_to_vm_failed_aql:
 	if (bo_va_entry)
-		remove_bo_from_vm(adev, bo_va_entry);
+		remove_bo_from_vm(adev, bo_va_entry, bo_size);
 add_bo_to_vm_failed:
 	unreserve_bo_and_vms(&ctx, false);
 bo_reserve_failed:
@@ -1385,7 +1404,7 @@ int amdgpu_amdkfd_gpuvm_create_process_vm(struct kgd_dev *kgd, void **vm,
 	/* Initialize the VM context, allocate the page directory and zero it */
 	ret = amdgpu_vm_init(adev, &new_vm->base);
 	if (ret != 0) {
-		pr_err("amdgpu: failed init vm ret %d\n", ret);
+		pr_err("Failed init vm ret %d\n", ret);
 		/* Undo everything related to the new VM context */
 		goto vm_init_fail;
 	}
@@ -1411,8 +1430,7 @@ int amdgpu_amdkfd_gpuvm_create_process_vm(struct kgd_dev *kgd, void **vm,
 	new_vm->master->n_vms++;
 	*vm = (void *) new_vm;
 
-	pr_debug("amdgpu: created process vm with address 0x%llx\n",
-			get_vm_pd_gpu_offset(&new_vm->base));
+	pr_debug("Created process vm %p\n", *vm);
 
 	return ret;
 
@@ -1434,7 +1452,7 @@ void amdgpu_amdkfd_gpuvm_destroy_process_vm(struct kgd_dev *kgd, void *vm)
 	BUG_ON(kgd == NULL);
 	BUG_ON(vm == NULL);
 
-	pr_debug("Destroying process vm with address %p\n", vm);
+	pr_debug("Destroying process vm %p\n", vm);
 	/* Release eviction fence from PD */
 	pd = avm->page_directory;
 	amdgpu_bo_reserve(pd, false);
@@ -1493,6 +1511,7 @@ int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
 	struct bo_vm_reservation_context ctx;
 	struct amdkfd_vm *master_vm;
 	int num_to_resume = 0;
+	unsigned long bo_size;
 
 	BUG_ON(kgd == NULL);
 	BUG_ON(mem == NULL);
@@ -1500,6 +1519,8 @@ int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
 	adev = (struct amdgpu_device *) kgd;
 	master_vm = ((struct amdkfd_vm *)vm)->master;
 
+	bo_size = mem->bo->tbo.mem.size;
+
 	mutex_lock(&mem->lock);
 
 	/*
@@ -1511,8 +1532,8 @@ int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
 	}
 
 	if (mem->mapped_to_gpu_memory == 0) {
-		pr_debug("BO size %lu bytes at va 0x%llx is not mapped\n",
-			 mem->bo->tbo.mem.size, mem->va);
+		pr_debug("BO VA 0x%llx size 0x%lx is not mapped to vm %p\n",
+				mem->va, bo_size, vm);
 		ret = -EINVAL;
 		goto out;
 	}
@@ -1522,6 +1543,11 @@ int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
 	if (unlikely(ret != 0))
 		goto out;
 
+	pr_debug("Unmap VA 0x%llx - 0x%llx from vm %p\n",
+		mem->va,
+		mem->va + bo_size * (1 + mem->aql_queue),
+		vm);
+
 	list_for_each_entry(entry, &mem->bo_va_list, bo_list) {
 		if (entry->bo_va->vm == vm && entry->is_mapped) {
 			if (mem->evicted) {
@@ -1535,22 +1561,23 @@ int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
 				continue;
 			}
 
-			pr_debug("unmapping BO with VA 0x%llx, size %lu bytes from GPU memory\n",
-				mem->va,
-				mem->bo->tbo.mem.size);
+			pr_debug("\t unmap VA 0x%llx - 0x%llx from entry %p\n",
+					entry->va,
+					entry->va + bo_size,
+					entry);
 
 			ret = unmap_bo_from_gpuvm(adev, mem->bo,
 						entry, &ctx.sync);
 			if (ret == 0) {
 				entry->is_mapped = false;
 			} else {
-				pr_err("amdgpu: failed unmap va 0x%llx\n",
+				pr_err("failed to unmap VA 0x%llx\n",
 						mem->va);
 				goto unreserve_out;
 			}
 
 			mem->mapped_to_gpu_memory--;
-			pr_debug("amdgpu: DEC mapping count %d\n",
+			pr_debug("\t DEC mapping count %d\n",
 					mem->mapped_to_gpu_memory);
 		}
 	}
@@ -1564,10 +1591,8 @@ int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
 						    NULL, NULL);
 
 	if (mapped_before == mem->mapped_to_gpu_memory) {
-		pr_debug("BO size %lu bytes at va 0x%llx is not mapped on GPU %x:%x.%x\n",
-			 mem->bo->tbo.mem.size, mem->va,
-			 adev->pdev->bus->number, PCI_SLOT(adev->pdev->devfn),
-			 PCI_FUNC(adev->pdev->devfn));
+		pr_debug("BO VA 0x%llx size 0x%lx is not mapped to vm %p\n",
+			mem->va, bo_size, vm);
 		ret = -EINVAL;
 	}
 
@@ -1615,7 +1640,7 @@ int amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(struct kgd_dev *kgd,
 	/* map the buffer */
 	ret = amdgpu_bo_reserve(bo, true);
 	if (ret) {
-		dev_err(adev->dev, "(%d) failed to reserve bo for amdkfd\n", ret);
+		pr_err("Failed to reserve bo. ret %d\n", ret);
 		mutex_unlock(&mem->lock);
 		return ret;
 	}
@@ -1623,7 +1648,7 @@ int amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(struct kgd_dev *kgd,
 	ret = amdgpu_bo_pin(bo, AMDGPU_GEM_DOMAIN_GTT,
 			NULL);
 	if (ret) {
-		dev_err(adev->dev, "(%d) failed to pin bo for amdkfd\n", ret);
+		pr_err("Failed to pin bo. ret %d\n", ret);
 		amdgpu_bo_unreserve(bo);
 		mutex_unlock(&mem->lock);
 		return ret;
@@ -1631,8 +1656,7 @@ int amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(struct kgd_dev *kgd,
 
 	ret = amdgpu_bo_kmap(bo, kptr);
 	if (ret) {
-		dev_err(adev->dev,
-			"(%d) failed to map bo to kernel for amdkfd\n", ret);
+		pr_err("Failed to map bo to kernel. ret %d\n", ret);
 		amdgpu_bo_unpin(bo);
 		amdgpu_bo_unreserve(bo);
 		mutex_unlock(&mem->lock);
@@ -1893,7 +1917,7 @@ int amdgpu_amdkfd_gpuvm_evict_mem(struct kgd_mem *mem, struct mm_struct *mm)
 
 		r = kgd2kfd->quiesce_mm(adev->kfd, mm);
 		if (r != 0) {
-			pr_err("failed to quiesce KFD\n");
+			pr_err("Failed to quiesce KFD\n");
 			goto fail;
 		}
 
@@ -1915,7 +1939,7 @@ int amdgpu_amdkfd_gpuvm_evict_mem(struct kgd_mem *mem, struct mm_struct *mm)
 		r = unmap_bo_from_gpuvm(adev, mem->bo,
 					entry, &ctx.sync);
 		if (r != 0) {
-			pr_err("failed unmap va 0x%llx\n",
+			pr_err("Failed unmap VA 0x%llx\n",
 			       mem->va);
 			unreserve_bo_and_vms(&ctx, true);
 			goto fail;
-- 
2.7.4