projects
/
linux-block.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
2e7b801
)
drm/msm: stop abusing dma_map/unmap for cache
author
Rob Clark
<robdclark@chromium.org>
Sun, 30 Jun 2019 12:47:22 +0000
(
05:47
-0700)
committer
Sean Paul
<seanpaul@chromium.org>
Mon, 22 Jul 2019 18:39:26 +0000
(14:39 -0400)
Recently splats like this started showing up:
WARNING: CPU: 4 PID: 251 at drivers/iommu/dma-iommu.c:451 __iommu_dma_unmap+0xb8/0xc0
Modules linked in: ath10k_snoc ath10k_core fuse msm ath mac80211 uvcvideo cfg80211 videobuf2_vmalloc videobuf2_memops vide
CPU: 4 PID: 251 Comm: kworker/u16:4 Tainted: G W 5.2.0-rc5-next-
20190619
+ #2317
Hardware name: LENOVO 81JL/LNVNB161216, BIOS 9UCN23WW(V1.06) 10/25/2018
Workqueue: msm msm_gem_free_work [msm]
pstate:
80c00005
(Nzcv daif +PAN +UAO)
pc : __iommu_dma_unmap+0xb8/0xc0
lr : __iommu_dma_unmap+0x54/0xc0
sp :
ffff0000119abce0
x29:
ffff0000119abce0
x28:
0000000000000000
x27:
ffff8001f9946648
x26:
ffff8001ec271068
x25:
0000000000000000
x24:
ffff8001ea3580a8
x23:
ffff8001f95ba010
x22:
ffff80018e83ba88
x21:
ffff8001e548f000
x20:
fffffffffffff000
x19:
0000000000001000
x18:
00000000c00001fe
x17:
0000000000000000
x16:
0000000000000000
x15:
ffff000015b70068
x14:
0000000000000005
x13:
0003142cc1be1768
x12:
0000000000000001
x11:
ffff8001f6de9100
x10:
0000000000000009
x9 :
ffff000015b78000
x8 :
0000000000000000
x7 :
0000000000000001
x6 :
fffffffffffff000
x5 :
0000000000000fff
x4 :
ffff00001065dbc8
x3 :
000000000000000d
x2 :
0000000000001000
x1 :
fffffffffffff000
x0 :
0000000000000000
Call trace:
__iommu_dma_unmap+0xb8/0xc0
iommu_dma_unmap_sg+0x98/0xb8
put_pages+0x5c/0xf0 [msm]
msm_gem_free_work+0x10c/0x150 [msm]
process_one_work+0x1e0/0x330
worker_thread+0x40/0x438
kthread+0x12c/0x130
ret_from_fork+0x10/0x18
---[ end trace
afc0dc5ab81a06bf
]---
Not quite sure what triggered that, but we really shouldn't be abusing
dma_{map,unmap}_sg() for cache maint.
Cc: Stephen Boyd <sboyd@kernel.org>
Tested-by: Stephen Boyd <swboyd@chromium.org>
Reviewed-by: Jordan Crouse <jcrouse@codeaurora.org>
Signed-off-by: Rob Clark <robdclark@chromium.org>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Link:
https://patchwork.freedesktop.org/patch/msgid/20190630124735.27786-1-robdclark@gmail.com
drivers/gpu/drm/msm/msm_gem.c
patch
|
blob
|
blame
|
history
diff --git
a/drivers/gpu/drm/msm/msm_gem.c
b/drivers/gpu/drm/msm/msm_gem.c
index 8b78554cfde3ed9392297eacb07295273ee9b37d..c2114c748c2fcc28928ff138f64329773d839a60 100644
(file)
--- a/
drivers/gpu/drm/msm/msm_gem.c
+++ b/
drivers/gpu/drm/msm/msm_gem.c
@@
-97,7
+97,7
@@
static struct page **get_pages(struct drm_gem_object *obj)
* because display controller, GPU, etc. are not coherent:
*/
if (msm_obj->flags & (MSM_BO_WC|MSM_BO_UNCACHED))
- dma_
map_sg
(dev->dev, msm_obj->sgt->sgl,
+ dma_
sync_sg_for_device
(dev->dev, msm_obj->sgt->sgl,
msm_obj->sgt->nents, DMA_BIDIRECTIONAL);
}
@@
-127,7
+127,7
@@
static void put_pages(struct drm_gem_object *obj)
* GPU, etc. are not coherent:
*/
if (msm_obj->flags & (MSM_BO_WC|MSM_BO_UNCACHED))
- dma_
unmap_sg
(obj->dev->dev, msm_obj->sgt->sgl,
+ dma_
sync_sg_for_cpu
(obj->dev->dev, msm_obj->sgt->sgl,
msm_obj->sgt->nents,
DMA_BIDIRECTIONAL);