• Rodrigo Vivi's avatar
    drm/i915: Protect DDI port to DPLL map from theoretical race. · 8edcda12
    Rodrigo Vivi authored
    In case we have multiple modesets for different connectors
    happening in parallel we could have a race on the RMW on these
    shared registers.
    
    This possibility was initially raised by Paulo when reviewing
    commit '555e38d2 ("drm/i915/cnl: DDI - PLL mapping")'
    but the original possibility comes from commit '5416d871
    ("drm/i915/skl: Set the eDP link rate on DPLL0")'. Or maybe
    later when atomic commits entered into picture.
    
    Apparently the discussion around this topic showed that the
    right solution would be on serializing the atomic commits in
    a way that we don't have the possibility of races here since
    if that parallel modeset happenings apparently many other
    things will be on fire.
    
    Code is there since SKL and there was no report of issue,
    but since we never looked back to that serialization possibility,
    and also we don't have an igt case for that it is better to at
    least protect this corner.
    Suggested-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
    Fixes: 555e38d2 ("drm/i915/cnl: DDI - PLL mapping")
    Fixes: 5416d871 ("drm/i915/skl: Set the eDP link rate on DPLL0")
    Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Maarten Lankhorst maarten.lankhorst@linux.intel.com
    Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    Reviewed-by: Maarten Lankhorst maarten.lankhorst@linux.intel.com
    Link: https://patchwork.freedesktop.org/patch/msgid/20171215224310.19103-1-rodrigo.vivi@intel.com
    8edcda12
intel_ddi.c 87.2 KB