Since converting the ast driver to atomic modesettting, modesetting occationally locks up the graphics hardware and turns the display permanently dark. This happens once or twice per 10 mode switches. Investigation shows that the ast hardware presumably requires the HW cursor to be disabled while the modeswitch takes place. This patchset fixes the problem by disabling planes before programming the CRTC mode or format. After the switch, the planes gets re-enabled if they were enabled before. For mere pageflip operations, nothing changes. Patches #1 makes format changes work as intended: format registers are only updated if necessary. They used to be changed on each pageflip. Patch #2 puts the modesetting code before the plane-update code. This way, mode setting runs while planes are disabled. Patches #3 and #4 add a commit-tail function that disables planes if the display's mode or format is going to change. The active planes will later get re-enabled by the plane-update handler. Tested on AST2100 HW. The issue is not 100% reproducible, but does not show up after applying the patchset. I think the problem has been fixed. v2: * rewrote the whole patchset * dropped the cursor patches * moved modesetting into atomic_begin() * disable planes in commit-tail function * don't require full modeset for format changes Thomas Zimmermann (4): drm/ast: Only set format registers if primary plane's format changes drm/ast: Set display mode in atomic_begin() drm/ast: Add commit-tail function drm/ast: Disable planes while switching display modes drivers/gpu/drm/ast/ast_drv.h | 2 + drivers/gpu/drm/ast/ast_mode.c | 148 +++++++++++++++++++++++++-------- 2 files changed, 114 insertions(+), 36 deletions(-) -- 2.28.0 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel