<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/gpu/drm/msm, branch v5.4</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v5.4</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v5.4'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2019-10-11T18:04:31Z</updated>
<entry>
<title>drm/msm/dsi: Implement reset correctly</title>
<updated>2019-10-11T18:04:31Z</updated>
<author>
<name>Jeffrey Hugo</name>
<email>jeffrey.l.hugo@gmail.com</email>
</author>
<published>2019-10-11T13:39:39Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=78e31c42261779a01bc73472d0f65f15378e9de3'/>
<id>urn:sha1:78e31c42261779a01bc73472d0f65f15378e9de3</id>
<content type='text'>
On msm8998, vblank timeouts are observed because the DSI controller is not
reset properly, which ends up stalling the MDP.  This is because the reset
logic is not correct per the hardware documentation.

The documentation states that after asserting reset, software should wait
some time (no indication of how long), or poll the status register until it
returns 0 before deasserting reset.

wmb() is insufficient for this purpose since it just ensures ordering, not
timing between writes.  Since asserting and deasserting reset occurs on the
same register, ordering is already guaranteed by the architecture, making
the wmb extraneous.

Since we would define a timeout for polling the status register to avoid a
possible infinite loop, lets just use a static delay of 20 ms, since 16.666
ms is the time available to process one frame at 60 fps.

Fixes: a689554ba6ed ("drm/msm: Initial add DSI connector support")
Cc: Hai Li &lt;hali@codeaurora.org&gt;
Cc: Rob Clark &lt;robdclark@gmail.com&gt;
Signed-off-by: Jeffrey Hugo &lt;jeffrey.l.hugo@gmail.com&gt;
Reviewed-by: Sean Paul &lt;sean@poorly.run&gt;
[seanpaul renamed RESET_DELAY to DSI_RESET_TOGGLE_DELAY_MS]
Signed-off-by: Sean Paul &lt;seanpaul@chromium.org&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20191011133939.16551-1-jeffrey.l.hugo@gmail.com
</content>
</entry>
<entry>
<title>drm/msm: Use the correct dma_sync calls harder</title>
<updated>2019-09-04T17:05:05Z</updated>
<author>
<name>Rob Clark</name>
<email>robdclark@chromium.org</email>
</author>
<published>2019-09-04T16:56:03Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=9f614197c744002f9968e82c649fdf7fe778e1e7'/>
<id>urn:sha1:9f614197c744002f9968e82c649fdf7fe778e1e7</id>
<content type='text'>
Looks like the dma_sync calls don't do what we want on armv7 either.
Fixes:

  Unable to handle kernel paging request at virtual address 50001000
  pgd = (ptrval)
  [50001000] *pgd=00000000
  Internal error: Oops: 805 [#1] SMP ARM
  Modules linked in:
  CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.3.0-rc6-00271-g9f159ae07f07 #4
  Hardware name: Freescale i.MX53 (Device Tree Support)
  PC is at v7_dma_clean_range+0x20/0x38
  LR is at __dma_page_cpu_to_dev+0x28/0x90
  pc : [&lt;c011c76c&gt;]    lr : [&lt;c01181c4&gt;]    psr: 20000013
  sp : d80b5a88  ip : de96c000  fp : d840ce6c
  r10: 00000000  r9 : 00000001  r8 : d843e010
  r7 : 00000000  r6 : 00008000  r5 : ddb6c000  r4 : 00000000
  r3 : 0000003f  r2 : 00000040  r1 : 50008000  r0 : 50001000
  Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
  Control: 10c5387d  Table: 70004019  DAC: 00000051
  Process swapper/0 (pid: 1, stack limit = 0x(ptrval))

Signed-off-by: Rob Clark &lt;robdclark@chromium.org&gt;
Fixes: 3de433c5b38a ("drm/msm: Use the correct dma_sync calls in msm_gem")
Tested-by: Fabio Estevam &lt;festevam@gmail.com&gt;
</content>
</entry>
<entry>
<title>drm/msm: remove unlikely() from WARN_ON() conditions</title>
<updated>2019-09-04T15:42:45Z</updated>
<author>
<name>Denis Efremov</name>
<email>efremov@linux.com</email>
</author>
<published>2019-08-29T16:50:16Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=c044e86f541a20085891c41e685a4201064430b5'/>
<id>urn:sha1:c044e86f541a20085891c41e685a4201064430b5</id>
<content type='text'>
"unlikely(WARN_ON(x))" is excessive. WARN_ON() already uses unlikely()
internally.

Signed-off-by: Denis Efremov &lt;efremov@linux.com&gt;
Cc: Rob Clark &lt;robdclark@gmail.com&gt;
Cc: Sean Paul &lt;sean@poorly.run&gt;
Cc: Joe Perches &lt;joe@perches.com&gt;
Cc: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Cc: linux-arm-msm@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Reviewed-by: Bjorn Andersson &lt;bjorn.andersson@linaro.org&gt;
Signed-off-by: Rob Clark &lt;robdclark@chromium.org&gt;
</content>
</entry>
<entry>
<title>drm/msm/dsi: Fix return value check for clk_get_parent</title>
<updated>2019-09-03T23:17:02Z</updated>
<author>
<name>Sean Paul</name>
<email>seanpaul@chromium.org</email>
</author>
<published>2019-08-07T18:51:50Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=5fb9b797d5ccf311ae4aba69e86080d47668b5f7'/>
<id>urn:sha1:5fb9b797d5ccf311ae4aba69e86080d47668b5f7</id>
<content type='text'>
clk_get_parent returns an error pointer upon failure, not NULL. So the
checks as they exist won't catch a failure. This patch changes the
checks and the return values to properly handle an error pointer.

Fixes: c4d8cfe516dc ("drm/msm/dsi: add implementation for helper functions")
Cc: Sibi Sankar &lt;sibis@codeaurora.org&gt;
Cc: Sean Paul &lt;seanpaul@chromium.org&gt;
Cc: Rob Clark &lt;robdclark@chromium.org&gt;
Cc: &lt;stable@vger.kernel.org&gt; # v4.19+
Signed-off-by: Sean Paul &lt;seanpaul@chromium.org&gt;
Signed-off-by: Rob Clark &lt;robdclark@chromium.org&gt;
</content>
</entry>
<entry>
<title>drm/msm: add atomic traces</title>
<updated>2019-09-03T23:17:02Z</updated>
<author>
<name>Rob Clark</name>
<email>robdclark@chromium.org</email>
</author>
<published>2019-08-29T16:45:18Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=d934a712c5e6a3724dd560b8e92eb230b025ee8d'/>
<id>urn:sha1:d934a712c5e6a3724dd560b8e92eb230b025ee8d</id>
<content type='text'>
This was useful for debugging fps drops.  I suspect it will be useful
again.

Signed-off-by: Rob Clark &lt;robdclark@chromium.org&gt;
Reviewed-by: Sean Paul &lt;sean@poorly.run&gt;
</content>
</entry>
<entry>
<title>drm/msm/dpu: async commit support</title>
<updated>2019-09-03T23:17:01Z</updated>
<author>
<name>Rob Clark</name>
<email>robdclark@chromium.org</email>
</author>
<published>2019-08-29T16:45:17Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=cd6d923167b1bf3e051f9d90fa129456d78ef06e'/>
<id>urn:sha1:cd6d923167b1bf3e051f9d90fa129456d78ef06e</id>
<content type='text'>
In addition, moving to kms-&gt;flush_commit() lets us drop the only user
of kms-&gt;commit().

Signed-off-by: Rob Clark &lt;robdclark@chromium.org&gt;
Reviewed-by: Sean Paul &lt;sean@poorly.run&gt;
</content>
</entry>
<entry>
<title>drm/msm: async commit support</title>
<updated>2019-09-03T23:17:01Z</updated>
<author>
<name>Rob Clark</name>
<email>robdclark@chromium.org</email>
</author>
<published>2019-08-29T16:45:16Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=2d99ced787e3d0f251fa370d2aae83cf2085a8d9'/>
<id>urn:sha1:2d99ced787e3d0f251fa370d2aae83cf2085a8d9</id>
<content type='text'>
Now that flush/wait/complete is decoupled from the "synchronous" part of
atomic commit_tail(), add support to defer flush to a timer that expires
shortly before vblank for async commits.  In this way, multiple atomic
commits (for example, cursor updates) can be coalesced into a single
flush at the end of the frame.

v2: don't hold lock over -&gt;wait_flush(), to avoid locking interaction
    that was causing fps drop when combining page flips or non-async
    atomic commits and lots of legacy cursor updates

Signed-off-by: Rob Clark &lt;robdclark@chromium.org&gt;
Reviewed-by: Sean Paul &lt;sean@poorly.run&gt;
</content>
</entry>
<entry>
<title>drm/msm: split power control from prepare/complete_commit</title>
<updated>2019-09-03T23:17:01Z</updated>
<author>
<name>Rob Clark</name>
<email>robdclark@chromium.org</email>
</author>
<published>2019-08-29T16:45:15Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=e35a29d5c432504e6134c881dc4aaded7de7e717'/>
<id>urn:sha1:e35a29d5c432504e6134c881dc4aaded7de7e717</id>
<content type='text'>
With atomic commit, -&gt;prepare_commit() and -&gt;complete_commit() may not
be evenly balanced (although -&gt;complete_commit() will complete each
crtc that had been previously prepared).  So these will no longer be
a good place to enable/disable clocks needed for hw access.

Signed-off-by: Rob Clark &lt;robdclark@chromium.org&gt;
Reviewed-by: Sean Paul &lt;sean@poorly.run&gt;
</content>
</entry>
<entry>
<title>drm/msm: add kms-&gt;flush_commit()</title>
<updated>2019-09-03T23:17:01Z</updated>
<author>
<name>Rob Clark</name>
<email>robdclark@chromium.org</email>
</author>
<published>2019-08-29T16:45:14Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=9f6b65642bd2d7ec1fc2eb675cf10a55f29417e2'/>
<id>urn:sha1:9f6b65642bd2d7ec1fc2eb675cf10a55f29417e2</id>
<content type='text'>
Add -&gt;flush_commit(crtc_mask).  Currently a no-op, but kms backends
should migrate writing flush registers to this hook, so we can decouple
pushing updates to hardware, and flushing the updates.

Once we add async commit support, the hw updates will be pushed down to
the hw synchronously, but flushing the updates will be deferred until as
close to vblank as possible, so that multiple updates can be combined in
a single frame.

Signed-off-by: Rob Clark &lt;robdclark@chromium.org&gt;
Reviewed-by: Sean Paul &lt;sean@poorly.run&gt;
</content>
</entry>
<entry>
<title>drm/msm: convert kms-&gt;complete_commit() to crtc_mask</title>
<updated>2019-09-03T23:17:01Z</updated>
<author>
<name>Rob Clark</name>
<email>robdclark@chromium.org</email>
</author>
<published>2019-08-29T16:45:13Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=80b4b4a703d6e4fb966e5c6a7c74a06001bf7d19'/>
<id>urn:sha1:80b4b4a703d6e4fb966e5c6a7c74a06001bf7d19</id>
<content type='text'>
Prep work for async commits, in which case this will be called after we
no longer have the atomic state object.

This drops some wait_for_vblanks(), but those should be unnecessary, as
we call this after waiting for flush to complete.

Signed-off-by: Rob Clark &lt;robdclark@chromium.org&gt;
Reviewed-by: Sean Paul &lt;sean@poorly.run&gt;
</content>
</entry>
</feed>
