On Tue, Apr 16, 2024 at 02:32:17AM -0700, Nam Nguyen wrote: > >Synopsis: amdgpu Xorg.0.log filled with flip queue failed and Page flip > >failed > >Category: system > >Environment: > System : OpenBSD 7.5 > Details : OpenBSD 7.5-current (GENERIC.MP) #25: Mon Apr 15 12:00:00 > MDT 2024 > > dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP > > Architecture: OpenBSD.amd64 > Machine : amd64 > >Description: > > /var/log/Xorg.0.log gets filled up with the same repeating error while > watching mpv yt-dlp and playing games/ezquake. This is on 6800xt amd64 > 3900x. > > $ du -sh /var/log/Xorg.0.log > 1017M /var/log/Xorg.0.log > > >How-To-Repeat: > > watch mpv yt-dlp several times leaves only two lines per video: > [ 76.172] (WW) AMDGPU(0): flip queue failed: Invalid argument > [ 76.172] (WW) AMDGPU(0): Page flip failed: Invalid argument > [ 96.004] (WW) AMDGPU(0): flip queue failed: Invalid argument > [ 96.004] (WW) AMDGPU(0): Page flip failed: Invalid argument > [ 96.792] (WW) AMDGPU(0): flip queue failed: Invalid argument > [ 96.792] (WW) AMDGPU(0): Page flip failed: Invalid argument
try the diff below which brings in xf86-video-amdgpu-23.0.0..31a092ae71371fb473a3a51f70fe58e1f42e283b the last commit is the one referenced in: https://gitlab.freedesktop.org/drm/amd/-/issues/2852 https://gitlab.freedesktop.org/xorg/driver/xf86-video-amdgpu/-/commit/31a092ae71371fb473a3a51f70fe58e1f42e283b Index: driver/xf86-video-amdgpu/man/amdgpu.man =================================================================== RCS file: /cvs/xenocara/driver/xf86-video-amdgpu/man/amdgpu.man,v diff -u -p -r1.4 amdgpu.man --- driver/xf86-video-amdgpu/man/amdgpu.man 1 Mar 2023 20:21:10 -0000 1.4 +++ driver/xf86-video-amdgpu/man/amdgpu.man 16 Apr 2024 09:55:23 -0000 @@ -81,7 +81,8 @@ on. If this option is set, the default v accordingly. If this option isn't set, the default value of the property is .B auto, which means that TearFree is on for rotated outputs, outputs with RandR -transforms applied and for RandR 1.4 secondary outputs, otherwise off. +transforms applied, for RandR 1.4 secondary outputs and if 'VariableRefresh' +is enabled, otherwise it's off. .TP .BI "Option \*qVariableRefresh\*q \*q" boolean \*q Enables support for enabling variable refresh on the Screen's CRTCs Index: driver/xf86-video-amdgpu/src/amdgpu_kms.c =================================================================== RCS file: /cvs/xenocara/driver/xf86-video-amdgpu/src/amdgpu_kms.c,v diff -u -p -r1.6 amdgpu_kms.c --- driver/xf86-video-amdgpu/src/amdgpu_kms.c 1 Mar 2023 20:21:10 -0000 1.6 +++ driver/xf86-video-amdgpu/src/amdgpu_kms.c 16 Apr 2024 09:55:23 -0000 @@ -1657,6 +1657,10 @@ Bool AMDGPUPreInit_KMS(ScrnInfoPtr pScrn from = xf86GetOptValBool(info->Options, OPTION_VARIABLE_REFRESH, &info->vrr_support) ? X_CONFIG : X_DEFAULT; + if (info->vrr_support && !info->tear_free) + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "Enabling VariableRefresh while TearFree is disabled can cause instability!\n"); + xf86DrvMsg(pScrn->scrnIndex, from, "VariableRefresh: %sabled\n", info->vrr_support ? "en" : "dis"); Index: driver/xf86-video-amdgpu/src/drmmode_display.c =================================================================== RCS file: /cvs/xenocara/driver/xf86-video-amdgpu/src/drmmode_display.c,v diff -u -p -r1.4 drmmode_display.c --- driver/xf86-video-amdgpu/src/drmmode_display.c 5 Dec 2022 16:41:17 -0000 1.4 +++ driver/xf86-video-amdgpu/src/drmmode_display.c 16 Apr 2024 09:55:23 -0000 @@ -597,6 +597,7 @@ drmmode_crtc_update_tear_free(xf86CrtcPt (drmmode_output->tear_free == 2 && (crtc->scrn->pScreen->isGPU || info->shadow_primary || + info->vrr_support || crtc->transformPresent || crtc->rotation != RR_Rotate_0))) { drmmode_crtc->tear_free = TRUE; return; @@ -1268,6 +1269,11 @@ drmmode_set_mode(xf86CrtcPtr crtc, struc if (output->crtc != crtc) continue; + if (!drmmode_output->mode_output) { + ret = FALSE; + goto out; + } + output_ids[output_count] = drmmode_output->mode_output->connector_id; output_count++; } @@ -1286,6 +1292,7 @@ drmmode_set_mode(xf86CrtcPtr crtc, struc "failed to set mode: %s\n", strerror(errno)); } +out: free(output_ids); return ret; }