From: Greg Kroah-Hartman Date: Tue, 10 Jul 2012 23:54:32 +0000 (-0700) Subject: 3.0-stable patches X-Git-Tag: v3.0.37~32 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=42bd5c1132c46562d09ca8b18797fd5f6769bbed;p=thirdparty%2Fkernel%2Fstable-queue.git 3.0-stable patches added patches: acpi-add-a-quirk-for-amilo-pro-v2030-to-ignore-the-timer-overriding.patch acpi_pad-fix-power_saving-thread-deadlock.patch btrfs-run-delayed-directory-updates-during-log-replay.patch drm-edid-don-t-return-stack-garbage-from-supports_rb.patch drm-i915-fix-edp-blank-screen-after-s3-resume-on-hp-desktops.patch drm-nouveau-fbcon-using-nv_two_heads-is-not-a-good-idea.patch --- diff --git a/queue-3.0/acpi-add-a-quirk-for-amilo-pro-v2030-to-ignore-the-timer-overriding.patch b/queue-3.0/acpi-add-a-quirk-for-amilo-pro-v2030-to-ignore-the-timer-overriding.patch new file mode 100644 index 00000000000..06e25b37ded --- /dev/null +++ b/queue-3.0/acpi-add-a-quirk-for-amilo-pro-v2030-to-ignore-the-timer-overriding.patch @@ -0,0 +1,44 @@ +From f6b54f083cc66cf9b11d2120d8df3c2ad4e0836d Mon Sep 17 00:00:00 2001 +From: Feng Tang +Date: Mon, 4 Jun 2012 15:00:06 +0800 +Subject: ACPI: Add a quirk for "AMILO PRO V2030" to ignore the timer overriding + +From: Feng Tang + +commit f6b54f083cc66cf9b11d2120d8df3c2ad4e0836d upstream. + +This is the 2nd part of fix for kernel bugzilla 40002: + "IRQ 0 assigned to VGA" +https://bugzilla.kernel.org/show_bug.cgi?id=40002 + +The root cause is the buggy FW, whose ACPI tables assign the GSI 16 +to 2 irqs 0 and 16(VGA), and the VGA is the right owner of GSI 16. +So add a quirk to ignore the irq0 overriding GSI 16 for the +FUJITSU SIEMENS AMILO PRO V2030 platform will solve this issue. + +Reported-and-tested-by: Szymon Kowalczyk +Signed-off-by: Feng Tang +Signed-off-by: Len Brown +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kernel/acpi/boot.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/arch/x86/kernel/acpi/boot.c ++++ b/arch/x86/kernel/acpi/boot.c +@@ -1466,6 +1466,14 @@ static struct dmi_system_id __initdata a + DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq 6715b"), + }, + }, ++ { ++ .callback = dmi_ignore_irq0_timer_override, ++ .ident = "FUJITSU SIEMENS", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), ++ DMI_MATCH(DMI_PRODUCT_NAME, "AMILO PRO V2030"), ++ }, ++ }, + {} + }; + diff --git a/queue-3.0/acpi_pad-fix-power_saving-thread-deadlock.patch b/queue-3.0/acpi_pad-fix-power_saving-thread-deadlock.patch new file mode 100644 index 00000000000..c4d42678318 --- /dev/null +++ b/queue-3.0/acpi_pad-fix-power_saving-thread-deadlock.patch @@ -0,0 +1,64 @@ +From 5f1601261050251a5ca293378b492a69d590dacb Mon Sep 17 00:00:00 2001 +From: Stuart Hayes +Date: Wed, 13 Jun 2012 16:10:45 -0500 +Subject: acpi_pad: fix power_saving thread deadlock + +From: Stuart Hayes + +commit 5f1601261050251a5ca293378b492a69d590dacb upstream. + +The acpi_pad driver can get stuck in destroy_power_saving_task() +waiting for kthread_stop() to stop a power_saving thread. The problem +is that the isolated_cpus_lock mutex is owned when +destroy_power_saving_task() calls kthread_stop(), which waits for a +power_saving thread to end, and the power_saving thread tries to +acquire the isolated_cpus_lock when it calls round_robin_cpu(). This +patch fixes the issue by making round_robin_cpu() use its own mutex. + +https://bugzilla.kernel.org/show_bug.cgi?id=42981 + +Signed-off-by: Stuart Hayes +Signed-off-by: Len Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/acpi_pad.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +--- a/drivers/acpi/acpi_pad.c ++++ b/drivers/acpi/acpi_pad.c +@@ -36,6 +36,7 @@ + #define ACPI_PROCESSOR_AGGREGATOR_DEVICE_NAME "Processor Aggregator" + #define ACPI_PROCESSOR_AGGREGATOR_NOTIFY 0x80 + static DEFINE_MUTEX(isolated_cpus_lock); ++static DEFINE_MUTEX(round_robin_lock); + + static unsigned long power_saving_mwait_eax; + +@@ -107,7 +108,7 @@ static void round_robin_cpu(unsigned int + if (!alloc_cpumask_var(&tmp, GFP_KERNEL)) + return; + +- mutex_lock(&isolated_cpus_lock); ++ mutex_lock(&round_robin_lock); + cpumask_clear(tmp); + for_each_cpu(cpu, pad_busy_cpus) + cpumask_or(tmp, tmp, topology_thread_cpumask(cpu)); +@@ -116,7 +117,7 @@ static void round_robin_cpu(unsigned int + if (cpumask_empty(tmp)) + cpumask_andnot(tmp, cpu_online_mask, pad_busy_cpus); + if (cpumask_empty(tmp)) { +- mutex_unlock(&isolated_cpus_lock); ++ mutex_unlock(&round_robin_lock); + return; + } + for_each_cpu(cpu, tmp) { +@@ -131,7 +132,7 @@ static void round_robin_cpu(unsigned int + tsk_in_cpu[tsk_index] = preferred_cpu; + cpumask_set_cpu(preferred_cpu, pad_busy_cpus); + cpu_weight[preferred_cpu]++; +- mutex_unlock(&isolated_cpus_lock); ++ mutex_unlock(&round_robin_lock); + + set_cpus_allowed_ptr(current, cpumask_of(preferred_cpu)); + } diff --git a/queue-3.0/btrfs-run-delayed-directory-updates-during-log-replay.patch b/queue-3.0/btrfs-run-delayed-directory-updates-during-log-replay.patch new file mode 100644 index 00000000000..436068f63b0 --- /dev/null +++ b/queue-3.0/btrfs-run-delayed-directory-updates-during-log-replay.patch @@ -0,0 +1,54 @@ +From b6305567e7d31b0bec1b8cb9ec0cadd7f7086f5f Mon Sep 17 00:00:00 2001 +From: Chris Mason +Date: Mon, 2 Jul 2012 15:29:53 -0400 +Subject: Btrfs: run delayed directory updates during log replay + +From: Chris Mason + +commit b6305567e7d31b0bec1b8cb9ec0cadd7f7086f5f upstream. + +While we are resolving directory modifications in the +tree log, we are triggering delayed metadata updates to +the filesystem btrees. + +This commit forces the delayed updates to run so the +replay code can find any modifications done. It stops +us from crashing because the directory deleltion replay +expects items to be removed immediately from the tree. + +Signed-off-by: Chris Mason +Signed-off-by: Greg Kroah-Hartman + +--- + fs/btrfs/tree-log.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/fs/btrfs/tree-log.c ++++ b/fs/btrfs/tree-log.c +@@ -691,6 +691,8 @@ static noinline int drop_one_dir_item(st + kfree(name); + + iput(inode); ++ ++ btrfs_run_delayed_items(trans, root); + return ret; + } + +@@ -896,6 +898,7 @@ again: + ret = btrfs_unlink_inode(trans, root, dir, + inode, victim_name, + victim_name_len); ++ btrfs_run_delayed_items(trans, root); + } + kfree(victim_name); + ptr = (unsigned long)(victim_ref + 1) + victim_name_len; +@@ -1476,6 +1479,9 @@ again: + ret = btrfs_unlink_inode(trans, root, dir, inode, + name, name_len); + BUG_ON(ret); ++ ++ btrfs_run_delayed_items(trans, root); ++ + kfree(name); + iput(inode); + diff --git a/queue-3.0/drm-edid-don-t-return-stack-garbage-from-supports_rb.patch b/queue-3.0/drm-edid-don-t-return-stack-garbage-from-supports_rb.patch new file mode 100644 index 00000000000..fab96f1e85c --- /dev/null +++ b/queue-3.0/drm-edid-don-t-return-stack-garbage-from-supports_rb.patch @@ -0,0 +1,34 @@ +From b196a4980ff7bb54db478e2a408dc8b12be15304 Mon Sep 17 00:00:00 2001 +From: Daniel Vetter +Date: Tue, 19 Jun 2012 11:33:06 +0200 +Subject: drm/edid: don't return stack garbage from supports_rb + +From: Daniel Vetter + +commit b196a4980ff7bb54db478e2a408dc8b12be15304 upstream. + +We need to initialize this to false, because the is_rb callback only +ever sets it to true. + +Noticed while reading through the code. + +Signed-Off-by: Daniel Vetter +Reviewed-by: Adam Jackson +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/drm_edid.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/gpu/drm/drm_edid.c ++++ b/drivers/gpu/drm/drm_edid.c +@@ -584,7 +584,7 @@ static bool + drm_monitor_supports_rb(struct edid *edid) + { + if (edid->revision >= 4) { +- bool ret; ++ bool ret = false; + drm_for_each_detailed_block((u8 *)edid, is_rb, &ret); + return ret; + } diff --git a/queue-3.0/drm-i915-fix-edp-blank-screen-after-s3-resume-on-hp-desktops.patch b/queue-3.0/drm-i915-fix-edp-blank-screen-after-s3-resume-on-hp-desktops.patch new file mode 100644 index 00000000000..f44a8b15b54 --- /dev/null +++ b/queue-3.0/drm-i915-fix-edp-blank-screen-after-s3-resume-on-hp-desktops.patch @@ -0,0 +1,43 @@ +From 6db65cbb941f9d433659bdad02b307f6d94465df Mon Sep 17 00:00:00 2001 +From: Takashi Iwai +Date: Thu, 21 Jun 2012 15:30:41 +0200 +Subject: drm/i915: Fix eDP blank screen after S3 resume on HP desktops + +From: Takashi Iwai + +commit 6db65cbb941f9d433659bdad02b307f6d94465df upstream. + +This patch fixes the problem on some HP desktop machines with eDP +which give blank screens after S3 resume. + +It turned out that BLC_PWM_CPU_CTL must be written after +BLC_PWM_CPU_CTL2. Otherwise it doesn't take effect on these +SNB machines. + +Tested with 3.5-rc3 kernel. + +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49233 + +Signed-off-by: Takashi Iwai +Signed-off-by: Daniel Vetter +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/i915/i915_suspend.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/drivers/gpu/drm/i915/i915_suspend.c ++++ b/drivers/gpu/drm/i915/i915_suspend.c +@@ -739,8 +739,11 @@ static void i915_restore_display(struct + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(BLC_PWM_PCH_CTL1, dev_priv->saveBLC_PWM_CTL); + I915_WRITE(BLC_PWM_PCH_CTL2, dev_priv->saveBLC_PWM_CTL2); +- I915_WRITE(BLC_PWM_CPU_CTL, dev_priv->saveBLC_CPU_PWM_CTL); ++ /* NOTE: BLC_PWM_CPU_CTL must be written after BLC_PWM_CPU_CTL2; ++ * otherwise we get blank eDP screen after S3 on some machines ++ */ + I915_WRITE(BLC_PWM_CPU_CTL2, dev_priv->saveBLC_CPU_PWM_CTL2); ++ I915_WRITE(BLC_PWM_CPU_CTL, dev_priv->saveBLC_CPU_PWM_CTL); + I915_WRITE(PCH_PP_ON_DELAYS, dev_priv->savePP_ON_DELAYS); + I915_WRITE(PCH_PP_OFF_DELAYS, dev_priv->savePP_OFF_DELAYS); + I915_WRITE(PCH_PP_DIVISOR, dev_priv->savePP_DIVISOR); diff --git a/queue-3.0/drm-nouveau-fbcon-using-nv_two_heads-is-not-a-good-idea.patch b/queue-3.0/drm-nouveau-fbcon-using-nv_two_heads-is-not-a-good-idea.patch new file mode 100644 index 00000000000..356e4cde276 --- /dev/null +++ b/queue-3.0/drm-nouveau-fbcon-using-nv_two_heads-is-not-a-good-idea.patch @@ -0,0 +1,40 @@ +From 9bd0c15fcfb42f6245447c53347d65ad9e72080b Mon Sep 17 00:00:00 2001 +From: Ben Skeggs +Date: Tue, 26 Jun 2012 12:12:30 +1000 +Subject: drm/nouveau/fbcon: using nv_two_heads is not a good idea + +From: Ben Skeggs + +commit 9bd0c15fcfb42f6245447c53347d65ad9e72080b upstream. + +nv_two_heads() was never meant to be used outside of pre-nv50 code. The +code checks for >= NV_10 for 2 CRTCs, then downgrades a few specific +chipsets to 1 CRTC based on (pci_device & 0x0ff0). + +The breakage example seen is on GTX 560Ti, with a pciid of 0x1200, which +gets detected as an NV20 (0x020x) with 1 CRTC by nv_two_heads(), causing +memory corruption because there's actually 2 CRTCs.. + +This switches fbcon to use the CRTC count directly from the mode_config +structure, which will also fix the same issue on Kepler boards which have +4 CRTCs. + +Signed-off-by: Ben Skeggs +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/nouveau/nouveau_fbcon.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c ++++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c +@@ -487,7 +487,7 @@ int nouveau_fbcon_init(struct drm_device + nfbdev->helper.funcs = &nouveau_fbcon_helper_funcs; + + ret = drm_fb_helper_init(dev, &nfbdev->helper, +- nv_two_heads(dev) ? 2 : 1, 4); ++ dev->mode_config.num_crtc, 4); + if (ret) { + kfree(nfbdev); + return ret; diff --git a/queue-3.0/series b/queue-3.0/series index 523582a5244..a482ab89284 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -23,3 +23,9 @@ ath9k_hw-avoid-possible-infinite-loop-in.patch ath9k_htc-configure-bssid-on-assoc-ibss-change.patch ath9k-enable-serialize_regmode-for-non-pcie-ar9287.patch asoc-tlv320aic3x-fix-codec-pll-configure-bug.patch +btrfs-run-delayed-directory-updates-during-log-replay.patch +drm-edid-don-t-return-stack-garbage-from-supports_rb.patch +drm-nouveau-fbcon-using-nv_two_heads-is-not-a-good-idea.patch +drm-i915-fix-edp-blank-screen-after-s3-resume-on-hp-desktops.patch +acpi_pad-fix-power_saving-thread-deadlock.patch +acpi-add-a-quirk-for-amilo-pro-v2030-to-ignore-the-timer-overriding.patch