return memcmp(a, b, sizeof(*a)) == 0;
 }
 
+static bool
+intel_compare_dp_vsc_sdp(const struct drm_dp_vsc_sdp *a,
+                        const struct drm_dp_vsc_sdp *b)
+{
+       return memcmp(a, b, sizeof(*a)) == 0;
+}
+
 static void
 pipe_config_infoframe_mismatch(struct drm_i915_private *dev_priv,
                               bool fastset, const char *name,
        }
 }
 
+static void
+pipe_config_dp_vsc_sdp_mismatch(struct drm_i915_private *dev_priv,
+                               bool fastset, const char *name,
+                               const struct drm_dp_vsc_sdp *a,
+                               const struct drm_dp_vsc_sdp *b)
+{
+       if (fastset) {
+               if (!drm_debug_enabled(DRM_UT_KMS))
+                       return;
+
+               drm_dbg_kms(&dev_priv->drm,
+                           "fastset mismatch in %s dp sdp\n", name);
+               drm_dbg_kms(&dev_priv->drm, "expected:\n");
+               drm_dp_vsc_sdp_log(KERN_DEBUG, dev_priv->drm.dev, a);
+               drm_dbg_kms(&dev_priv->drm, "found:\n");
+               drm_dp_vsc_sdp_log(KERN_DEBUG, dev_priv->drm.dev, b);
+       } else {
+               drm_err(&dev_priv->drm, "mismatch in %s dp sdp\n", name);
+               drm_err(&dev_priv->drm, "expected:\n");
+               drm_dp_vsc_sdp_log(KERN_ERR, dev_priv->drm.dev, a);
+               drm_err(&dev_priv->drm, "found:\n");
+               drm_dp_vsc_sdp_log(KERN_ERR, dev_priv->drm.dev, b);
+       }
+}
+
 static void __printf(4, 5)
 pipe_config_mismatch(bool fastset, const struct intel_crtc *crtc,
                     const char *name, const char *format, ...)
        } \
 } while (0)
 
+#define PIPE_CONF_CHECK_DP_VSC_SDP(name) do { \
+       if (!current_config->has_psr && !pipe_config->has_psr && \
+           !intel_compare_dp_vsc_sdp(¤t_config->infoframes.name, \
+                                     &pipe_config->infoframes.name)) { \
+               pipe_config_dp_vsc_sdp_mismatch(dev_priv, fastset, __stringify(name), \
+                                               ¤t_config->infoframes.name, \
+                                               &pipe_config->infoframes.name); \
+               ret = false; \
+       } \
+} while (0)
+
 #define PIPE_CONF_CHECK_COLOR_LUT(name1, name2, bit_precision) do { \
        if (current_config->name1 != pipe_config->name1) { \
                pipe_config_mismatch(fastset, crtc, __stringify(name1), \
        PIPE_CONF_CHECK_INFOFRAME(spd);
        PIPE_CONF_CHECK_INFOFRAME(hdmi);
        PIPE_CONF_CHECK_INFOFRAME(drm);
+       PIPE_CONF_CHECK_DP_VSC_SDP(vsc);
 
        PIPE_CONF_CHECK_X(sync_mode_slaves_mask);
        PIPE_CONF_CHECK_I(master_transcoder);