• Lyude Paul's avatar
    modesetting: Actually disable CRTCs in legacy mode · 7a44e8d4
    Lyude Paul authored
    Believe it or not, somehow we've never done this in legacy mode! We
    currently simply change the DPMS property on the CRTC's output's
    respective DRM connector, but this means that we're just setting the
    CRTC as inactive-not disabled. From the perspective of the kernel, this
    means that any shared resources used by the CRTC are still in use.
    
    This can cause problems for drivers that are not yet fully atomic,
    despite using the atomic helpers internally. For instance: if CRTC-1 and
    CRTC-2 are still enabled and use shared resources within the kernel (an
    MST topology, for example), and then userspace tries to go enable CRTC-3
    on the same topology this might suddenly fail if CRTC-3 needs the shared
    resources CRTC-1 and CRTC-2 are using. While I don't know of any
    situations in the mainline kernel that actually trigger this, future
    plans for reworking the atomic check of MST drivers are absolutely
    going to make this into a real issue (they already are in my WIP
    branches for the kernel).
    
    So: actually do the right thing here and disable CRTCs when they're not
    going to be used anymore, even in legacy mode.
    Signed-off-by: Lyude Paul's avatarLyude Paul <lyude@redhat.com>
    7a44e8d4
Name
Last commit
Last update
Xext Loading commit data...
Xi Loading commit data...
composite Loading commit data...
config Loading commit data...
damageext Loading commit data...
dbe Loading commit data...
dix Loading commit data...
doc Loading commit data...
dri3 Loading commit data...
exa Loading commit data...
fb Loading commit data...
glamor Loading commit data...
glx Loading commit data...
hw Loading commit data...
include Loading commit data...
m4 Loading commit data...
man Loading commit data...
mi Loading commit data...
miext Loading commit data...
os Loading commit data...
present Loading commit data...
pseudoramiX Loading commit data...
randr Loading commit data...
record Loading commit data...
render Loading commit data...
test Loading commit data...
xfixes Loading commit data...
xkb Loading commit data...
.appveyor.yml Loading commit data...
.dir-locals.el Loading commit data...
.gitignore Loading commit data...
.gitlab-ci.yml Loading commit data...
.travis.yml Loading commit data...
COPYING Loading commit data...
Makefile.am Loading commit data...
README.md Loading commit data...
autogen.sh Loading commit data...
configure.ac Loading commit data...
devbook.am Loading commit data...
docbook.am Loading commit data...
manpages.am Loading commit data...
meson.build Loading commit data...
meson_options.txt Loading commit data...
xorg-server.m4 Loading commit data...
xorg-server.pc.in Loading commit data...
xserver.ent.in Loading commit data...