From: Thomas Zimmermann <tzimmermann@suse.de>
To: airlied@redhat.com, daniel@ffwll.ch, sam@ravnborg.org,
kraxel@redhat.com, emil.l.velikov@gmail.com
Cc: Thomas Zimmermann <tzimmermann@suse.de>, dri-devel@lists.freedesktop.org
Subject: [PATCH v3 0/4] drm/ast: Disable HW cursor when switching modes
Date: Thu, 13 Aug 2020 15:51:05 +0200 [thread overview]
Message-ID: <20200813135109.10724-1-tzimmermann@suse.de> (raw)
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. 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.
Patches #2 to #4 change the modesetting logic such that planes will be
disabled with the CRTC, then the CRTC's new mode is being programmed,
and finally planes are reenabled. The primary plane is enabled before
the cursor plane. With this setup way, the cursor plane always has a
valid mode and framebuffer available.
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.
v3:
* rewrote the patchset again
* format setup is now done on primary-plane update
* don't disable cursor for format changes (does not seem necessary)
* disable planes in CRTC atomic_disable()
* do modeset in atomic_enable()
* drop Fixes tags; it's too complicated for a simple bugfix
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: Set format registers in primary plane's update
drm/ast: Disable planes while switching display modes
drm/ast: Program display mode in CRTC's atomic_enable()
drm/ast: Enable CRTC before planes
drivers/gpu/drm/ast/ast_drv.h | 2 +
drivers/gpu/drm/ast/ast_mode.c | 103 ++++++++++++++++++++-------------
2 files changed, 64 insertions(+), 41 deletions(-)
--
2.28.0
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next reply other threads:[~2020-08-13 13:51 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-13 13:51 Thomas Zimmermann [this message]
2020-08-13 13:51 ` [PATCH v3 1/4] drm/ast: Set format registers in primary plane's update Thomas Zimmermann
2020-08-13 13:51 ` [PATCH v3 2/4] drm/ast: Disable planes while switching display modes Thomas Zimmermann
2020-08-13 13:51 ` [PATCH v3 3/4] drm/ast: Program display mode in CRTC's atomic_enable() Thomas Zimmermann
2020-08-13 13:51 ` [PATCH v3 4/4] drm/ast: Enable CRTC before planes Thomas Zimmermann
2020-09-09 8:45 ` [PATCH v3 0/4] drm/ast: Disable HW cursor when switching modes Thomas Zimmermann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200813135109.10724-1-tzimmermann@suse.de \
--to=tzimmermann@suse.de \
--cc=airlied@redhat.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=emil.l.velikov@gmail.com \
--cc=kraxel@redhat.com \
--cc=sam@ravnborg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox