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;