Re: [PATCH v2 2/3] drm/amdgpu: Allow dma_map_sg() coalescing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 25/04/18 21:44, Sinan Kaya wrote:
On 4/17/2018 5:13 PM, Sinan Kaya wrote:
Tested-by: Sinan Kaya <okaya@xxxxxxxxxxxxxx>

using QDF2400 and XFX Vega64 GPU for the first two patches.

./builddir/tests/amdgpu/amdgpu_test -s 1

Suite: Basic Tests
   Test: Userptr Test ...passed

Userptr Test fails without this patch.


I'm taking this back. I observed a crash with the HSA applications:

FWIW, was this working before, or is this somewhere new that we're only reaching now that pin_userpages can succeed?

ubuntu@ubuntu:~/amdgpu$_./vectoradd_hip.exe
[  834.002206] create_process:620
[  837.413021] Unable to handle kernel NULL pointer dereference at virtual address 00000018

£5 says that's sg_dma_len(NULL), which implies either that something's gone horribly wrong with the scatterlist DMA mapping such that the lengths don't match, or much more likely that ttm.dma_address is NULL and I've missed the tiny subtlety below. Does that fix matters?

Robin.


----->8-----
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
index b8ca06ea7d80..6a31229e4611 100644
--- a/drivers/gpu/drm/drm_prime.c
+++ b/drivers/gpu/drm/drm_prime.c
@@ -961,7 +961,7 @@ int drm_prime_sg_to_page_addr_arrays(struct sg_table *sgt, struct page **pages,
 			index++;
 		}

-		if (dma_len == 0) {
+		if (addrs && dma_len == 0) {
 			dma_sg = sg_next(dma_sg);
 			dma_len = sg_dma_len(dma_sg);
 			addr = sg_dma_address(dma_sg);
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux