2012/11/9 Rahul Sharma <rahul.sharma at samsung.com> > This patch is to preserve the display mode header during the mode > adjustment. > Display mode header is overwritten with the adjusted mode header which is > throwing the stack dump. > > Signed-off-by: Rahul Sharma <rahul.sharma at samsung.com> > --- > drivers/gpu/drm/exynos/exynos_hdmi.c | 8 ++++++++ > 1 files changed, 8 insertions(+), 0 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c > b/drivers/gpu/drm/exynos/exynos_hdmi.c > index ee110c9..c7844ea 100644 > --- a/drivers/gpu/drm/exynos/exynos_hdmi.c > +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c > @@ -1974,6 +1974,8 @@ static void hdmi_mode_fixup(void *ctx, struct > drm_connector *connector, > { > struct drm_display_mode *m; > struct hdmi_context *hdata = ctx; > + struct drm_mode_object base; > + struct list_head head; >
Remove base and head, > int index; > > DRM_DEBUG_KMS("[%d] %s\n", __LINE__, __func__); > @@ -2002,7 +2004,13 @@ static void hdmi_mode_fixup(void *ctx, struct > drm_connector *connector, > if (index >= 0) { > And declare them here. Thanks, Inki Dae > DRM_INFO("desired mode doesn't exist so\n"); > DRM_INFO("use the most suitable mode among > modes.\n"); > + > + /* preserve display mode header while copying. */ > + head = adjusted_mode->head; > + base = adjusted_mode->base; > memcpy(adjusted_mode, m, sizeof(*m)); > + adjusted_mode->head = head; > + adjusted_mode->base = base; > break; > } > } > -- > 1.7.0.4 > > _______________________________________________ > dri-devel mailing list > dri-devel at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20121114/66f05448/attachment.html>