Hi Alex,
On 22.09.2020 01:15, Alex Goins wrote:
Tested-by: Alex Goins agoins@nvidia.com
This change fixes a regression with drm_prime_sg_to_page_addr_arrays() and AMDGPU in v5.9.
Thanks for testing!
Commit 39913934 similarly revamped AMDGPU to use sgtable helper functions. When it changed from dma_map_sg_attrs() to dma_map_sgtable(), as a side effect it started correctly updating sgt->nents to the return value of dma_map_sg_attrs(). However, drm_prime_sg_to_page_addr_arrays() incorrectly uses sgt->nents to iterate over pages, rather than sgt->orig_nents, resulting in it now returning the incorrect number of pages on AMDGPU.
I had written a patch that changes drm_prime_sg_to_page_addr_arrays() to use for_each_sgtable_sg() instead of for_each_sg(), iterating using sgt->orig_nents:
for_each_sg(sgt->sgl, sg, sgt->nents, count) {
for_each_sgtable_sg(sgt, sg, count) {
This patch takes it further, but still has the effect of fixing the number of pages that drm_prime_sg_to_page_addr_arrays() returns. Something like this should be included in v5.9 to prevent a regression with AMDGPU.
Probably the easiest way to handle a fix for v5.9 would be to simply merge the latest version of this patch also to v5.9-rcX: https://lore.kernel.org/dri-devel/20200904131711.12950-3-m.szyprowski@samsun...
This way we would get it fixed and avoid possible conflict in the -next. Do you have any AMDGPU fixes for v5.9 in the queue? Maybe you can add that patch to the queue? Dave: would it be okay that way?
Best regards
On Tue, Sep 22, 2020 at 2:28 AM Marek Szyprowski m.szyprowski@samsung.com wrote:
Hi Alex,
On 22.09.2020 01:15, Alex Goins wrote:
Tested-by: Alex Goins agoins@nvidia.com
This change fixes a regression with drm_prime_sg_to_page_addr_arrays() and AMDGPU in v5.9.
Thanks for testing!
Commit 39913934 similarly revamped AMDGPU to use sgtable helper functions. When it changed from dma_map_sg_attrs() to dma_map_sgtable(), as a side effect it started correctly updating sgt->nents to the return value of dma_map_sg_attrs(). However, drm_prime_sg_to_page_addr_arrays() incorrectly uses sgt->nents to iterate over pages, rather than sgt->orig_nents, resulting in it now returning the incorrect number of pages on AMDGPU.
I had written a patch that changes drm_prime_sg_to_page_addr_arrays() to use for_each_sgtable_sg() instead of for_each_sg(), iterating using sgt->orig_nents:
for_each_sg(sgt->sgl, sg, sgt->nents, count) {
for_each_sgtable_sg(sgt, sg, count) {
This patch takes it further, but still has the effect of fixing the number of pages that drm_prime_sg_to_page_addr_arrays() returns. Something like this should be included in v5.9 to prevent a regression with AMDGPU.
Probably the easiest way to handle a fix for v5.9 would be to simply merge the latest version of this patch also to v5.9-rcX: https://lore.kernel.org/dri-devel/20200904131711.12950-3-m.szyprowski@samsun...
This way we would get it fixed and avoid possible conflict in the -next. Do you have any AMDGPU fixes for v5.9 in the queue? Maybe you can add that patch to the queue? Dave: would it be okay that way?
I think this should go into drm-misc for 5.9 since it's an update to drm_prime.c. Is that patch ready to merge? Acked-by: Alex Deucher alexander.deucher@amd.com
Alex
Best regards
Marek Szyprowski, PhD Samsung R&D Institute Poland
Linaro-mm-sig mailing list Linaro-mm-sig@lists.linaro.org https://lists.linaro.org/mailman/listinfo/linaro-mm-sig
Hi All,
On 25.09.2020 23:23, Alex Deucher wrote:
On Tue, Sep 22, 2020 at 2:28 AM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 22.09.2020 01:15, Alex Goins wrote:
Tested-by: Alex Goins agoins@nvidia.com
This change fixes a regression with drm_prime_sg_to_page_addr_arrays() and AMDGPU in v5.9.
Thanks for testing!
Commit 39913934 similarly revamped AMDGPU to use sgtable helper functions. When it changed from dma_map_sg_attrs() to dma_map_sgtable(), as a side effect it started correctly updating sgt->nents to the return value of dma_map_sg_attrs(). However, drm_prime_sg_to_page_addr_arrays() incorrectly uses sgt->nents to iterate over pages, rather than sgt->orig_nents, resulting in it now returning the incorrect number of pages on AMDGPU.
I had written a patch that changes drm_prime_sg_to_page_addr_arrays() to use for_each_sgtable_sg() instead of for_each_sg(), iterating using sgt->orig_nents:
for_each_sg(sgt->sgl, sg, sgt->nents, count) {
for_each_sgtable_sg(sgt, sg, count) {
This patch takes it further, but still has the effect of fixing the number of pages that drm_prime_sg_to_page_addr_arrays() returns. Something like this should be included in v5.9 to prevent a regression with AMDGPU.
Probably the easiest way to handle a fix for v5.9 would be to simply merge the latest version of this patch also to v5.9-rcX: https://lore.kernel.org/dri-devel/20200904131711.12950-3-m.szyprowski@samsun...
This way we would get it fixed and avoid possible conflict in the -next. Do you have any AMDGPU fixes for v5.9 in the queue? Maybe you can add that patch to the queue? Dave: would it be okay that way?
I think this should go into drm-misc for 5.9 since it's an update to drm_prime.c. Is that patch ready to merge? Acked-by: Alex Deucher alexander.deucher@amd.com
Maarten, Maxime or Thomas: could you take this one:
https://lore.kernel.org/dri-devel/20200904131711.12950-3-m.szyprowski@samsun...
also to drm-misc-fixes for v5.9-rc?
Best regards
linaro-mm-sig@lists.linaro.org