* [PATCH AUTOSEL 5.2 41/76] drm/msm/dpu: Correct dpu encoder spinlock initialization [not found] <20190802131951.11600-1-sashal@kernel.org> @ 2019-08-02 13:19 ` Sasha Levin 2019-08-02 13:19 ` [PATCH AUTOSEL 5.2 42/76] drm/msm: stop abusing dma_map/unmap for cache Sasha Levin 1 sibling, 0 replies; 4+ messages in thread From: Sasha Levin @ 2019-08-02 13:19 UTC (permalink / raw) To: linux-kernel, stable Cc: Shubhashree Dhar, Sean Paul, Sasha Levin, linux-arm-msm, dri-devel, freedreno From: Shubhashree Dhar <dhar@codeaurora.org> [ Upstream commit 2e7b801eadbf327bf61041c943e5c44a5de4b0e5 ] dpu encoder spinlock should be initialized during dpu encoder init instead of dpu encoder setup which is part of modeset init. Signed-off-by: Shubhashree Dhar <dhar@codeaurora.org> [seanpaul resolved conflict in old init removal and revised the commit message] Signed-off-by: Sean Paul <seanpaul@chromium.org> Link: https://patchwork.freedesktop.org/patch/msgid/1561357632-15361-1-git-send-email-dhar@codeaurora.org Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c index 0ea1501966594..c62f7abcf509c 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c @@ -2226,8 +2226,6 @@ int dpu_encoder_setup(struct drm_device *dev, struct drm_encoder *enc, if (ret) goto fail; - spin_lock_init(&dpu_enc->enc_spinlock); - atomic_set(&dpu_enc->frame_done_timeout_ms, 0); timer_setup(&dpu_enc->frame_done_timer, dpu_encoder_frame_done_timeout, 0); @@ -2281,6 +2279,7 @@ struct drm_encoder *dpu_encoder_init(struct drm_device *dev, drm_encoder_helper_add(&dpu_enc->base, &dpu_encoder_helper_funcs); + spin_lock_init(&dpu_enc->enc_spinlock); dpu_enc->enabled = false; return &dpu_enc->base; -- 2.20.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH AUTOSEL 5.2 42/76] drm/msm: stop abusing dma_map/unmap for cache [not found] <20190802131951.11600-1-sashal@kernel.org> 2019-08-02 13:19 ` [PATCH AUTOSEL 5.2 41/76] drm/msm/dpu: Correct dpu encoder spinlock initialization Sasha Levin @ 2019-08-02 13:19 ` Sasha Levin 2019-08-03 0:14 ` Rob Clark 1 sibling, 1 reply; 4+ messages in thread From: Sasha Levin @ 2019-08-02 13:19 UTC (permalink / raw) To: linux-kernel, stable Cc: Rob Clark, Stephen Boyd, Stephen Boyd, Jordan Crouse, Sean Paul, Sasha Levin, linux-arm-msm, dri-devel, freedreno From: Rob Clark <robdclark@chromium.org> [ Upstream commit 0036bc73ccbe7e600a3468bf8e8879b122252274 ] 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 Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/gpu/drm/msm/msm_gem.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c index 49a019939ccdc..a3b5fe1a13944 100644 --- 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); -- 2.20.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH AUTOSEL 5.2 42/76] drm/msm: stop abusing dma_map/unmap for cache 2019-08-02 13:19 ` [PATCH AUTOSEL 5.2 42/76] drm/msm: stop abusing dma_map/unmap for cache Sasha Levin @ 2019-08-03 0:14 ` Rob Clark 2019-08-14 2:03 ` Sasha Levin 0 siblings, 1 reply; 4+ messages in thread From: Rob Clark @ 2019-08-03 0:14 UTC (permalink / raw) To: Sasha Levin Cc: LKML, stable, Stephen Boyd, Stephen Boyd, Jordan Crouse, Sean Paul, linux-arm-msm, dri-devel, freedreno Hi Sasha, It's probably best *not* to backport this patch.. drm/msm abuses the DMA API in a way that it is not intended be used, to work around the lack of cache sync API exported to kernel modules on arm/arm64. I couldn't really guarantee that this patch does the right thing on older versions of DMA API, so best to leave things as they were. BR, -R On Fri, Aug 2, 2019 at 6:21 AM Sasha Levin <sashal@kernel.org> wrote: > > From: Rob Clark <robdclark@chromium.org> > > [ Upstream commit 0036bc73ccbe7e600a3468bf8e8879b122252274 ] > > 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 > Signed-off-by: Sasha Levin <sashal@kernel.org> > --- > drivers/gpu/drm/msm/msm_gem.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c > index 49a019939ccdc..a3b5fe1a13944 100644 > --- 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); > > -- > 2.20.1 > ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH AUTOSEL 5.2 42/76] drm/msm: stop abusing dma_map/unmap for cache 2019-08-03 0:14 ` Rob Clark @ 2019-08-14 2:03 ` Sasha Levin 0 siblings, 0 replies; 4+ messages in thread From: Sasha Levin @ 2019-08-14 2:03 UTC (permalink / raw) To: Rob Clark Cc: LKML, stable, Stephen Boyd, Stephen Boyd, Jordan Crouse, Sean Paul, linux-arm-msm, dri-devel, freedreno On Fri, Aug 02, 2019 at 05:14:35PM -0700, Rob Clark wrote: >Hi Sasha, > >It's probably best *not* to backport this patch.. drm/msm abuses the >DMA API in a way that it is not intended be used, to work around the >lack of cache sync API exported to kernel modules on arm/arm64. I >couldn't really guarantee that this patch does the right thing on >older versions of DMA API, so best to leave things as they were. Now dropped, thank you. -- Thanks, Sasha ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2019-08-14 2:03 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <20190802131951.11600-1-sashal@kernel.org> 2019-08-02 13:19 ` [PATCH AUTOSEL 5.2 41/76] drm/msm/dpu: Correct dpu encoder spinlock initialization Sasha Levin 2019-08-02 13:19 ` [PATCH AUTOSEL 5.2 42/76] drm/msm: stop abusing dma_map/unmap for cache Sasha Levin 2019-08-03 0:14 ` Rob Clark 2019-08-14 2:03 ` Sasha Levin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).