[PATCH 0/3] drm/ast: Disable HW cursor when switching modes

Thomas Zimmermann tzimmermann at suse.de
Mon Jul 27 07:37:04 UTC 2020


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 modeswitches.
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 the HW cursor before
programming the CRTC mode. After changing the mode, the HW cursor gets
re-enabled if it was enabled before.

Patches #1 and #2 simplify the modesetting and cursor code in preparation
of the actual fix. Patch #3 adds the workaround. The CRTC's atomic_begin()
helper disables an active HW cursor and atomic_flush() re-enables it. The
process is transparent for userspace and the rest of the DRM code. For mere
pageflip operations, nothing changes.

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.

Thomas Zimmermann (3):
  drm/ast: Do full modeset if the primary plane's format changes
  drm/ast: Store image size in HW cursor info
  drm/ast: Disable cursor while switching display modes

 drivers/gpu/drm/ast/ast_cursor.c | 13 ++++-
 drivers/gpu/drm/ast/ast_drv.h    |  9 +++-
 drivers/gpu/drm/ast/ast_mode.c   | 82 ++++++++++++++++++++++++++------
 3 files changed, 86 insertions(+), 18 deletions(-)

--
2.27.0



More information about the dri-devel mailing list