diff options
author | Jonathan Marek <jonathan@marek.ca> | 2022-06-13 18:10:19 -0400 |
---|---|---|
committer | Rob Clark <robdclark@chromium.org> | 2022-06-14 11:54:38 -0700 |
commit | 62b5e322fb6cc5a5a91fdeba0e4e57e75d9f4387 (patch) | |
tree | b962519e5e6d0ce2e97ec9000ec7bc8e8f16f400 /drivers | |
parent | 49e477610087a02c3604061b8f3ee3a25a493987 (diff) | |
download | linux-stable-62b5e322fb6cc5a5a91fdeba0e4e57e75d9f4387.tar.gz linux-stable-62b5e322fb6cc5a5a91fdeba0e4e57e75d9f4387.tar.bz2 linux-stable-62b5e322fb6cc5a5a91fdeba0e4e57e75d9f4387.zip |
drm/msm: use for_each_sgtable_sg to iterate over scatterlist
The dma_map_sgtable() call (used to invalidate cache) overwrites sgt->nents
with 1, so msm_iommu_pagetable_map maps only the first physical segment.
To fix this problem use for_each_sgtable_sg(), which uses orig_nents.
Fixes: b145c6e65eb0 ("drm/msm: Add support to create a local pagetable")
Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Link: https://lore.kernel.org/r/20220613221019.11399-1-jonathan@marek.ca
Signed-off-by: Rob Clark <robdclark@chromium.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/msm/msm_iommu.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/gpu/drm/msm/msm_iommu.c b/drivers/gpu/drm/msm/msm_iommu.c index bcaddbba564d..a54ed354578b 100644 --- a/drivers/gpu/drm/msm/msm_iommu.c +++ b/drivers/gpu/drm/msm/msm_iommu.c @@ -58,7 +58,7 @@ static int msm_iommu_pagetable_map(struct msm_mmu *mmu, u64 iova, u64 addr = iova; unsigned int i; - for_each_sg(sgt->sgl, sg, sgt->nents, i) { + for_each_sgtable_sg(sgt, sg, i) { size_t size = sg->length; phys_addr_t phys = sg_phys(sg); |