Message ID | 1352462882-5515-1-git-send-email-rahul.sharma@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
2012/11/9 Rahul Sharma <rahul.sharma@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@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@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel >
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; 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) { 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; } }
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@samsung.com> --- drivers/gpu/drm/exynos/exynos_hdmi.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)