On Thu, Jul 11, 2013 at 06:45:04PM -0300, Rodrigo Vivi wrote: > +static void intel_edp_psr_delayed_normal_work(struct work_struct *__work) > +{ > + struct intel_dp *intel_dp = container_of(to_delayed_work(__work), > + struct intel_dp, > + edp_psr_delayed_normal_work); > + struct drm_device *dev = intel_dp_to_dev(intel_dp); > + struct drm_i915_private *dev_priv = dev->dev_private; > + > + mutex_lock(&intel_dp->psr_exit_mutex); > + I915_WRITE(EDP_PSR_DEBUG_CTL, I915_READ(EDP_PSR_DEBUG_CTL) & > + ~EDP_PSR_DEBUG_FORCE_EXIT); > + mutex_unlock(&intel_dp->psr_exit_mutex); Note that mutex_unlock is not necessarily a write-barrier. We may presume that it uses a locked instruction somewhere in its implementation, but if you use a POSTING_READ all doubt is removed and the intent made clear. -Chris -- Chris Wilson, Intel Open Source Technology Centre