On Fri, Jul 28, 2023 at 10:14:14PM +0100, Laurence Tratt wrote:
> I built a new kernel this morning which includes a number of amdgpu patches.
> I saw a bizarre situation where: the machine almost-but-not-quite ground to a
> halt for quite a while, with the display not updating properly. Then the
> display updated normally, the mouse continued working OK, but the keyboard
> mostly didn't work. Oddly, I could sort-of Ctrl+Alt+F1 to the console in the
> sense that X stopped updating -- but the display didn't show the consle. I
> could then Ctrl+Alt+F5 back and X would (slowly) update.
> 
> I've noticed I now have this in my dmesg:
> 
>   Jul 28 13:20:24 overdrive /bsd: drm:pid97220:amdgpu_dm_commit_planes 
> *WARNING* [drm] [PLANE:55:plane-3] async flip with non-fast update
> 
> which may perhaps be correlated with this? Output from /var/log/messages
> below of the session below.

does the following diff change the behaviour besides the message?

There is an open issue related to this on fdo:
https://gitlab.freedesktop.org/drm/amd/-/issues/2733

Index: sys/dev/pci/drm/amd/display/amdgpu_dm/amdgpu_dm.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/amd/display/amdgpu_dm/amdgpu_dm.c,v
retrieving revision 1.95
diff -u -p -r1.95 amdgpu_dm.c
--- sys/dev/pci/drm/amd/display/amdgpu_dm/amdgpu_dm.c   28 Jul 2023 07:10:26 
-0000      1.95
+++ sys/dev/pci/drm/amd/display/amdgpu_dm/amdgpu_dm.c   29 Jul 2023 01:32:08 
-0000
@@ -7771,15 +7771,7 @@ static void amdgpu_dm_commit_planes(stru
                 * Only allow immediate flips for fast updates that don't
                 * change memory domain, FB pitch, DCC state, rotation or
                 * mirroring.
-                *
-                * dm_crtc_helper_atomic_check() only accepts async flips with
-                * fast updates.
                 */
-               if (crtc->state->async_flip &&
-                   acrtc_state->update_type != UPDATE_TYPE_FAST)
-                       drm_warn_once(state->dev,
-                                     "[PLANE:%d:%s] async flip with non-fast 
update\n",
-                                     plane->base.id, plane->name);
                bundle->flip_addrs[planes_count].flip_immediate =
                        crtc->state->async_flip &&
                        acrtc_state->update_type == UPDATE_TYPE_FAST &&
Index: sys/dev/pci/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c,v
retrieving revision 1.4
diff -u -p -r1.4 amdgpu_dm_crtc.c
--- sys/dev/pci/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c      28 Jul 2023 
06:39:55 -0000      1.4
+++ sys/dev/pci/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c      29 Jul 2023 
01:32:08 -0000
@@ -406,18 +406,6 @@ static int dm_crtc_helper_atomic_check(s
                return -EINVAL;
        }
 
-       /*
-        * Only allow async flips for fast updates that don't change the FB
-        * pitch, the DCC state, rotation, etc.
-        */
-       if (crtc_state->async_flip &&
-           dm_crtc_state->update_type != UPDATE_TYPE_FAST) {
-               drm_dbg_atomic(crtc->dev,
-                              "[CRTC:%d:%s] async flips are only supported for 
fast updates\n",
-                              crtc->base.id, crtc->name);
-               return -EINVAL;
-       }
-
        /* In some use cases, like reset, no stream is attached */
        if (!dm_crtc_state->stream)
                return 0;

Reply via email to