aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/msm
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-05-16 10:22:42 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2019-05-16 10:22:42 -0400
commitcc7ce90153e74f8266eefee9fba466faa1a2d5df (patch)
tree7ebac4bc27c2d400aca256c0b557c561540543e2 /drivers/gpu/drm/msm
parent83f3ef3de625a5766de2382f9e077d4daafd5bac (diff)
parent8da0e1525b7f0d69c6cb44094963906282b32673 (diff)
Merge tag 'drm-next-2019-05-16' of git://anongit.freedesktop.org/drm/drm
Pull drm fixes from Dave Airlie: "A bunch of fixes for the merge window closure, doesn't seem to be anything too major or serious in there. It does add TU117 turing modesetting to nouveau but it's just an enable for preexisting code. amdgpu: - gpu reset at load crash fix - ATPX hotplug fix for when dGPU is off - SR-IOV fixes radeon: - r5xx pll fixes i915: - GVT (MCHBAR, buffer alignment, misc warnings fixes) - Fixes for newly enabled semaphore code - Geminilake disable framebuffer compression - HSW edp fast modeset fix - IRQ vs RCU race fix nouveau: - Turing modesetting fixes - TU117 support msm: - SDM845 bringup fixes panfrost: - static checker fixes pl111: - spinlock init fix. bridge: - refresh rate register fix for adv7511" * tag 'drm-next-2019-05-16' of git://anongit.freedesktop.org/drm/drm: (36 commits) drm/msm: Upgrade gxpd checks to IS_ERR_OR_NULL drm/msm/dpu: Remove duplicate header drm/pl111: Initialize clock spinlock early drm/msm: correct attempted NULL pointer dereference in debugfs drm/msm: remove resv fields from msm_gem_object struct drm/nouveau: fix duplication of nv50_head_atom struct drm/nouveau/disp/dp: respect sink limits when selecting failsafe link configuration drm/nouveau/core: initial support for boards with TU117 chipset drm/nouveau/core: allow detected chipset to be overridden drm/nouveau/kms/gf119-gp10x: push HeadSetControlOutputResource() mthd when encoders change drm/nouveau/kms/nv50-: fix bug preventing non-vsync'd page flips drm/nouveau/kms/gv100-: fix spurious window immediate interlocks drm/bridge: adv7511: Fix low refresh rate selection drm/panfrost: Add missing _fini() calls in panfrost_device_fini() drm/panfrost: Only put sync_out if non-NULL drm/i915: Seal races between async GPU cancellation, retirement and signaling drm/i915: Fix fastset vs. pfit on/off on HSW EDP transcoder drm/i915/fbc: disable framebuffer compression on GeminiLake drm/amdgpu/psp: move psp version specific function pointers to early_init drm/radeon: prefer lower reference dividers ...
Diffstat (limited to 'drivers/gpu/drm/msm')
-rw-r--r--drivers/gpu/drm/msm/adreno/a6xx_gmu.c6
-rw-r--r--drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c1
-rw-r--r--drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c4
-rw-r--r--drivers/gpu/drm/msm/msm_atomic.c4
-rw-r--r--drivers/gpu/drm/msm/msm_gem.c3
-rw-r--r--drivers/gpu/drm/msm/msm_gem.h4
6 files changed, 7 insertions, 15 deletions
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
index 9155dafae2a9..38e2cfa9cec7 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c
@@ -747,7 +747,7 @@ int a6xx_gmu_resume(struct a6xx_gpu *a6xx_gpu)
747 * will make sure that the refcounting is correct in case we need to 747 * will make sure that the refcounting is correct in case we need to
748 * bring down the GX after a GMU failure 748 * bring down the GX after a GMU failure
749 */ 749 */
750 if (!IS_ERR(gmu->gxpd)) 750 if (!IS_ERR_OR_NULL(gmu->gxpd))
751 pm_runtime_get(gmu->gxpd); 751 pm_runtime_get(gmu->gxpd);
752 752
753out: 753out:
@@ -863,7 +863,7 @@ int a6xx_gmu_stop(struct a6xx_gpu *a6xx_gpu)
863 * domain. Usually the GMU does this but only if the shutdown sequence 863 * domain. Usually the GMU does this but only if the shutdown sequence
864 * was successful 864 * was successful
865 */ 865 */
866 if (!IS_ERR(gmu->gxpd)) 866 if (!IS_ERR_OR_NULL(gmu->gxpd))
867 pm_runtime_put_sync(gmu->gxpd); 867 pm_runtime_put_sync(gmu->gxpd);
868 868
869 clk_bulk_disable_unprepare(gmu->nr_clocks, gmu->clocks); 869 clk_bulk_disable_unprepare(gmu->nr_clocks, gmu->clocks);
@@ -1234,7 +1234,7 @@ void a6xx_gmu_remove(struct a6xx_gpu *a6xx_gpu)
1234 1234
1235 pm_runtime_disable(gmu->dev); 1235 pm_runtime_disable(gmu->dev);
1236 1236
1237 if (!IS_ERR(gmu->gxpd)) { 1237 if (!IS_ERR_OR_NULL(gmu->gxpd)) {
1238 pm_runtime_disable(gmu->gxpd); 1238 pm_runtime_disable(gmu->gxpd);
1239 dev_pm_domain_detach(gmu->gxpd, false); 1239 dev_pm_domain_detach(gmu->gxpd, false);
1240 } 1240 }
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c
index 018df2c3b7ed..45a5bc6ede5d 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c
@@ -15,7 +15,6 @@
15#include "dpu_hwio.h" 15#include "dpu_hwio.h"
16#include "dpu_hw_lm.h" 16#include "dpu_hw_lm.h"
17#include "dpu_hw_mdss.h" 17#include "dpu_hw_mdss.h"
18#include "dpu_kms.h"
19 18
20#define LM_OP_MODE 0x00 19#define LM_OP_MODE 0x00
21#define LM_OUT_SIZE 0x04 20#define LM_OUT_SIZE 0x04
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
index da1f727d7495..ce1a555e1f31 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
@@ -780,7 +780,6 @@ static int dpu_plane_prepare_fb(struct drm_plane *plane,
780 struct dpu_plane_state *pstate = to_dpu_plane_state(new_state); 780 struct dpu_plane_state *pstate = to_dpu_plane_state(new_state);
781 struct dpu_hw_fmt_layout layout; 781 struct dpu_hw_fmt_layout layout;
782 struct drm_gem_object *obj; 782 struct drm_gem_object *obj;
783 struct msm_gem_object *msm_obj;
784 struct dma_fence *fence; 783 struct dma_fence *fence;
785 struct dpu_kms *kms = _dpu_plane_get_kms(&pdpu->base); 784 struct dpu_kms *kms = _dpu_plane_get_kms(&pdpu->base);
786 int ret; 785 int ret;
@@ -799,8 +798,7 @@ static int dpu_plane_prepare_fb(struct drm_plane *plane,
799 * implicit fence and fb prepare by hand here. 798 * implicit fence and fb prepare by hand here.
800 */ 799 */
801 obj = msm_framebuffer_bo(new_state->fb, 0); 800 obj = msm_framebuffer_bo(new_state->fb, 0);
802 msm_obj = to_msm_bo(obj); 801 fence = reservation_object_get_excl_rcu(obj->resv);
803 fence = reservation_object_get_excl_rcu(msm_obj->resv);
804 if (fence) 802 if (fence)
805 drm_atomic_set_fence_for_plane(new_state, fence); 803 drm_atomic_set_fence_for_plane(new_state, fence);
806 804
diff --git a/drivers/gpu/drm/msm/msm_atomic.c b/drivers/gpu/drm/msm/msm_atomic.c
index f5b1256e32b6..131c23a267ee 100644
--- a/drivers/gpu/drm/msm/msm_atomic.c
+++ b/drivers/gpu/drm/msm/msm_atomic.c
@@ -49,15 +49,13 @@ int msm_atomic_prepare_fb(struct drm_plane *plane,
49 struct msm_drm_private *priv = plane->dev->dev_private; 49 struct msm_drm_private *priv = plane->dev->dev_private;
50 struct msm_kms *kms = priv->kms; 50 struct msm_kms *kms = priv->kms;
51 struct drm_gem_object *obj; 51 struct drm_gem_object *obj;
52 struct msm_gem_object *msm_obj;
53 struct dma_fence *fence; 52 struct dma_fence *fence;
54 53
55 if (!new_state->fb) 54 if (!new_state->fb)
56 return 0; 55 return 0;
57 56
58 obj = msm_framebuffer_bo(new_state->fb, 0); 57 obj = msm_framebuffer_bo(new_state->fb, 0);
59 msm_obj = to_msm_bo(obj); 58 fence = reservation_object_get_excl_rcu(obj->resv);
60 fence = reservation_object_get_excl_rcu(msm_obj->resv);
61 59
62 drm_atomic_set_fence_for_plane(new_state, fence); 60 drm_atomic_set_fence_for_plane(new_state, fence);
63 61
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c
index 31d5a744d84f..35f55dd25994 100644
--- a/drivers/gpu/drm/msm/msm_gem.c
+++ b/drivers/gpu/drm/msm/msm_gem.c
@@ -803,7 +803,8 @@ void msm_gem_describe(struct drm_gem_object *obj, struct seq_file *m)
803 seq_puts(m, " vmas:"); 803 seq_puts(m, " vmas:");
804 804
805 list_for_each_entry(vma, &msm_obj->vmas, list) 805 list_for_each_entry(vma, &msm_obj->vmas, list)
806 seq_printf(m, " [%s: %08llx,%s,inuse=%d]", vma->aspace->name, 806 seq_printf(m, " [%s: %08llx,%s,inuse=%d]",
807 vma->aspace != NULL ? vma->aspace->name : NULL,
807 vma->iova, vma->mapped ? "mapped" : "unmapped", 808 vma->iova, vma->mapped ? "mapped" : "unmapped",
808 vma->inuse); 809 vma->inuse);
809 810
diff --git a/drivers/gpu/drm/msm/msm_gem.h b/drivers/gpu/drm/msm/msm_gem.h
index c5ac781dffee..812d1b1369a5 100644
--- a/drivers/gpu/drm/msm/msm_gem.h
+++ b/drivers/gpu/drm/msm/msm_gem.h
@@ -86,10 +86,6 @@ struct msm_gem_object {
86 86
87 struct llist_node freed; 87 struct llist_node freed;
88 88
89 /* normally (resv == &_resv) except for imported bo's */
90 struct reservation_object *resv;
91 struct reservation_object _resv;
92
93 /* For physically contiguous buffers. Used when we don't have 89 /* For physically contiguous buffers. Used when we don't have
94 * an IOMMU. Also used for stolen/splashscreen buffer. 90 * an IOMMU. Also used for stolen/splashscreen buffer.
95 */ 91 */