• Imre Deak's avatar
    drm/i915: Prevent modesets during driver init/shutdown · bd738d85
    Imre Deak authored
    An unexpected modeset or connector detection by a user (user space or FB
    console) during the initialization/shutdown sequence is possible either
    via a hotplug IRQ handling work or via the connector sysfs
    (status/detect) interface. These modesets/detections should be prevented
    by disabling/flushing all related hotplug handling work and
    unregistering the interfaces that can start them at the beginning of the
    shutdown sequence. Some of this - disabling all related intel_hotplug
    work - will be done by the next patch, but others - for instance
    disabling the MST hotplug works - require a bigger rework.
    
    It makes sense - for diagnostic purpose, even with all the above work and
    interface disabled - to detect and reject any such user access. This
    patch does that for modeset accesses and a follow-up patch for connector
    detection.
    
    During driver loading/unloading/system suspend/shutdown and during
    system resume after calling intel_display_driver_disable_user_access()
    or intel_display_driver_resume_access() correspondigly, the current
    thread is allowed to modeset (as this thread requires to do an
    initial/restoring modeset or a disabling modeset), other threads (the
    user threads) are not allowed to modeset.
    
    During driver loading/system resume after calling
    intel_display_driver_enable_user_access() all threads are allowed to
    modeset.
    
    During driver unloading/system suspend/shutdown after calling
    intel_display_driver_suspend_access() no threads are allowed to modeset
    (as the HW got disabled and should stay in this state).
    
    v2: Call intel_display_driver_suspend_access()/resume_access() only
        for HAS_DISPLAY(). (CI)
    v3: (Jouni)
    - Add commit log comments explaining how the permission of modeset
      changes during HW init/deinit wrt. to the current and other user
      processes.
    
    Link: https://patchwork.freedesktop.org/patch/msgid/20240104132335.2766434-1-imre.deak@intel.comReviewed-by: default avatarJouni Högander <jouni.hogander@intel.com>
    Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
    bd738d85
intel_display_driver.h 1.72 KB