svn commit: r297128 - head/sys/dev/drm2/i915

Ed Maste emaste at FreeBSD.org
Mon Mar 21 00:59:32 UTC 2016


Author: emaste
Date: Mon Mar 21 00:59:30 2016
New Revision: 297128
URL: https://svnweb.freebsd.org/changeset/base/297128

Log:
  i915: disable GEN6_MBCTL write in gen6_init_clock_gating
  
  This write came from Linux commit b4ae3f22d238 which has been implicated
  in Sandy Bridge power consumption issues (albeit under different
  conditions on Linux). Disabling it restores normal power consumption on
  my Sandy Bridge laptop (Thinkpad X220).
  
  PR:		207889
  Reviewed by:	cem, dumbbell
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D5665

Modified:
  head/sys/dev/drm2/i915/intel_pm.c

Modified: head/sys/dev/drm2/i915/intel_pm.c
==============================================================================
--- head/sys/dev/drm2/i915/intel_pm.c	Mon Mar 21 00:52:24 2016	(r297127)
+++ head/sys/dev/drm2/i915/intel_pm.c	Mon Mar 21 00:59:30 2016	(r297128)
@@ -3672,9 +3672,39 @@ static void gen6_init_clock_gating(struc
 		   ILK_DPARBUNIT_CLOCK_GATE_ENABLE  |
 		   ILK_DPFDUNIT_CLOCK_GATE_ENABLE);
 
+
+#ifdef FREEBSD_WIP
+	/* NOTE Linux<->FreeBSD: Disable GEN6_MBCTL write.
+	 *
+	 * This arrived in Linux 3.6 in commit
+	 * b4ae3f22d238617ca11610b29fde16cf8c0bc6e0 and causes significantly
+	 * increased power consumption after kldloading i915kms.ko on FreeBSD
+	 * on (some) Sandy Bridge laptops. A Thinkpad X220 reported about 11W
+	 * after booting while idle at the vt(4) console and about double that
+	 * after loading the driver.
+	 *
+	 * There were reports in Linux of increased consumption after a suspend
+	 * and resume cycle due to that change.
+	 *
+	 * Linux bug reports:
+	 * https://bugs.freedesktop.org/show_bug.cgi?id=54089
+	 * https://bugzilla.kernel.org/show_bug.cgi?id=58971
+	 *
+	 * This suspend and resume issue is reportedly fixed in Linux with
+	 * commits 7dcd2677ea912573d9ed4bcd629b0023b2d11505 and
+	 * 7dcd2677ea912573d9ed4bcd629b0023b2d11505 (Linux 3.11). However, I
+	 * found that those changes did not help on FreeBSD, where increased
+	 * power consumption is observed after loading i915kms.ko without
+	 * suspending and resuming.
+	 *
+	 * This workaround should be removed after updating to a future Linux
+	 * i915 version and verifying normal power consumption on Sandy Bridge.
+	 */
+
 	/* WaMbcDriverBootEnable */
 	I915_WRITE(GEN6_MBCTL, I915_READ(GEN6_MBCTL) |
 		   GEN6_MBCTL_ENABLE_BOOT_FETCH);
+#endif /* FREEBSD_WIP */
 
 	for_each_pipe(pipe) {
 		I915_WRITE(DSPCNTR(pipe),


More information about the svn-src-head mailing list