On 2022-09-14 07:40, Michel Dänzer wrote:
On 2022-09-14 15:31, Michel Dänzer wrote:
On 2022-09-14 07:10, Wayne Lin wrote:
From: Alex Hung <alex.h...@amd.com>

[Why & How]
This fixes kernel errors when IGT disables primary planes during the
tests kms_universal_plane::functional_test_pipe/pageflip_test_pipe.

NAK.

This essentially reverts commit b836a274b797 ("drm/amdgpu/dc: Require primary plane 
to be enabled whenever the CRTC is") (except that it goes even further and 
completely removes the requirement for any HW plane to be enabled when the HW cursor is), 
so it would reintroduce the issues described in that commit log.

Actually not exactly the same issues, due to going even further than reverting 
my fix.

Instead, the driver will claim that an atomic commit which enables the CRTC and 
the cursor plane, while leaving all other KMS planes disabled, succeeds. But 
the HW cursor will not actually be visible.


I did not observe problems with cursors (GNOME 42.4 - desktop and youtube/mpv video playback: windowed/fullscreen). Are there steps to reproduce cursor problems?


If IGT tests disable the primary plane while leaving the CRTC enabled, those 
tests are broken and need to be fixed instead.


There are IGT cursor tests fixed by this:

  igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions
  igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size

It also reduces amdgpu workaround in IGT's kms_concurrent:
  https://patchwork.freedesktop.org/patch/499382/?series=107734&rev=1

The change affect multiple IGT tests. Adding amdgpu-specific workarounds to each of the IGT tests is not an ideal solution. If the cursor problems can be reproduced, a more specific solution can be developed.



P.S. Per above, this patch should never have made it this far without getting 
in touch with me directly.


diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
index c89594f3a5cb..099a226407a3 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
@@ -376,18 +376,6 @@ static int dm_crtc_helper_atomic_check(struct drm_crtc 
*crtc,
                return ret;
        }
- /*
-        * We require the primary plane to be enabled whenever the CRTC is, 
otherwise
-        * drm_mode_cursor_universal may end up trying to enable the cursor 
plane while all other
-        * planes are disabled, which is not supported by the hardware. And 
there is legacy
-        * userspace which stops using the HW cursor altogether in response to 
the resulting EINVAL.
-        */
-       if (crtc_state->enable &&
-               !(crtc_state->plane_mask & drm_plane_mask(crtc->primary))) {
-               DRM_DEBUG_ATOMIC("Can't enable a CRTC without enabling the primary 
plane\n");
-               return -EINVAL;
-       }
-
        /* In some use cases, like reset, no stream is attached */
        if (!dm_crtc_state->stream)
                return 0;


Reply via email to