[PATCH v2 2/3] drm/amdgpu: Allow dma_map_sg() coalescing
Robin Murphy
robin.murphy at arm.com
Fri Apr 27 15:54:08 UTC 2018
On 25/04/18 21:44, Sinan Kaya wrote:
> On 4/17/2018 5:13 PM, Sinan Kaya wrote:
>> Tested-by: Sinan Kaya <okaya at codeaurora.org>
>>
>> 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 at 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);
More information about the amd-gfx
mailing list