public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
* [bisect] regression in suspend with i915 on 82852/855GM
@ 2015-06-23 22:26 Philipp Gesang
  2015-06-25  7:48 ` Jani Nikula
  0 siblings, 1 reply; 5+ messages in thread
From: Philipp Gesang @ 2015-06-23 22:26 UTC (permalink / raw)
  To: intel-gfx; +Cc: daniel.vetter


[-- Attachment #1.1.1: Type: text/plain, Size: 899 bytes --]

Hi,

suspend/resume results in the backlight not coming back to life
on my X40 laptop with an “Display controller: Intel Corporation
82852/855GM Integrated Graphics Device”.

I bisected the issue. Apparently, commit
b0cd324faed23d10d66ba6ade66579c681feef6f introduced the problem.

    Author: Jani Nikula <jani.nikula@intel.com>
    Date:   Wed Nov 12 16:25:43 2014 +0200

        drm/i915: don't save/restore backlight hist ctl registers

I can confirm that suspend works as expected with a 4.1 kernel if
the lines to dump/undump the BLC_HIST_CTL register are
reintroduced; see the attached patch. (According to a web search,
the same issue seems to have arisen before in 2009, see [1].)

Let me know if you’d like me to run further tests on that
particular hardware.

Best,
Philipp

[1] http://lists.freedesktop.org/archives/intel-gfx/2009-October/004490.html



[-- Attachment #1.1.2: 0001-drm-i915-save-and-restore-BLC_HIST_CTL-during-suspen.patch --]
[-- Type: text/x-diff, Size: 2036 bytes --]

From 2f5f519dd77cdd27f5a88413d8125fb23f6e526f Mon Sep 17 00:00:00 2001
From: Philipp Gesang <phg@phi-gamma.net>
Date: Tue, 23 Jun 2015 23:37:28 +0200
Subject: [PATCH] drm/i915: save and restore BLC_HIST_CTL during suspend/resume

This partially reverts b0cd324fae...

Without considering the BLC_HIST_CTL register the backlight on an IBM
X40 (855GM) remains dark after suspend/resume. Include its value again
with the saved registers.

Signed-off-by: Philipp Gesang <phg@phi-gamma.net>
---
 drivers/gpu/drm/i915/i915_drv.h     | 1 +
 drivers/gpu/drm/i915/i915_suspend.c | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 8ae6f7f..f68e0b5 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -925,6 +925,7 @@ struct i915_suspend_saved_registers {
 	u32 savePP_OFF;
 	u32 savePP_CONTROL;
 	u32 savePP_DIVISOR;
+	u32 saveBLC_HIST_CTL;
 	u32 saveFBC_CONTROL;
 	u32 saveCACHE_MODE_0;
 	u32 saveMI_ARB_STATE;
diff --git a/drivers/gpu/drm/i915/i915_suspend.c b/drivers/gpu/drm/i915/i915_suspend.c
index cf67f82..f417744 100644
--- a/drivers/gpu/drm/i915/i915_suspend.c
+++ b/drivers/gpu/drm/i915/i915_suspend.c
@@ -54,6 +54,7 @@ static void i915_save_display(struct drm_device *dev)
 		dev_priv->regfile.savePP_ON_DELAYS = I915_READ(PP_ON_DELAYS);
 		dev_priv->regfile.savePP_OFF_DELAYS = I915_READ(PP_OFF_DELAYS);
 		dev_priv->regfile.savePP_DIVISOR = I915_READ(PP_DIVISOR);
+		dev_priv->regfile.saveBLC_HIST_CTL = I915_READ(BLC_HIST_CTL);
 	}
 
 	/* save FBC interval */
@@ -89,6 +90,7 @@ static void i915_restore_display(struct drm_device *dev)
 		I915_WRITE(PP_OFF_DELAYS, dev_priv->regfile.savePP_OFF_DELAYS);
 		I915_WRITE(PP_DIVISOR, dev_priv->regfile.savePP_DIVISOR);
 		I915_WRITE(PP_CONTROL, dev_priv->regfile.savePP_CONTROL);
+		I915_WRITE(BLC_HIST_CTL, dev_priv->regfile.saveBLC_HIST_CTL);
 	}
 
 	/* only restore FBC info on the platform that supports FBC*/
-- 
2.4.2


[-- Attachment #1.2: Type: application/pgp-signature, Size: 819 bytes --]

[-- Attachment #2: Type: text/plain, Size: 159 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [bisect] regression in suspend with i915 on 82852/855GM
  2015-06-23 22:26 [bisect] regression in suspend with i915 on 82852/855GM Philipp Gesang
@ 2015-06-25  7:48 ` Jani Nikula
  2015-06-25 20:38   ` Philipp Gesang
  0 siblings, 1 reply; 5+ messages in thread
From: Jani Nikula @ 2015-06-25  7:48 UTC (permalink / raw)
  To: Philipp Gesang, intel-gfx; +Cc: daniel.vetter

On Wed, 24 Jun 2015, Philipp Gesang <phg@phi-gamma.net> wrote:
> Hi,
>
> suspend/resume results in the backlight not coming back to life
> on my X40 laptop with an “Display controller: Intel Corporation
> 82852/855GM Integrated Graphics Device”.
>
> I bisected the issue. Apparently, commit
> b0cd324faed23d10d66ba6ade66579c681feef6f introduced the problem.
>
>     Author: Jani Nikula <jani.nikula@intel.com>
>     Date:   Wed Nov 12 16:25:43 2014 +0200
>
>         drm/i915: don't save/restore backlight hist ctl registers
>
> I can confirm that suspend works as expected with a 4.1 kernel if
> the lines to dump/undump the BLC_HIST_CTL register are
> reintroduced; see the attached patch. (According to a web search,
> the same issue seems to have arisen before in 2009, see [1].)
>
> Let me know if you’d like me to run further tests on that
> particular hardware.

Please run 'intel_reg read 0x61260' after resume both on the patched and
unpatched kernel to see what the hardware wants. The tool is in the
intel-gpu-tools package [1].

BR,
Jani.

[1] http://cgit.freedesktop.org/xorg/app/intel-gpu-tools/

>
> Best,
> Philipp
>
> [1] http://lists.freedesktop.org/archives/intel-gfx/2009-October/004490.html
>
>
> From 2f5f519dd77cdd27f5a88413d8125fb23f6e526f Mon Sep 17 00:00:00 2001
> From: Philipp Gesang <phg@phi-gamma.net>
> Date: Tue, 23 Jun 2015 23:37:28 +0200
> Subject: [PATCH] drm/i915: save and restore BLC_HIST_CTL during suspend/resume
>
> This partially reverts b0cd324fae...
>
> Without considering the BLC_HIST_CTL register the backlight on an IBM
> X40 (855GM) remains dark after suspend/resume. Include its value again
> with the saved registers.
>
> Signed-off-by: Philipp Gesang <phg@phi-gamma.net>
> ---
>  drivers/gpu/drm/i915/i915_drv.h     | 1 +
>  drivers/gpu/drm/i915/i915_suspend.c | 2 ++
>  2 files changed, 3 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 8ae6f7f..f68e0b5 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -925,6 +925,7 @@ struct i915_suspend_saved_registers {
>  	u32 savePP_OFF;
>  	u32 savePP_CONTROL;
>  	u32 savePP_DIVISOR;
> +	u32 saveBLC_HIST_CTL;
>  	u32 saveFBC_CONTROL;
>  	u32 saveCACHE_MODE_0;
>  	u32 saveMI_ARB_STATE;
> diff --git a/drivers/gpu/drm/i915/i915_suspend.c b/drivers/gpu/drm/i915/i915_suspend.c
> index cf67f82..f417744 100644
> --- a/drivers/gpu/drm/i915/i915_suspend.c
> +++ b/drivers/gpu/drm/i915/i915_suspend.c
> @@ -54,6 +54,7 @@ static void i915_save_display(struct drm_device *dev)
>  		dev_priv->regfile.savePP_ON_DELAYS = I915_READ(PP_ON_DELAYS);
>  		dev_priv->regfile.savePP_OFF_DELAYS = I915_READ(PP_OFF_DELAYS);
>  		dev_priv->regfile.savePP_DIVISOR = I915_READ(PP_DIVISOR);
> +		dev_priv->regfile.saveBLC_HIST_CTL = I915_READ(BLC_HIST_CTL);
>  	}
>  
>  	/* save FBC interval */
> @@ -89,6 +90,7 @@ static void i915_restore_display(struct drm_device *dev)
>  		I915_WRITE(PP_OFF_DELAYS, dev_priv->regfile.savePP_OFF_DELAYS);
>  		I915_WRITE(PP_DIVISOR, dev_priv->regfile.savePP_DIVISOR);
>  		I915_WRITE(PP_CONTROL, dev_priv->regfile.savePP_CONTROL);
> +		I915_WRITE(BLC_HIST_CTL, dev_priv->regfile.saveBLC_HIST_CTL);
>  	}
>  
>  	/* only restore FBC info on the platform that supports FBC*/
> -- 
> 2.4.2
>

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [bisect] regression in suspend with i915 on 82852/855GM
  2015-06-25  7:48 ` Jani Nikula
@ 2015-06-25 20:38   ` Philipp Gesang
  2015-06-25 21:07     ` Jani Nikula
  0 siblings, 1 reply; 5+ messages in thread
From: Philipp Gesang @ 2015-06-25 20:38 UTC (permalink / raw)
  To: Jani Nikula; +Cc: daniel.vetter, intel-gfx


[-- Attachment #1.1: Type: text/plain, Size: 1500 bytes --]

···<date: 2015-06-25, Thursday>···<from: Jani Nikula>···

> On Wed, 24 Jun 2015, Philipp Gesang <phg@phi-gamma.net> wrote:
> > Hi,
> >
> > suspend/resume results in the backlight not coming back to life
> > on my X40 laptop with an “Display controller: Intel Corporation
> > 82852/855GM Integrated Graphics Device”.
> >
> > I bisected the issue. Apparently, commit
> > b0cd324faed23d10d66ba6ade66579c681feef6f introduced the problem.
> >
> >     Author: Jani Nikula <jani.nikula@intel.com>
> >     Date:   Wed Nov 12 16:25:43 2014 +0200
> >
> >         drm/i915: don't save/restore backlight hist ctl registers
> >
> > I can confirm that suspend works as expected with a 4.1 kernel if
> > the lines to dump/undump the BLC_HIST_CTL register are
> > reintroduced; see the attached patch. (According to a web search,
> > the same issue seems to have arisen before in 2009, see [1].)
> >
> > Let me know if you’d like me to run further tests on that
> > particular hardware.
> 
> Please run 'intel_reg read 0x61260' after resume both on the patched and
> unpatched kernel to see what the hardware wants. The tool is in the
> intel-gpu-tools package [1].

Nice tool. With a vanilla kernel I get a value of 0x80000000
before suspend and 0x00000000 after resume. With the patched
kernel it’s 0x80000000 before and after.

On the vanilla kernel, issuing ``intel_reg write 0x61260 0x80000000`` 
after resume turns the backlight back on.

Best,
Philipp


[-- Attachment #1.2: Type: application/pgp-signature, Size: 819 bytes --]

[-- Attachment #2: Type: text/plain, Size: 159 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [bisect] regression in suspend with i915 on 82852/855GM
  2015-06-25 20:38   ` Philipp Gesang
@ 2015-06-25 21:07     ` Jani Nikula
  2015-06-25 22:22       ` Philipp Gesang
  0 siblings, 1 reply; 5+ messages in thread
From: Jani Nikula @ 2015-06-25 21:07 UTC (permalink / raw)
  To: Philipp Gesang; +Cc: daniel.vetter, intel-gfx

On Thu, 25 Jun 2015, Philipp Gesang <phg@phi-gamma.net> wrote:
> Nice tool. With a vanilla kernel I get a value of 0x80000000
> before suspend and 0x00000000 after resume. With the patched
> kernel it’s 0x80000000 before and after.
>
> On the vanilla kernel, issuing ``intel_reg write 0x61260 0x80000000`` 
> after resume turns the backlight back on.

Please try this patch:

From 018c3dab349b9ba82364ea6e7257d1bbad3df2ae Mon Sep 17 00:00:00 2001
From: Jani Nikula <jani.nikula@intel.com>
Date: Thu, 25 Jun 2015 23:55:06 +0300
Subject: [PATCH] drm/i915: fix backlight on gen2
Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo
Cc: Jani Nikula <jani.nikula@intel.com>

Some 855gm models (at least ThinkPad X40) regressed because of

commit b0cd324faed23d10d66ba6ade66579c681feef6f
Author: Jani Nikula <jani.nikula@intel.com>
Date:   Wed Nov 12 16:25:43 2014 +0200

    drm/i915: don't save/restore backlight hist ctl registers

which tried to make our driver more robust by not blindly saving and
restoring registers, but it failed to take into account

commit 0eb96d6ed38430b72897adde58f5477a6b71757a
Author: Jesse Barnes <jbarnes@virtuousgeek.org>
Date:   Wed Oct 14 12:33:41 2009 -0700

    drm/i915: save/restore BLC histogram control reg across suspend/resume

Fix the regression by enabling hist ctl on gen2.

Reported-by: Philipp Gesang <phg@phi-gamma.net>
References: http://mid.gmane.org/20150623222648.GD12335@acheron
Fixes: b0cd324faed2 ("drm/i915: don't save/restore backlight hist ctl registers")
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h    | 1 +
 drivers/gpu/drm/i915/intel_panel.c | 4 ++++
 2 files changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index fa9ccb87eb66..bf7c08b94088 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -3507,6 +3507,7 @@ enum skl_disp_power_wells {
 #define   BLM_POLARITY_PNV			(1 << 0) /* pnv only */
 
 #define BLC_HIST_CTL	(dev_priv->info.display_mmio_offset + 0x61260)
+#define  BLM_HISTOGRAM_ENABLE			(1 << 31)
 
 /* New registers for PCH-split platforms. Safe where new bits show up, the
  * register layout machtes with gen4 BLC_PWM_CTL[12]. */
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index 7d83527f95f7..c4d884d9e223 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -907,6 +907,10 @@ static void i9xx_enable_backlight(struct intel_connector *connector)
 
 	/* XXX: combine this into above write? */
 	intel_panel_actually_set_backlight(connector, panel->backlight.level);
+
+	/* Needed to enable backlight. */
+	if (IS_GEN2(dev))
+		I915_WRITE(BLC_HIST_CTL, BLM_HISTOGRAM_ENABLE);
 }
 
 static void i965_enable_backlight(struct intel_connector *connector)
-- 
2.1.4



-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [bisect] regression in suspend with i915 on 82852/855GM
  2015-06-25 21:07     ` Jani Nikula
@ 2015-06-25 22:22       ` Philipp Gesang
  0 siblings, 0 replies; 5+ messages in thread
From: Philipp Gesang @ 2015-06-25 22:22 UTC (permalink / raw)
  To: Jani Nikula; +Cc: daniel.vetter, intel-gfx


[-- Attachment #1.1: Type: text/plain, Size: 895 bytes --]

···<date: 2015-06-26, Friday>···<from: Jani Nikula>···

> On Thu, 25 Jun 2015, Philipp Gesang <phg@phi-gamma.net> wrote:
> > Nice tool. With a vanilla kernel I get a value of 0x80000000
> > before suspend and 0x00000000 after resume. With the patched
> > kernel it’s 0x80000000 before and after.
> >
> > On the vanilla kernel, issuing ``intel_reg write 0x61260 0x80000000`` 
> > after resume turns the backlight back on.
> 
> Please try this patch:
> 
> From 018c3dab349b9ba82364ea6e7257d1bbad3df2ae Mon Sep 17 00:00:00 2001
> From: Jani Nikula <jani.nikula@intel.com>
> Date: Thu, 25 Jun 2015 23:55:06 +0300
> Subject: [PATCH] drm/i915: fix backlight on gen2
> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo
> Cc: Jani Nikula <jani.nikula@intel.com>

Tested based on kernel aefbef10e3…. Works great, thanks!

Best,
Philipp



[-- Attachment #1.2: Type: application/pgp-signature, Size: 819 bytes --]

[-- Attachment #2: Type: text/plain, Size: 159 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-06-25 22:22 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-06-23 22:26 [bisect] regression in suspend with i915 on 82852/855GM Philipp Gesang
2015-06-25  7:48 ` Jani Nikula
2015-06-25 20:38   ` Philipp Gesang
2015-06-25 21:07     ` Jani Nikula
2015-06-25 22:22       ` Philipp Gesang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox