[kernel] r16196 - in dists/sid/linux-2.6/debian: . patches/bugfix/all patches/bugfix/x86 patches/series

Ben Hutchings benh at alioth.debian.org
Sat Aug 28 23:38:30 UTC 2010


Author: benh
Date: Sat Aug 28 23:38:28 2010
New Revision: 16196

Log:
Add drm changes from stable 2.6.34.6

Added:
   dists/sid/linux-2.6/debian/patches/bugfix/all/drm-radeon-kms-DCE3-switch-pads-to-ddc-mode-when-goi.patch
   dists/sid/linux-2.6/debian/patches/bugfix/all/drm-radeon-kms-add-additional-quirk-for-Acer-rv620-l.patch
   dists/sid/linux-2.6/debian/patches/bugfix/all/drm-radeon-kms-disable-MSI-on-IGP-chips.patch
   dists/sid/linux-2.6/debian/patches/bugfix/all/drm-radeon-kms-don-t-enable-MSIs-on-AGP-boards.patch
   dists/sid/linux-2.6/debian/patches/bugfix/all/drm-radeon-kms-fix-sideport-detection-on-newer-rs880.patch
   dists/sid/linux-2.6/debian/patches/bugfix/all/drm-radeon-kms-fix-typo-in-radeon_compute_pll_gain.patch
   dists/sid/linux-2.6/debian/patches/bugfix/all/drm-stop-information-leak-of-old-kernel-stack.patch
   dists/sid/linux-2.6/debian/patches/bugfix/x86/drm-i915-edp-Flush-the-write-before-waiting-for-PLLs.patch
   dists/sid/linux-2.6/debian/patches/bugfix/x86/drm-i915-fixup-pageflip-ringbuffer-commands-for-i8xx.patch
   dists/sid/linux-2.6/debian/patches/bugfix/x86/drm-i915-i8xx-also-doesn-t-like-multiple-oustanding-.patch
Modified:
   dists/sid/linux-2.6/debian/changelog
   dists/sid/linux-2.6/debian/patches/series/22

Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog	Sat Aug 28 21:48:41 2010	(r16195)
+++ dists/sid/linux-2.6/debian/changelog	Sat Aug 28 23:38:28 2010	(r16196)
@@ -9,6 +9,8 @@
     - ext4: consolidate in_range() definitions (CVE-2010-3015)
     - mm: make the mlock() stack guard page checks stricter
       (avoids regression for Xen tools)
+  * Add drm changes from stable 2.6.34.6:
+    - drm: stop information leak of old kernel stack (CVE-2010-2803)
 
  -- Ben Hutchings <ben at decadent.org.uk>  Fri, 27 Aug 2010 08:38:26 +0100
 

Added: dists/sid/linux-2.6/debian/patches/bugfix/all/drm-radeon-kms-DCE3-switch-pads-to-ddc-mode-when-goi.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/drm-radeon-kms-DCE3-switch-pads-to-ddc-mode-when-goi.patch	Sat Aug 28 23:38:28 2010	(r16196)
@@ -0,0 +1,40 @@
+From c871b4b7e37c5a2c72d754273bd7280d7315e4cc Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexdeucher at gmail.com>
+Date: Thu, 19 Aug 2010 11:19:31 -0400
+Subject: [PATCH 08/10] drm/radeon/kms/DCE3+: switch pads to ddc mode when going i2c
+
+commit 5786e2c5a3f519647c50bbc276e45d36a704415a upstream.
+
+The pins for ddc and aux are shared so you need to switch the
+mode when doing ddc.  The ProcessAuxChannel table already sets
+the pin mode to DP.  This should fix unreliable ddc issues
+on DP ports using non-DP monitors.
+
+Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
+Signed-off-by: Dave Airlie <airlied at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
+---
+ drivers/gpu/drm/radeon/radeon_i2c.c |    7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/gpu/drm/radeon/radeon_i2c.c b/drivers/gpu/drm/radeon/radeon_i2c.c
+index da3da1e..753c6d2 100644
+--- a/drivers/gpu/drm/radeon/radeon_i2c.c
++++ b/drivers/gpu/drm/radeon/radeon_i2c.c
+@@ -81,6 +81,13 @@ void radeon_i2c_do_lock(struct radeon_i2c_chan *i2c, int lock_state)
+ 		}
+ 	}
+ 
++	/* switch the pads to ddc mode */
++	if (ASIC_IS_DCE3(rdev) && rec->hw_capable) {
++		temp = RREG32(rec->mask_clk_reg);
++		temp &= ~(1 << 16);
++		WREG32(rec->mask_clk_reg, temp);
++	}
++
+ 	/* clear the output pin values */
+ 	temp = RREG32(rec->a_clk_reg) & ~rec->a_clk_mask;
+ 	WREG32(rec->a_clk_reg, temp);
+-- 
+1.7.1
+

Added: dists/sid/linux-2.6/debian/patches/bugfix/all/drm-radeon-kms-add-additional-quirk-for-Acer-rv620-l.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/drm-radeon-kms-add-additional-quirk-for-Acer-rv620-l.patch	Sat Aug 28 23:38:28 2010	(r16196)
@@ -0,0 +1,59 @@
+From adf5b7f758880954195309961dca23aa2c6e30c3 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexdeucher at gmail.com>
+Date: Fri, 6 Aug 2010 00:27:44 -0400
+Subject: [PATCH 01/10] drm/radeon/kms: add additional quirk for Acer rv620 laptop
+
+commit 9ea2c4be978d597076ddc6c550557de5d243cea8 upstream.
+
+HPD pins are reversed
+
+Fixes:
+https://bugs.freedesktop.org/show_bug.cgi?id=29387
+
+Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
+Signed-off-by: Dave Airlie <airlied at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
+---
+ drivers/gpu/drm/radeon/radeon_atombios.c |   14 ++++++++++++--
+ 1 files changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c
+index e249933..1cb96e9 100644
+--- a/drivers/gpu/drm/radeon/radeon_atombios.c
++++ b/drivers/gpu/drm/radeon/radeon_atombios.c
+@@ -196,6 +196,7 @@ static bool radeon_atom_apply_quirks(struct drm_device *dev,
+ 				     uint16_t *line_mux,
+ 				     struct radeon_hpd *hpd)
+ {
++	struct radeon_device *rdev = dev->dev_private;
+ 
+ 	/* Asus M2A-VM HDMI board lists the DVI port as HDMI */
+ 	if ((dev->pdev->device == 0x791e) &&
+@@ -296,13 +297,22 @@ static bool radeon_atom_apply_quirks(struct drm_device *dev,
+ 		}
+ 	}
+ 
+-	/* Acer laptop reports DVI-D as DVI-I */
++	/* Acer laptop reports DVI-D as DVI-I and hpd pins reversed */
+ 	if ((dev->pdev->device == 0x95c4) &&
+ 	    (dev->pdev->subsystem_vendor == 0x1025) &&
+ 	    (dev->pdev->subsystem_device == 0x013c)) {
++		struct radeon_gpio_rec gpio;
++
+ 		if ((*connector_type == DRM_MODE_CONNECTOR_DVII) &&
+-		    (supported_device == ATOM_DEVICE_DFP1_SUPPORT))
++		    (supported_device == ATOM_DEVICE_DFP1_SUPPORT)) {
++			gpio = radeon_lookup_gpio(rdev, 6);
++			*hpd = radeon_atom_get_hpd_info_from_gpio(rdev, &gpio);
+ 			*connector_type = DRM_MODE_CONNECTOR_DVID;
++		} else if ((*connector_type == DRM_MODE_CONNECTOR_HDMIA) &&
++			   (supported_device == ATOM_DEVICE_DFP1_SUPPORT)) {
++			gpio = radeon_lookup_gpio(rdev, 7);
++			*hpd = radeon_atom_get_hpd_info_from_gpio(rdev, &gpio);
++		}
+ 	}
+ 
+ 	/* XFX Pine Group device rv730 reports no VGA DDC lines
+-- 
+1.7.1
+

Added: dists/sid/linux-2.6/debian/patches/bugfix/all/drm-radeon-kms-disable-MSI-on-IGP-chips.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/drm-radeon-kms-disable-MSI-on-IGP-chips.patch	Sat Aug 28 23:38:28 2010	(r16196)
@@ -0,0 +1,40 @@
+From 8adbf642885d1f65da204cf191f6aa3c23e13aa2 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexdeucher at gmail.com>
+Date: Tue, 30 Mar 2010 17:22:32 -0400
+Subject: [PATCH 05/10] drm/radeon/kms: disable MSI on IGP chips
+
+commit c414a117c6094c3f86b533f97beaf45ef9075f03 upstream.
+
+Doesn't seem to work reliably and the pci quirks don't
+always work.
+
+Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
+Signed-off-by: Dave Airlie <airlied at redhat.com>
+---
+ drivers/gpu/drm/radeon/radeon_irq_kms.c |    8 +++-----
+ 1 files changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c
+index 3cfd60f..e5b8f31 100644
+--- a/drivers/gpu/drm/radeon/radeon_irq_kms.c
++++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c
+@@ -116,13 +116,11 @@ int radeon_irq_kms_init(struct radeon_device *rdev)
+ 	}
+ 	/* enable msi */
+ 	rdev->msi_enabled = 0;
+-	/* MSIs don't seem to work on my rs780;
+-	 * not sure about rs880 or other rs780s.
+-	 * Needs more investigation.
++	/* MSIs don't seem to work reliably on all IGP
++	 * chips.  Disable MSI on them for now.
+ 	 */
+ 	if ((rdev->family >= CHIP_RV380) &&
+-	    (rdev->family != CHIP_RS780) &&
+-	    (rdev->family != CHIP_RS880)) {
++	    (!(rdev->flags & RADEON_IS_IGP))) {
+ 		int ret = pci_enable_msi(rdev->pdev);
+ 		if (!ret) {
+ 			rdev->msi_enabled = 1;
+-- 
+1.7.1
+

Added: dists/sid/linux-2.6/debian/patches/bugfix/all/drm-radeon-kms-don-t-enable-MSIs-on-AGP-boards.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/drm-radeon-kms-don-t-enable-MSIs-on-AGP-boards.patch	Sat Aug 28 23:38:28 2010	(r16196)
@@ -0,0 +1,39 @@
+From 929b921727a456701af3c2c2316d6c29cb1dfcc6 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexdeucher at gmail.com>
+Date: Thu, 12 Aug 2010 18:05:34 -0400
+Subject: [PATCH 06/10] drm/radeon/kms: don't enable MSIs on AGP boards
+
+commit da7be684c55dbaeebfc1a048d5faf52d52cb3c1f upstream.
+
+Fixes:
+https://bugs.freedesktop.org/show_bug.cgi?id=29327
+
+Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
+Signed-off-by: Dave Airlie <airlied at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
+---
+ drivers/gpu/drm/radeon/radeon_irq_kms.c |    5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c
+index e5b8f31..6597462 100644
+--- a/drivers/gpu/drm/radeon/radeon_irq_kms.c
++++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c
+@@ -120,11 +120,12 @@ int radeon_irq_kms_init(struct radeon_device *rdev)
+ 	 * chips.  Disable MSI on them for now.
+ 	 */
+ 	if ((rdev->family >= CHIP_RV380) &&
+-	    (!(rdev->flags & RADEON_IS_IGP))) {
++	    (!(rdev->flags & RADEON_IS_IGP)) &&
++	    (!(rdev->flags & RADEON_IS_AGP))) {
+ 		int ret = pci_enable_msi(rdev->pdev);
+ 		if (!ret) {
+ 			rdev->msi_enabled = 1;
+-			DRM_INFO("radeon: using MSI.\n");
++			dev_info(rdev->dev, "radeon: using MSI.\n");
+ 		}
+ 	}
+ 	rdev->irq.installed = true;
+-- 
+1.7.1
+

Added: dists/sid/linux-2.6/debian/patches/bugfix/all/drm-radeon-kms-fix-sideport-detection-on-newer-rs880.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/drm-radeon-kms-fix-sideport-detection-on-newer-rs880.patch	Sat Aug 28 23:38:28 2010	(r16196)
@@ -0,0 +1,33 @@
+From 0c22e41734a0730e760de52216c3a75de78dff00 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexdeucher at gmail.com>
+Date: Fri, 20 Aug 2010 12:47:54 -0400
+Subject: [PATCH 09/10] drm/radeon/kms: fix sideport detection on newer rs880 boards
+
+commit 4b80d954a7e54c13a5063af18d01719ad6a0daf3 upstream.
+
+The meaning of ucMemoryType changed on recent boards, however,
+ulBootUpSidePortClock should be set properly across all boards.
+
+Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
+Signed-off-by: Dave Airlie <airlied at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
+---
+ drivers/gpu/drm/radeon/radeon_atombios.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c
+index 1cb96e9..0847f11 100644
+--- a/drivers/gpu/drm/radeon/radeon_atombios.c
++++ b/drivers/gpu/drm/radeon/radeon_atombios.c
+@@ -1007,7 +1007,7 @@ bool radeon_atombios_sideport_present(struct radeon_device *rdev)
+ 			}
+ 			break;
+ 		case 2:
+-			if (igp_info->info_2.ucMemoryType & 0x0f)
++			if (igp_info->info_2.ulBootUpSidePortClock)
+ 				return true;
+ 			break;
+ 		default:
+-- 
+1.7.1
+

Added: dists/sid/linux-2.6/debian/patches/bugfix/all/drm-radeon-kms-fix-typo-in-radeon_compute_pll_gain.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/drm-radeon-kms-fix-typo-in-radeon_compute_pll_gain.patch	Sat Aug 28 23:38:28 2010	(r16196)
@@ -0,0 +1,33 @@
+From 00c8a4d4077d48c56169773a77b48cf0d617d909 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexdeucher at gmail.com>
+Date: Tue, 17 Aug 2010 00:35:45 -0400
+Subject: [PATCH 07/10] drm/radeon/kms: fix typo in radeon_compute_pll_gain
+
+commit 0537398b211b4f040564beec458e23571042d335 upstream.
+
+Looks like this got copied from the ddx wrong.
+
+Cc: Benjamin Herrenschmidt <benh at kernel.crashing.org>
+Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
+Signed-off-by: Dave Airlie <airlied at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
+---
+ drivers/gpu/drm/radeon/radeon_legacy_crtc.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
+index b6d8081..272ddc7 100644
+--- a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
++++ b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
+@@ -272,7 +272,7 @@ static uint8_t radeon_compute_pll_gain(uint16_t ref_freq, uint16_t ref_div,
+ 	if (!ref_div)
+ 		return 1;
+ 
+-	vcoFreq = ((unsigned)ref_freq & fb_div) / ref_div;
++	vcoFreq = ((unsigned)ref_freq * fb_div) / ref_div;
+ 
+ 	/*
+ 	 * This is horribly crude: the VCO frequency range is divided into
+-- 
+1.7.1
+

Added: dists/sid/linux-2.6/debian/patches/bugfix/all/drm-stop-information-leak-of-old-kernel-stack.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/drm-stop-information-leak-of-old-kernel-stack.patch	Sat Aug 28 23:38:28 2010	(r16196)
@@ -0,0 +1,42 @@
+From a5d7dc0535a5c2a554db8bcd64d40d7f5a8e4115 Mon Sep 17 00:00:00 2001
+From: Dave Airlie <airlied at redhat.com>
+Date: Tue, 17 Aug 2010 14:46:00 +1000
+Subject: [PATCH 10/10] drm: stop information leak of old kernel stack.
+
+commit b9f0aee83335db1f3915f4e42a5e21b351740afd upstream.
+
+non-critical issue, CVE-2010-2803
+
+Userspace controls the amount of memory to be allocate, so it can
+get the ioctl to allocate more memory than the kernel uses, and get
+access to kernel stack. This can only be done for processes authenticated
+to the X server for DRI access, and if the user has DRI access.
+
+Fix is to just memset the data to 0 if the user doesn't copy into
+it in the first place.
+
+Reported-by: Kees Cook <kees at ubuntu.com>
+Signed-off-by: Dave Airlie <airlied at redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
+---
+ drivers/gpu/drm/drm_drv.c |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
+index 766c468..3c7b041 100644
+--- a/drivers/gpu/drm/drm_drv.c
++++ b/drivers/gpu/drm/drm_drv.c
+@@ -501,7 +501,9 @@ long drm_ioctl(struct file *filp,
+ 				retcode = -EFAULT;
+ 				goto err_i1;
+ 			}
+-		}
++		} else
++			memset(kdata, 0, _IOC_SIZE(cmd));
++
+ 		if (ioctl->flags & DRM_UNLOCKED)
+ 			retcode = func(dev, kdata, file_priv);
+ 		else {
+-- 
+1.7.1
+

Added: dists/sid/linux-2.6/debian/patches/bugfix/x86/drm-i915-edp-Flush-the-write-before-waiting-for-PLLs.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/x86/drm-i915-edp-Flush-the-write-before-waiting-for-PLLs.patch	Sat Aug 28 23:38:28 2010	(r16196)
@@ -0,0 +1,29 @@
+From 6f8046cd05e5043713a708e36ba54d48a5fa780c Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris at chris-wilson.co.uk>
+Date: Sat, 7 Aug 2010 11:01:36 +0100
+Subject: [PATCH 04/10] drm/i915/edp: Flush the write before waiting for PLLs
+
+commit 5ddb954b9ee50824977d2931e0ff58b3050b337d upstream.
+
+Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
+Signed-off-by: Eric Anholt <eric at anholt.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
+---
+ drivers/gpu/drm/i915/intel_display.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index a90759e..0d6641f 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -1464,6 +1464,7 @@ static void ironlake_enable_pll_edp (struct drm_crtc *crtc)
+ 	dpa_ctl = I915_READ(DP_A);
+ 	dpa_ctl |= DP_PLL_ENABLE;
+ 	I915_WRITE(DP_A, dpa_ctl);
++	POSTING_READ(DP_A);
+ 	udelay(200);
+ }
+ 
+-- 
+1.7.1
+

Added: dists/sid/linux-2.6/debian/patches/bugfix/x86/drm-i915-fixup-pageflip-ringbuffer-commands-for-i8xx.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/x86/drm-i915-fixup-pageflip-ringbuffer-commands-for-i8xx.patch	Sat Aug 28 23:38:28 2010	(r16196)
@@ -0,0 +1,48 @@
+From 9aac4a1d88f517d7072fb522ffc71e8f7f6e86af Mon Sep 17 00:00:00 2001
+From: Daniel Vetter <daniel.vetter at ffwll.ch>
+Date: Wed, 4 Aug 2010 21:22:09 +0200
+Subject: [PATCH 02/10] drm/i915: fixup pageflip ringbuffer commands for i8xx
+
+commit 69d0b96c095468526009cb3104eee561c9252a84 upstream.
+
+Add a new path for 2nd gen chips that uses the commands for i81x
+chips (where public docs do exist) augmented with the plane bits
+from i915. It seems to work and doesn't result in a black screen
+like before.
+
+Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
+[anholt: resolved against conflict]
+Reviewed-by: Jesse Barnes <jbarnes at virtuousgeek.org>
+Signed-off-by: Eric Anholt <eric at anholt.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
+---
+ drivers/gpu/drm/i915/intel_display.c |    8 +++++++-
+ 1 files changed, 7 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index 26e7d22..fe420c9 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -4280,12 +4280,18 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
+ 		OUT_RING(offset | obj_priv->tiling_mode);
+ 		pipesrc = I915_READ(pipesrc_reg); 
+ 		OUT_RING(pipesrc & 0x0fff0fff);
+-	} else {
++	} else if (IS_GEN3(dev)) {
+ 		OUT_RING(MI_DISPLAY_FLIP_I915 |
+ 			 MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
+ 		OUT_RING(fb->pitch);
+ 		OUT_RING(offset);
+ 		OUT_RING(MI_NOOP);
++	} else {
++		OUT_RING(MI_DISPLAY_FLIP |
++			 MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
++		OUT_RING(fb->pitch);
++		OUT_RING(offset);
++		OUT_RING(MI_NOOP);
+ 	}
+ 	ADVANCE_LP_RING();
+ 
+-- 
+1.7.1
+

Added: dists/sid/linux-2.6/debian/patches/bugfix/x86/drm-i915-i8xx-also-doesn-t-like-multiple-oustanding-.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/sid/linux-2.6/debian/patches/bugfix/x86/drm-i915-i8xx-also-doesn-t-like-multiple-oustanding-.patch	Sat Aug 28 23:38:28 2010	(r16196)
@@ -0,0 +1,59 @@
+From 58c45208d7ebc328fe049831ebe6e7cf82f0925b Mon Sep 17 00:00:00 2001
+From: Daniel Vetter <daniel.vetter at ffwll.ch>
+Date: Wed, 4 Aug 2010 21:22:10 +0200
+Subject: [PATCH 03/10] drm/i915: i8xx also doesn't like multiple oustanding pageflips
+
+commit 6146b3d61925116e3fecce36c2fd873665bd6614 upstream.
+
+My i855GM suffers from a 80k/s interrupt storm without this.
+So add 2nd gen to the list of things that don't like more than
+one outstanding pageflip request.
+
+Furthermore I've changed the busy loop into a ringbuffer wait.
+Busy-loops that don't check whether the chip died are simply evil.
+And performance should actually improve, because there's usually
+a decent amount of rendering queued on the gpu, hopefully rendering
+that MI_WAIT into a noop by the time it's executed.
+
+The current code holds dev->struct_mutex while executing this loop,
+hence stalling all other gem activity anyway.
+
+Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
+Reviewed-by: Jesse Barnes <jbarnes at virtuousgeek.org>
+[anholt: resolved against conflict]
+Signed-off-by: Eric Anholt <eric at anholt.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
+---
+ drivers/gpu/drm/i915/intel_display.c |   14 ++++++++------
+ 1 files changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index fe420c9..a90759e 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -4259,14 +4259,16 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
+ 	work->pending_flip_obj = obj;
+ 
+ 	if (intel_crtc->plane)
+-		flip_mask = I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT;
++		flip_mask = MI_WAIT_FOR_PLANE_B_FLIP;
+ 	else
+-		flip_mask = I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT;
++		flip_mask = MI_WAIT_FOR_PLANE_A_FLIP;
+ 
+-	/* Wait for any previous flip to finish */
+-	if (IS_GEN3(dev))
+-		while (I915_READ(ISR) & flip_mask)
+-			;
++	if (IS_GEN3(dev) || IS_GEN2(dev)) {
++		BEGIN_LP_RING(2);
++		OUT_RING(MI_WAIT_FOR_EVENT | flip_mask);
++		OUT_RING(0);
++		ADVANCE_LP_RING();
++	}
+ 
+ 	/* Offset into the new buffer for cases of shared fbs between CRTCs */
+ 	offset = obj_priv->gtt_offset;
+-- 
+1.7.1
+

Modified: dists/sid/linux-2.6/debian/patches/series/22
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/22	Sat Aug 28 21:48:41 2010	(r16195)
+++ dists/sid/linux-2.6/debian/patches/series/22	Sat Aug 28 23:38:28 2010	(r16196)
@@ -18,3 +18,12 @@
 - bugfix/all/can-add-limit-for-nframes-and-clean-up-signed-variables.patch
 + bugfix/all/stable/2.6.32.21.patch
 + debian/mm-Avoid-ABI-change-in-2.6.32.21.patch
++ bugfix/x86/drm-i915-fixup-pageflip-ringbuffer-commands-for-i8xx.patch
++ bugfix/x86/drm-i915-i8xx-also-doesn-t-like-multiple-oustanding-.patch
++ bugfix/x86/drm-i915-edp-Flush-the-write-before-waiting-for-PLLs.patch
++ bugfix/all/drm-radeon-kms-disable-MSI-on-IGP-chips.patch
++ bugfix/all/drm-radeon-kms-don-t-enable-MSIs-on-AGP-boards.patch
++ bugfix/all/drm-radeon-kms-fix-typo-in-radeon_compute_pll_gain.patch
++ bugfix/all/drm-radeon-kms-DCE3-switch-pads-to-ddc-mode-when-goi.patch
++ bugfix/all/drm-radeon-kms-fix-sideport-detection-on-newer-rs880.patch
++ bugfix/all/drm-stop-information-leak-of-old-kernel-stack.patch



More information about the Kernel-svn-changes mailing list