rpms/kernel/devel drm-intel-pm.patch, 1.1, 1.2 kernel.spec, 1.1675, 1.1676

Matthew Garrett mjg59 at fedoraproject.org
Thu Jul 30 20:43:31 UTC 2009


Author: mjg59

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv26268

Modified Files:
	drm-intel-pm.patch kernel.spec 
Log Message:
* Thu Jul 30 2009 Matthew Garrett <mjg at redhat.com>
- drm-intel-pm.patch: Don't reclock external outputs. Increase the reduced
   clock slightly to avoid upsetting some hardware. Disable renderclock
   adjustment for the moment - it's breaking on some hardware.


drm-intel-pm.patch:
 linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/i915_drv.h.orig      |only
 linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/i915_reg.h.orig      |only
 linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/intel_display.c.orig |only
 linux-2.6.30.noarch/drivers/gpu/drm/i915/i915_drv.c                |   15 
 linux-2.6.30.noarch/drivers/gpu/drm/i915/i915_drv.h                |   14 
 linux-2.6.30.noarch/drivers/gpu/drm/i915/i915_gem.c                |    8 
 linux-2.6.30.noarch/drivers/gpu/drm/i915/i915_reg.h                |   22 
 linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_display.c           |  483 +++++++++-
 linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_drv.h               |    4 
 9 files changed, 511 insertions(+), 35 deletions(-)

Index: drm-intel-pm.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/drm-intel-pm.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- drm-intel-pm.patch	27 Jul 2009 02:22:56 -0000	1.1
+++ drm-intel-pm.patch	30 Jul 2009 20:43:31 -0000	1.2
@@ -1,19 +1,31 @@
 diff -ur linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/i915_drv.c linux-2.6.30.noarch/drivers/gpu/drm/i915/i915_drv.c
---- linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/i915_drv.c	2009-07-27 03:06:09.000000000 +0100
-+++ linux-2.6.30.noarch/drivers/gpu/drm/i915/i915_drv.c	2009-07-27 03:11:18.000000000 +0100
-@@ -43,6 +43,9 @@
+--- linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/i915_drv.c	2009-07-30 21:32:05.000000000 +0100
++++ linux-2.6.30.noarch/drivers/gpu/drm/i915/i915_drv.c	2009-07-30 21:29:34.000000000 +0100
+@@ -43,6 +43,21 @@
  unsigned int i915_fbpercrtc = 0;
  module_param_named(fbpercrtc, i915_fbpercrtc, int, 0400);
  
 +unsigned int i915_powersave = 1;
 +module_param_named(powersave, i915_powersave, int, 0400);
 +
++unsigned int i915_lvdsclock = 1;
++module_param_named(lvdsclock, i915_lvdsclock, int, 0400);
++
++unsigned int i915_lvdsscale = 85;
++module_param_named(lvdsscale, i915_lvdsscale, int, 0400);
++
++unsigned int i915_displayclock = 1;
++module_param_named(displayclock, i915_displayclock, int, 0600);
++
++unsigned int i915_renderclock = 0;
++module_param_named(renderclock, i915_renderclock, int, 0600);
++
  static struct drm_driver driver;
  
  static struct pci_device_id pciidlist[] = {
 diff -ur linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/i915_drv.h linux-2.6.30.noarch/drivers/gpu/drm/i915/i915_drv.h
---- linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/i915_drv.h	2009-07-27 02:59:58.000000000 +0100
-+++ linux-2.6.30.noarch/drivers/gpu/drm/i915/i915_drv.h	2009-07-27 03:11:18.000000000 +0100
+--- linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/i915_drv.h	2009-07-30 21:32:05.000000000 +0100
++++ linux-2.6.30.noarch/drivers/gpu/drm/i915/i915_drv.h	2009-07-30 21:29:34.000000000 +0100
 @@ -436,6 +436,12 @@
  		struct drm_i915_gem_phys_object *phys_objs[I915_MAX_PHYS_OBJECT];
  	} mm;
@@ -27,15 +39,19 @@ diff -ur linux-2.6.30.noarch.orig/driver
  } drm_i915_private_t;
  
  /** driver private structure attached to each drm_gem_object */
-@@ -565,6 +571,7 @@
+@@ -565,6 +571,11 @@
  extern struct drm_ioctl_desc i915_ioctls[];
  extern int i915_max_ioctl;
  extern unsigned int i915_fbpercrtc;
 +extern unsigned int i915_powersave;
++extern unsigned int i915_lvdsclock;
++extern unsigned int i915_lvdsscale;
++extern unsigned int i915_displayclock;
++extern unsigned int i915_renderclock;
  
  extern int i915_master_create(struct drm_device *dev, struct drm_master *master);
  extern void i915_master_destroy(struct drm_device *dev, struct drm_master *master);
-@@ -892,6 +899,9 @@
+@@ -893,6 +904,9 @@
  /* dsparb controlled by hw only */
  #define DSPARB_HWCONTROL(dev) (IS_G4X(dev) || IS_IGDNG(dev))
  
@@ -45,9 +61,10 @@ diff -ur linux-2.6.30.noarch.orig/driver
  #define PRIMARY_RINGBUFFER_SIZE         (128*1024)
  
  #endif
+Only in linux-2.6.30.noarch.orig/drivers/gpu/drm/i915: i915_drv.h.orig
 diff -ur linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/i915_gem.c linux-2.6.30.noarch/drivers/gpu/drm/i915/i915_gem.c
---- linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/i915_gem.c	2009-07-27 03:06:09.000000000 +0100
-+++ linux-2.6.30.noarch/drivers/gpu/drm/i915/i915_gem.c	2009-07-27 03:11:18.000000000 +0100
+--- linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/i915_gem.c	2009-07-30 21:32:05.000000000 +0100
++++ linux-2.6.30.noarch/drivers/gpu/drm/i915/i915_gem.c	2009-07-30 21:29:34.000000000 +0100
 @@ -29,6 +29,7 @@
  #include "drm.h"
  #include "i915_drm.h"
@@ -87,9 +104,9 @@ diff -ur linux-2.6.30.noarch.orig/driver
  	DRM_INFO("%s: object %p read %08x -> %08x write %08x -> %08x\n",
  		 __func__, obj,
 diff -ur linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/i915_reg.h linux-2.6.30.noarch/drivers/gpu/drm/i915/i915_reg.h
---- linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/i915_reg.h	2009-07-27 02:59:58.000000000 +0100
-+++ linux-2.6.30.noarch/drivers/gpu/drm/i915/i915_reg.h	2009-07-27 03:11:18.000000000 +0100
-@@ -55,7 +55,7 @@
+--- linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/i915_reg.h	2009-07-30 21:32:05.000000000 +0100
++++ linux-2.6.30.noarch/drivers/gpu/drm/i915/i915_reg.h	2009-07-30 21:29:34.000000000 +0100
+@@ -56,7 +56,7 @@
  /* PCI config space */
  
  #define HPLLCC	0xc0 /* 855 only */
@@ -98,7 +115,7 @@ diff -ur linux-2.6.30.noarch.orig/driver
  #define   GC_CLOCK_133_200		(0 << 0)
  #define   GC_CLOCK_100_200		(1 << 0)
  #define   GC_CLOCK_100_133		(2 << 0)
-@@ -65,6 +65,25 @@
+@@ -66,6 +66,25 @@
  #define   GC_DISPLAY_CLOCK_190_200_MHZ	(0 << 4)
  #define   GC_DISPLAY_CLOCK_333_MHZ	(4 << 4)
  #define   GC_DISPLAY_CLOCK_MASK		(7 << 4)
@@ -124,7 +141,7 @@ diff -ur linux-2.6.30.noarch.orig/driver
  #define LBB	0xf4
  
  /* VGA stuff */
-@@ -1569,6 +1588,7 @@
+@@ -1570,6 +1589,7 @@
  #define   PIPECONF_PROGRESSIVE	(0 << 21)
  #define   PIPECONF_INTERLACE_W_FIELD_INDICATION	(6 << 21)
  #define   PIPECONF_INTERLACE_FIELD_0_ONLY		(7 << 21)
@@ -132,9 +149,10 @@ diff -ur linux-2.6.30.noarch.orig/driver
  #define PIPEASTAT		0x70024
  #define   PIPE_FIFO_UNDERRUN_STATUS		(1UL<<31)
  #define   PIPE_CRC_ERROR_ENABLE			(1UL<<29)
+Only in linux-2.6.30.noarch.orig/drivers/gpu/drm/i915: i915_reg.h.orig
 diff -ur linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/intel_display.c linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_display.c
---- linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/intel_display.c	2009-07-27 03:06:09.000000000 +0100
-+++ linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_display.c	2009-07-27 03:12:17.000000000 +0100
+--- linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/intel_display.c	2009-07-30 21:32:05.000000000 +0100
++++ linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_display.c	2009-07-30 21:29:34.000000000 +0100
 @@ -36,6 +36,7 @@
  
  bool intel_pipe_has_type (struct drm_crtc *crtc, int type);
@@ -452,10 +470,10 @@ diff -ur linux-2.6.30.noarch.orig/driver
  		return -EINVAL;
  	}
  
-+	if (limit->find_reduced_pll) {
++	if (limit->find_reduced_pll && is_lvds) {
 +		memcpy(&reduced_clock, &clock, sizeof(intel_clock_t));
 +		has_reduced_clock = limit->find_reduced_pll(limit, crtc,
-+							    (adjusted_mode->clock*3/4),
++							    (adjusted_mode->clock*i915_lvdsscale/100),
 +							    refclk,
 +							    &reduced_clock);
 +	}
@@ -496,7 +514,7 @@ diff -ur linux-2.6.30.noarch.orig/driver
  		intel_dp_set_m_n(crtc, mode, adjusted_mode);
  
  	I915_WRITE(fp_reg, fp);
-+	if (has_reduced_clock && i915_powersave) {
++	if (has_reduced_clock && i915_powersave && i915_lvdsclock) {
 +		I915_WRITE(fp_reg + 4, fp2);
 +		intel_crtc->lowfreq_avail = true;
 +		if (HAS_PIPE_CXSR(dev)) {
@@ -536,7 +554,7 @@ diff -ur linux-2.6.30.noarch.orig/driver
  	if (x < 0) {
  		temp |= CURSOR_POS_SIGN << CURSOR_X_SHIFT;
  		x = -x;
-@@ -2813,6 +2920,271 @@
+@@ -2813,6 +2920,286 @@
  	return mode;
  }
  
@@ -559,6 +577,9 @@ diff -ur linux-2.6.30.noarch.orig/driver
 +{
 +	drm_i915_private_t *dev_priv = dev->dev_private;
 +
++	if (!i915_renderclock)
++		return;
++
 +	if (IS_G4X(dev) || IS_I9XX(dev)) {
 +		/* Up to maximum... */
 +		pci_write_config_word(dev->pdev, GCFGC, dev_priv->orig_clock);
@@ -577,6 +598,9 @@ diff -ur linux-2.6.30.noarch.orig/driver
 +
 +void intel_decrease_renderclock(struct drm_device *dev)
 +{
++	if (!i915_renderclock)
++		return;
++
 +	if (IS_G4X(dev)) {
 +		u16 gcfgc;
 +
@@ -641,6 +665,9 @@ diff -ur linux-2.6.30.noarch.orig/driver
 + */
 +void intel_decrease_displayclock(struct drm_device *dev)
 +{
++	if (!i915_displayclock)
++		return;
++
 +	if (IS_I945G(dev) || IS_I945GM(dev) || IS_I915G(dev) ||
 +	    IS_I915GM(dev)) {
 +		u16 gcfgc;
@@ -678,6 +705,9 @@ diff -ur linux-2.6.30.noarch.orig/driver
 +	int dpll_reg = (pipe == 0) ? DPLL_A : DPLL_B;
 +	int dpll = I915_READ(dpll_reg);
 +
++	if (!i915_lvdsclock)
++		return;
++
 +	if (!HAS_PIPE_CXSR(dev) && (dpll & DISPLAY_RATE_SELECT_FPA1)) {
 +		DRM_DEBUG("upclocking LVDS\n");
 +
@@ -708,6 +738,9 @@ diff -ur linux-2.6.30.noarch.orig/driver
 +	int dpll_reg = (pipe == 0) ? DPLL_A : DPLL_B;
 +	int dpll = I915_READ(dpll_reg);
 +
++	if (!i915_lvdsclock)
++		return;
++
 +	/*
 +	 * Since this is called by a timer, we should never get here in
 +	 * the manual case.
@@ -808,7 +841,7 @@ diff -ur linux-2.6.30.noarch.orig/driver
  static void intel_crtc_destroy(struct drm_crtc *crtc)
  {
  	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-@@ -2869,6 +3241,10 @@
+@@ -2869,6 +3256,10 @@
  	intel_crtc->mode_set.crtc = &intel_crtc->base;
  	intel_crtc->mode_set.connectors = (struct drm_connector **)(intel_crtc + 1);
  	intel_crtc->mode_set.num_connectors = 0;
@@ -819,7 +852,7 @@ diff -ur linux-2.6.30.noarch.orig/driver
  
  	if (i915_fbpercrtc) {
  
-@@ -3143,6 +3519,7 @@
+@@ -3143,6 +3534,7 @@
  
  void intel_modeset_init(struct drm_device *dev)
  {
@@ -827,7 +860,7 @@ diff -ur linux-2.6.30.noarch.orig/driver
  	int num_pipe;
  	int i;
  
-@@ -3174,15 +3551,38 @@
+@@ -3174,15 +3566,38 @@
  	DRM_DEBUG("%d display pipe%s available.\n",
  		  num_pipe, num_pipe > 1 ? "s" : "");
  
@@ -866,12 +899,10 @@ diff -ur linux-2.6.30.noarch.orig/driver
  	drm_mode_config_cleanup(dev);
  }
  
-Only in linux-2.6.30.noarch/drivers/gpu/drm/i915: intel_display.c~
-Only in linux-2.6.30.noarch/drivers/gpu/drm/i915: intel_display.c.orig
-Only in linux-2.6.30.noarch/drivers/gpu/drm/i915: intel_display.c.rej
+Only in linux-2.6.30.noarch.orig/drivers/gpu/drm/i915: intel_display.c.orig
 diff -ur linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/intel_drv.h linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_drv.h
---- linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/intel_drv.h	2009-07-27 02:59:58.000000000 +0100
-+++ linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_drv.h	2009-07-27 03:11:18.000000000 +0100
+--- linux-2.6.30.noarch.orig/drivers/gpu/drm/i915/intel_drv.h	2009-07-30 21:32:05.000000000 +0100
++++ linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_drv.h	2009-07-30 21:29:34.000000000 +0100
 @@ -98,6 +98,9 @@
  	struct intel_framebuffer *fbdev_fb;
  	/* a mode_set for fbdev users on this crtc */


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1675
retrieving revision 1.1676
diff -u -p -r1.1675 -r1.1676
--- kernel.spec	30 Jul 2009 15:48:44 -0000	1.1675
+++ kernel.spec	30 Jul 2009 20:43:31 -0000	1.1676
@@ -1933,6 +1933,11 @@ fi
 # and build.
 
 %changelog
+* Thu Jul 30 2009 Matthew Garrett <mjg at redhat.com>
+- drm-intel-pm.patch: Don't reclock external outputs. Increase the reduced
+   clock slightly to avoid upsetting some hardware. Disable renderclock
+   adjustment for the moment - it's breaking on some hardware.
+
 * Thu Jul 30 2009 Ben Skeggs <bskeggs at redhat.com>
 - nouveau: another DCB 1.5 entry, G80 corruption fixes, small <G80 KMS fix
 




More information about the fedora-extras-commits mailing list