• Daniel Vetter's avatar
    drm/crtc-helper: don't disable disconnected outputs · e3d6ddb3
    Daniel Vetter authored
    This is the equivalent change in the crtc helpers as done to the i915
    modeset infrastructure in
    
    commit b0a2658a
    Author: Daniel Vetter <daniel.vetter@ffwll.ch>
    Date:   Tue Dec 18 09:37:54 2012 +0100
    
        drm/i915: don't disable disconnected outputs
    
    This was originally introduced to make encoder sharing on radone
    easier for userspace, but:
    
    - It is policy and as such belongs into userspace. E.g. personally I'm
      fairly annoyed that a flaky cable results in permanent changes of
      the desktop layout, so I'll kick out DEs which do this. Worse if the
      kernel also tries to be clever.
    
    - It's inconsistent: We only kill disconnected outputs on setCrtc
      (which userspace might also call when just changing the
      framebuffer), but not when e.g. we receive a hpd event or in the
      output poll worker.
    
    - It's unexpected behaviour for the userspace driver, at least in the
      intel ddx we've had tons of bugs where the driver fell over and
      killed the X session becuase pageflips/vblanks suddenly stopped
      working. We've had to fix this by wrapping every single setCrtc int
      a big "recover kms state from the kernel again" operation.
    
    - It's suprising for the kernel, too: It took a few mails between Rob,
      Matt and me for them to notice that little dragon wreaking havoc
      with the universal plane framebuffer refcounting.
    
    - Userspace can cope with it and e.g. Gnome already kills disconnected
      outputs and reconfigures the desktop automatically. And since there
      have been no regression reports for the i915 change from over 1 year
      ago I think all other DEs are also ready.
    
    Note that the lines removed in this patch go back to
    
    commit a3a0544b
    Author: Dave Airlie <airlied@redhat.com>
    Date:   Mon Aug 31 15:16:30 2009 +1000
    
        drm/kms: add explicit encoder disable function and detach harder.
    
    Unfortunately the patch itself doesn't explain a hole lot about why it
    was added ...
    
    Cc: Matt Roper <matthew.d.roper@intel.com>
    Cc: Rob Clark <robdclark@gmail.com>
    Cc: Dave Airlie <airlied@redhat.com>
    Cc: Alex Deucher <alexdeucher@gmail.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
    e3d6ddb3
drm_crtc_helper.c 37.2 KB