[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