From: Greg Kroah-Hartman Date: Wed, 5 Aug 2009 18:40:03 +0000 (-0700) Subject: remove one duplicated network patch and add a bunch of drm patches for .30 X-Git-Tag: v2.6.30.5~20 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2f4c83c265ad3676329018875584962ee8f7733a;p=thirdparty%2Fkernel%2Fstable-queue.git remove one duplicated network patch and add a bunch of drm patches for .30 --- diff --git a/queue-2.6.30/0001-drm-i915-add-ignore-lvds-quirk-info-for-AOpen-Mini-P.patch b/queue-2.6.30/0001-drm-i915-add-ignore-lvds-quirk-info-for-AOpen-Mini-P.patch new file mode 100644 index 00000000000..b42d64f3f96 --- /dev/null +++ b/queue-2.6.30/0001-drm-i915-add-ignore-lvds-quirk-info-for-AOpen-Mini-P.patch @@ -0,0 +1,40 @@ +From 9ade9105535556fbbb2ac29dfddbadeee4c15b0e Mon Sep 17 00:00:00 2001 +From: Jarod Wilson +Date: Wed, 27 May 2009 17:20:39 -0400 +Subject: drm/i915: add ignore lvds quirk info for AOpen Mini PC + +From: Jarod Wilson + +(cherry picked from commit 70aa96ca2d8d938fc036ef8fd189b0151f4fc3ba) + +Fix a FIXME in the intel LVDS bring-up code, adding the appropriate +blacklist entry for the AOpen Mini PC, courtesy of a dmidecode +dump from Florian Demmer. + +Signed-off-by: Jarod Wilson +CC: Florian Demmer +Signed-off-by: Eric Anholt +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/i915/intel_lvds.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +--- a/drivers/gpu/drm/i915/intel_lvds.c ++++ b/drivers/gpu/drm/i915/intel_lvds.c +@@ -420,8 +420,14 @@ static const struct dmi_system_id intel_ + DMI_MATCH(DMI_PRODUCT_NAME, "Studio Hybrid 140g"), + }, + }, +- +- /* FIXME: add a check for the Aopen Mini PC */ ++ { ++ .callback = intel_no_lvds_dmi_callback, ++ .ident = "AOpen Mini PC", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "AOpen"), ++ DMI_MATCH(DMI_PRODUCT_NAME, "i965GMx-IF"), ++ }, ++ }, + + { } /* terminating entry */ + }; diff --git a/queue-2.6.30/0002-drm-i915-apply-G45-vblank-count-code-to-all-G4x-chip.patch b/queue-2.6.30/0002-drm-i915-apply-G45-vblank-count-code-to-all-G4x-chip.patch new file mode 100644 index 00000000000..c90bc9eb9b9 --- /dev/null +++ b/queue-2.6.30/0002-drm-i915-apply-G45-vblank-count-code-to-all-G4x-chip.patch @@ -0,0 +1,46 @@ +From 38d9e61c921dd1e14e3135df5ad7d5d4d7e45ffe Mon Sep 17 00:00:00 2001 +From: Jesse Barnes +Date: Tue, 5 May 2009 13:13:16 -0700 +Subject: drm/i915: apply G45 vblank count code to all G4x chips and fix max_frame_count + +From: Jesse Barnes + +(cherry picked from commit 42c2798b35b95c471877133e19ccc3cab00e9b65) + +All G4x and newer chips use the new style frame count register, with a +full 32 bit frame count. Update the code to reflect this. + +Signed-off-by: Jesse Barnes +Signed-off-by: Eric Anholt +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/i915/i915_dma.c | 5 ++++- + drivers/gpu/drm/i915/i915_irq.c | 2 -- + 2 files changed, 4 insertions(+), 3 deletions(-) + +--- a/drivers/gpu/drm/i915/i915_dma.c ++++ b/drivers/gpu/drm/i915/i915_dma.c +@@ -1153,8 +1153,11 @@ int i915_driver_load(struct drm_device * + #endif + + dev->driver->get_vblank_counter = i915_get_vblank_counter; +- if (IS_GM45(dev)) ++ dev->max_vblank_count = 0xffffff; /* only 24 bits of frame count */ ++ if (IS_G4X(dev)) { ++ dev->max_vblank_count = 0xffffffff; /* full 32 bit counter */ + dev->driver->get_vblank_counter = gm45_get_vblank_counter; ++ } + + i915_gem_load(dev); + +--- a/drivers/gpu/drm/i915/i915_irq.c ++++ b/drivers/gpu/drm/i915/i915_irq.c +@@ -572,8 +572,6 @@ int i915_driver_irq_postinstall(struct d + + dev_priv->vblank_pipe = DRM_I915_VBLANK_PIPE_A | DRM_I915_VBLANK_PIPE_B; + +- dev->max_vblank_count = 0xffffff; /* only 24 bits of frame count */ +- + /* Unmask the interrupts that we always want on. */ + dev_priv->irq_mask_reg = ~I915_INTERRUPT_ENABLE_FIX; + diff --git a/queue-2.6.30/0003-drm-i915-avoid-non-atomic-sysrq-execution.patch b/queue-2.6.30/0003-drm-i915-avoid-non-atomic-sysrq-execution.patch new file mode 100644 index 00000000000..7b23abcdc97 --- /dev/null +++ b/queue-2.6.30/0003-drm-i915-avoid-non-atomic-sysrq-execution.patch @@ -0,0 +1,41 @@ +From 61731f5a5cb17a9535d08a4727e255cd2ff3d529 Mon Sep 17 00:00:00 2001 +From: Jesse Barnes +Date: Fri, 15 May 2009 14:11:48 -0700 +Subject: drm/i915: avoid non-atomic sysrq execution + +From: Jesse Barnes + +(cherry picked from commit b66d18ddb16603d1e1ec39cb2ff3abf3fd212180) + +The sysrq functions are executed in hardirq context, so we shouldn't be +calling sleeping functions from them, like mutex_locks or memory +allocations. + +Fix up the i915 sysrq handler to avoid this. + +Signed-off-by: Jesse Barnes +Signed-off-by: Eric Anholt +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/i915/intel_fb.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +--- a/drivers/gpu/drm/i915/intel_fb.c ++++ b/drivers/gpu/drm/i915/intel_fb.c +@@ -857,9 +857,15 @@ void intelfb_restore(void) + drm_crtc_helper_set_config(&kernelfb_mode); + } + ++static void intelfb_restore_work_fn(struct work_struct *ignored) ++{ ++ intelfb_restore(); ++} ++static DECLARE_WORK(intelfb_restore_work, intelfb_restore_work_fn); ++ + static void intelfb_sysrq(int dummy1, struct tty_struct *dummy3) + { +- intelfb_restore(); ++ schedule_work(&intelfb_restore_work); + } + + static struct sysrq_key_op sysrq_intelfb_restore_op = { diff --git a/queue-2.6.30/0004-drm-i915-Skip-lvds-with-Aopen-i945GTt-VFA.patch b/queue-2.6.30/0004-drm-i915-Skip-lvds-with-Aopen-i945GTt-VFA.patch new file mode 100644 index 00000000000..e5028e1b97d --- /dev/null +++ b/queue-2.6.30/0004-drm-i915-Skip-lvds-with-Aopen-i945GTt-VFA.patch @@ -0,0 +1,32 @@ +From 0025e6e6dd0878f145659a7fa185c1c41ff823c1 Mon Sep 17 00:00:00 2001 +From: Michael Cousin +Date: Fri, 5 Jun 2009 21:16:22 +0200 +Subject: drm/i915: Skip lvds with Aopen i945GTt-VFA + +From: Michael Cousin +Signed-off-by: Eric Anholt +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/i915/intel_lvds.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/gpu/drm/i915/intel_lvds.c ++++ b/drivers/gpu/drm/i915/intel_lvds.c +@@ -428,6 +428,13 @@ static const struct dmi_system_id intel_ + DMI_MATCH(DMI_PRODUCT_NAME, "i965GMx-IF"), + }, + }, ++ { ++ .callback = intel_no_lvds_dmi_callback, ++ .ident = "Aopen i945GTt-VFA", ++ .matches = { ++ DMI_MATCH(DMI_PRODUCT_VERSION, "AO00001JW"), ++ }, ++ }, + + { } /* terminating entry */ + }; diff --git a/queue-2.6.30/0005-drm-i915-Hook-connector-to-encoder-during-load-detec.patch b/queue-2.6.30/0005-drm-i915-Hook-connector-to-encoder-during-load-detec.patch new file mode 100644 index 00000000000..85f2252a771 --- /dev/null +++ b/queue-2.6.30/0005-drm-i915-Hook-connector-to-encoder-during-load-detec.patch @@ -0,0 +1,38 @@ +From 189e96a590446c03977d1f1563290c75266ecacc Mon Sep 17 00:00:00 2001 +From: Keith Packard +Date: Fri, 5 Jun 2009 18:19:56 -0700 +Subject: drm/i915: Hook connector to encoder during load detection (fixes tv/vga detect) + +From: Keith Packard + +(cherry picked from commit 03d6069912babc07a3da20e715dd6a5dc8f0f867) + +With the DRM-driven DPMS code, encoders are considered idle unless a +connector is hooked to them, so mode setting is skipped. This makes load +detection fail as none of the hardware is enabled. + +Signed-off-by: Keith Packard +Signed-off-by: Eric Anholt +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/i915/intel_display.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/gpu/drm/i915/intel_display.c ++++ b/drivers/gpu/drm/i915/intel_display.c +@@ -1590,6 +1590,7 @@ struct drm_crtc *intel_get_load_detect_p + } + + encoder->crtc = crtc; ++ intel_output->base.encoder = encoder; + intel_output->load_detect_temp = true; + + intel_crtc = to_intel_crtc(crtc); +@@ -1625,6 +1626,7 @@ void intel_release_load_detect_pipe(stru + + if (intel_output->load_detect_temp) { + encoder->crtc = NULL; ++ intel_output->base.encoder = NULL; + intel_output->load_detect_temp = false; + crtc->enabled = drm_helper_crtc_in_use(crtc); + drm_helper_disable_unused_functions(dev); diff --git a/queue-2.6.30/0006-drm-i915-initialize-fence-registers-to-zero-when-loa.patch b/queue-2.6.30/0006-drm-i915-initialize-fence-registers-to-zero-when-loa.patch new file mode 100644 index 00000000000..ab20fbacf77 --- /dev/null +++ b/queue-2.6.30/0006-drm-i915-initialize-fence-registers-to-zero-when-loa.patch @@ -0,0 +1,54 @@ +From ac6a82f4aa69cbc58264004cd1db9143a241df95 Mon Sep 17 00:00:00 2001 +From: Grégoire Henry +Date: Tue, 23 Jun 2009 15:41:02 +0200 +Subject: drm/i915: initialize fence registers to zero when loading GEM +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Grégoire Henry + +(cherry picked from commit b5aa8a0fc132dd512c33e7c2621d075e3b77a65e) + +Unitialized fence register could leads to corrupted display. Problem +encountered on MacBooks (revision 1 and 2), directly booting from EFI +or through BIOS emulation. + +(bug #21710 at freedestop.org) + +Signed-off-by: Grégoire Henry +Signed-off-by: Eric Anholt +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/i915/i915_gem.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +--- a/drivers/gpu/drm/i915/i915_gem.c ++++ b/drivers/gpu/drm/i915/i915_gem.c +@@ -4154,6 +4154,7 @@ i915_gem_lastclose(struct drm_device *de + void + i915_gem_load(struct drm_device *dev) + { ++ int i; + drm_i915_private_t *dev_priv = dev->dev_private; + + spin_lock_init(&dev_priv->mm.active_list_lock); +@@ -4173,6 +4174,18 @@ i915_gem_load(struct drm_device *dev) + else + dev_priv->num_fence_regs = 8; + ++ /* Initialize fence registers to zero */ ++ if (IS_I965G(dev)) { ++ for (i = 0; i < 16; i++) ++ I915_WRITE64(FENCE_REG_965_0 + (i * 8), 0); ++ } else { ++ for (i = 0; i < 8; i++) ++ I915_WRITE(FENCE_REG_830_0 + (i * 4), 0); ++ if (IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev)) ++ for (i = 0; i < 8; i++) ++ I915_WRITE(FENCE_REG_945_8 + (i * 4), 0); ++ } ++ + i915_gem_detect_bit_6_swizzle(dev); + } + diff --git a/queue-2.6.30/0007-drm-i915-Set-SSC-frequency-for-8xx-chips-correctly.patch b/queue-2.6.30/0007-drm-i915-Set-SSC-frequency-for-8xx-chips-correctly.patch new file mode 100644 index 00000000000..0140a75df97 --- /dev/null +++ b/queue-2.6.30/0007-drm-i915-Set-SSC-frequency-for-8xx-chips-correctly.patch @@ -0,0 +1,38 @@ +From d2a55f12b2425ed1febb9e29e10bb405b91aa8dd Mon Sep 17 00:00:00 2001 +From: Ma Ling +Date: Thu, 25 Jun 2009 10:59:22 +0800 +Subject: drm/i915: Set SSC frequency for 8xx chips correctly + +From: Ma Ling + +(cherry picked from commit 6ff4fd05676bc5b5c930bef25901e489f7843660) + +All 8xx class chips have the 66/48 split, not just 855. + +Signed-off-by: Ma Ling +Reviewed-by: Jesse Barnes +Signed-off-by: Eric Anholt +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/i915/intel_bios.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +--- a/drivers/gpu/drm/i915/intel_bios.c ++++ b/drivers/gpu/drm/i915/intel_bios.c +@@ -185,10 +185,12 @@ parse_general_features(struct drm_i915_p + dev_priv->lvds_use_ssc = general->enable_ssc; + + if (dev_priv->lvds_use_ssc) { +- if (IS_I855(dev_priv->dev)) +- dev_priv->lvds_ssc_freq = general->ssc_freq ? 66 : 48; +- else +- dev_priv->lvds_ssc_freq = general->ssc_freq ? 100 : 96; ++ if (IS_I85X(dev_priv->dev)) ++ dev_priv->lvds_ssc_freq = ++ general->ssc_freq ? 66 : 48; ++ else ++ dev_priv->lvds_ssc_freq = ++ general->ssc_freq ? 100 : 96; + } + } + } diff --git a/queue-2.6.30/drm-i915-save-restore-cursor-state-on-suspend-resume.patch b/queue-2.6.30/drm-i915-save-restore-cursor-state-on-suspend-resume.patch new file mode 100644 index 00000000000..ac4a6a999dc --- /dev/null +++ b/queue-2.6.30/drm-i915-save-restore-cursor-state-on-suspend-resume.patch @@ -0,0 +1,83 @@ +From c250320bf1cb656c39abebac06ae2f56e36b7e78 Mon Sep 17 00:00:00 2001 +From: Eric Anholt +Date: Wed, 3 Jun 2009 07:26:58 +0000 +Subject: drm/i915: Save/restore cursor state on suspend/resume. + +From: Eric Anholt + +(cherry picked from commit 1fd1c624362819ecc36db2458c6a972c48ae92d6) + +This may fix cursor corruption in X on resume, which would persist until +the cursor was hidden and then shown again. + +V2: Also include the cursor control regs. + +Signed-off-by: Eric Anholt +Reviewed-by: Jesse Barnes +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/i915/i915_drv.h | 8 ++++++++ + drivers/gpu/drm/i915/i915_suspend.c | 20 ++++++++++++++++++++ + 2 files changed, 28 insertions(+) + +--- a/drivers/gpu/drm/i915/i915_drv.h ++++ b/drivers/gpu/drm/i915/i915_drv.h +@@ -285,6 +285,13 @@ typedef struct drm_i915_private { + u8 saveDACMASK; + u8 saveCR[37]; + uint64_t saveFENCE[16]; ++ u32 saveCURACNTR; ++ u32 saveCURAPOS; ++ u32 saveCURABASE; ++ u32 saveCURBCNTR; ++ u32 saveCURBPOS; ++ u32 saveCURBBASE; ++ u32 saveCURSIZE; + + struct { + struct drm_mm gtt_space; +@@ -642,6 +649,7 @@ void i915_gem_detach_phys_object(struct + void i915_gem_free_all_phys_object(struct drm_device *dev); + int i915_gem_object_get_pages(struct drm_gem_object *obj); + void i915_gem_object_put_pages(struct drm_gem_object *obj); ++void i915_gem_release(struct drm_device * dev, struct drm_file *file_priv); + + /* i915_gem_tiling.c */ + void i915_gem_detect_bit_6_swizzle(struct drm_device *dev); +--- a/drivers/gpu/drm/i915/i915_suspend.c ++++ b/drivers/gpu/drm/i915/i915_suspend.c +@@ -295,6 +295,16 @@ int i915_save_state(struct drm_device *d + i915_save_palette(dev, PIPE_B); + dev_priv->savePIPEBSTAT = I915_READ(PIPEBSTAT); + ++ /* Cursor state */ ++ dev_priv->saveCURACNTR = I915_READ(CURACNTR); ++ dev_priv->saveCURAPOS = I915_READ(CURAPOS); ++ dev_priv->saveCURABASE = I915_READ(CURABASE); ++ dev_priv->saveCURBCNTR = I915_READ(CURBCNTR); ++ dev_priv->saveCURBPOS = I915_READ(CURBPOS); ++ dev_priv->saveCURBBASE = I915_READ(CURBBASE); ++ if (!IS_I9XX(dev)) ++ dev_priv->saveCURSIZE = I915_READ(CURSIZE); ++ + /* CRT state */ + dev_priv->saveADPA = I915_READ(ADPA); + +@@ -480,6 +490,16 @@ int i915_restore_state(struct drm_device + I915_WRITE(DSPBCNTR, dev_priv->saveDSPBCNTR); + I915_WRITE(DSPBADDR, I915_READ(DSPBADDR)); + ++ /* Cursor state */ ++ I915_WRITE(CURAPOS, dev_priv->saveCURAPOS); ++ I915_WRITE(CURACNTR, dev_priv->saveCURACNTR); ++ I915_WRITE(CURABASE, dev_priv->saveCURABASE); ++ I915_WRITE(CURBPOS, dev_priv->saveCURBPOS); ++ I915_WRITE(CURBCNTR, dev_priv->saveCURBCNTR); ++ I915_WRITE(CURBBASE, dev_priv->saveCURBBASE); ++ if (!IS_I9XX(dev)) ++ I915_WRITE(CURSIZE, dev_priv->saveCURSIZE); ++ + /* CRT state */ + I915_WRITE(ADPA, dev_priv->saveADPA); + diff --git a/queue-2.6.30/dsa-fix-88e6xxx-statistics-counter-snapshotting.patch b/queue-2.6.30/dsa-fix-88e6xxx-statistics-counter-snapshotting.patch deleted file mode 100644 index 7f0e530b0df..00000000000 --- a/queue-2.6.30/dsa-fix-88e6xxx-statistics-counter-snapshotting.patch +++ /dev/null @@ -1,33 +0,0 @@ -From f64a11df221d24f737788cbd7cb735b5f7b1f40f Mon Sep 17 00:00:00 2001 -From: Stephane Contri -Date: Thu, 2 Jul 2009 23:26:48 +0000 -Subject: dsa: fix 88e6xxx statistics counter snapshotting - -From: Stephane Contri - -[ Upstream commit 1ded3f59f35a2642852b3e2a1c0fa8a97777e9af ] - -The bit that tells us whether a statistics counter snapshot operation -has completed is located in the GLOBAL register block, not in the -GLOBAL2 register block, so fix up mv88e6xxx_stats_wait() to poll the -right register address. - -Signed-off-by: Stephane Contri -Signed-off-by: Lennert Buytenhek -Signed-off-by: David S. Miller -Signed-off-by: Greg Kroah-Hartman ---- - net/dsa/mv88e6xxx.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/net/dsa/mv88e6xxx.c -+++ b/net/dsa/mv88e6xxx.c -@@ -418,7 +418,7 @@ static int mv88e6xxx_stats_wait(struct d - int i; - - for (i = 0; i < 10; i++) { -- ret = REG_READ(REG_GLOBAL2, 0x1d); -+ ret = REG_READ(REG_GLOBAL, 0x1d); - if ((ret & 0x8000) == 0) - return 0; - } diff --git a/queue-2.6.30/series b/queue-2.6.30/series index 39949c4df7d..16fd0a0cc71 100644 --- a/queue-2.6.30/series +++ b/queue-2.6.30/series @@ -1,6 +1,5 @@ iwlwifi-only-show-active-power-level-via-sysfs.patch be2net-fix-to-avoid-a-crash-seen-on-ppc-with-lro-and-jumbo-frames.patch -dsa-fix-88e6xxx-statistics-counter-snapshotting.patch e100-work-around-the-driver-using-streaming-dma-mapping-for-rx-descriptors.patch ipsec-fix-name-of-cast-algorithm.patch sky2-fix-checksum-endianness.patch @@ -11,3 +10,11 @@ gro-flush-gro-packets-in-napi_disable_pending-path.patch gso-stop-fraglists-from-escaping.patch net-move-rx-skb_orphan-call-to-where-needed.patch inet-call-skb_orphan-before-tproxy-activates.patch +drm-i915-save-restore-cursor-state-on-suspend-resume.patch +0001-drm-i915-add-ignore-lvds-quirk-info-for-AOpen-Mini-P.patch +0002-drm-i915-apply-G45-vblank-count-code-to-all-G4x-chip.patch +0003-drm-i915-avoid-non-atomic-sysrq-execution.patch +0004-drm-i915-Skip-lvds-with-Aopen-i945GTt-VFA.patch +0005-drm-i915-Hook-connector-to-encoder-during-load-detec.patch +0006-drm-i915-initialize-fence-registers-to-zero-when-loa.patch +0007-drm-i915-Set-SSC-frequency-for-8xx-chips-correctly.patch