--- linux-2.6.17.6.orig/sound/pci/hda/patch_analog.c
+++ linux-2.6.17.6/sound/pci/hda/patch_analog.c
-@@ -1582,6 +1582,7 @@ static struct snd_kcontrol_new ad1988_6s
+@@ -1579,6 +1579,7 @@ static struct snd_kcontrol_new ad1988_6s
HDA_CODEC_VOLUME_MONO("Center Playback Volume", 0x05, 1, 0x0, HDA_OUTPUT),
HDA_CODEC_VOLUME_MONO("LFE Playback Volume", 0x05, 2, 0x0, HDA_OUTPUT),
HDA_CODEC_VOLUME("Side Playback Volume", 0x0a, 0x0, HDA_OUTPUT),
};
static struct snd_kcontrol_new ad1988_6stack_mixers1_rev2[] = {
-@@ -1590,6 +1591,7 @@ static struct snd_kcontrol_new ad1988_6s
+@@ -1587,6 +1588,7 @@ static struct snd_kcontrol_new ad1988_6s
HDA_CODEC_VOLUME_MONO("Center Playback Volume", 0x0a, 1, 0x0, HDA_OUTPUT),
HDA_CODEC_VOLUME_MONO("LFE Playback Volume", 0x0a, 2, 0x0, HDA_OUTPUT),
HDA_CODEC_VOLUME("Side Playback Volume", 0x06, 0x0, HDA_OUTPUT),
};
static struct snd_kcontrol_new ad1988_6stack_mixers2[] = {
-@@ -1628,6 +1630,7 @@ static struct snd_kcontrol_new ad1988_3s
+@@ -1625,6 +1627,7 @@ static struct snd_kcontrol_new ad1988_3s
HDA_CODEC_VOLUME("Surround Playback Volume", 0x0a, 0x0, HDA_OUTPUT),
HDA_CODEC_VOLUME_MONO("Center Playback Volume", 0x05, 1, 0x0, HDA_OUTPUT),
HDA_CODEC_VOLUME_MONO("LFE Playback Volume", 0x05, 2, 0x0, HDA_OUTPUT),
};
static struct snd_kcontrol_new ad1988_3stack_mixers1_rev2[] = {
-@@ -1635,6 +1638,7 @@ static struct snd_kcontrol_new ad1988_3s
+@@ -1632,6 +1635,7 @@ static struct snd_kcontrol_new ad1988_3s
HDA_CODEC_VOLUME("Surround Playback Volume", 0x0a, 0x0, HDA_OUTPUT),
HDA_CODEC_VOLUME_MONO("Center Playback Volume", 0x06, 1, 0x0, HDA_OUTPUT),
HDA_CODEC_VOLUME_MONO("LFE Playback Volume", 0x06, 2, 0x0, HDA_OUTPUT),
/*
* mixers
-@@ -2138,7 +2141,7 @@ static inline hda_nid_t ad1988_idx_to_da
+@@ -2142,7 +2145,7 @@ static inline hda_nid_t ad1988_idx_to_da
/* A B C D E F G H */
0x04, 0x05, 0x0a, 0x04, 0x06, 0x05, 0x0a, 0x06
};
return idx_to_dac_rev2[idx];
else
return idx_to_dac[idx];
-@@ -2507,7 +2510,7 @@ static int patch_ad1988(struct hda_codec
+@@ -2511,7 +2514,7 @@ static int patch_ad1988(struct hda_codec
mutex_init(&spec->amp_mutex);
codec->spec = spec;
snd_printk(KERN_INFO "patch_analog: AD1988A rev.2 is detected, enable workarounds\n");
board_config = snd_hda_check_board_config(codec, ad1988_cfg_tbl);
-@@ -2533,13 +2536,13 @@ static int patch_ad1988(struct hda_codec
+@@ -2537,13 +2540,13 @@ static int patch_ad1988(struct hda_codec
case AD1988_6STACK_DIG:
spec->multiout.max_channels = 8;
spec->multiout.num_dacs = 4;
spec->mixers[0] = ad1988_6stack_mixers1_rev2;
else
spec->mixers[0] = ad1988_6stack_mixers1;
-@@ -2555,7 +2558,7 @@ static int patch_ad1988(struct hda_codec
+@@ -2559,7 +2562,7 @@ static int patch_ad1988(struct hda_codec
case AD1988_3STACK_DIG:
spec->multiout.max_channels = 6;
spec->multiout.num_dacs = 3;
spec->multiout.dac_nids = ad1988_3stack_dac_nids_rev2;
else
spec->multiout.dac_nids = ad1988_3stack_dac_nids;
-@@ -2563,7 +2566,7 @@ static int patch_ad1988(struct hda_codec
+@@ -2567,7 +2570,7 @@ static int patch_ad1988(struct hda_codec
spec->channel_mode = ad1988_3stack_modes;
spec->num_channel_mode = ARRAY_SIZE(ad1988_3stack_modes);
spec->num_mixers = 2;
+++ /dev/null
-From stable-bounces@linux.kernel.org Fri Jun 30 19:10:22 2006
-Date: Fri, 23 Jun 2006 06:10:02 GMT
-Message-Id: <200606230610.k5N6A2PQ015237@hera.kernel.org>
-From: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
-To: git-commits-head@vger.kernel.org
-Cc:
-Subject: [CPUFREQ] Fix ondemand vs suspend deadlock
-
-From: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
-
-[CPUFREQ] Fix ondemand vs suspend deadlock
-
-Rootcaused the bug to a deadlock in cpufreq and ondemand. Due to non-existent
-ordering between cpu_hotplug lock and dbs_mutex. Basically a race condition
-between cpu_down() and do_dbs_timer().
-
-cpu_down() flow:
-* cpu_down() call for CPU 1
-* Takes hot plug lock
-* Calls pre down notifier
-* cpufreq notifier handler calls cpufreq_driver_target() which takes
- cpu_hotplug lock again. OK as cpu_hotplug lock is recursive in same
- process context
-* CPU 1 goes down
-* Calls post down notifier
-* cpufreq notifier handler calls ondemand event stop which takes dbs_mutex
-
-So, cpu_hotplug lock is taken before dbs_mutex in this flow.
-
-do_dbs_timer is triggerred by a periodic timer event.
-It first takes dbs_mutex and then takes cpu_hotplug lock in
-cpufreq_driver_target().
-Note the reverse order here compared to above. So, if this timer event happens
-at right moment during cpu_down, system will deadlok.
-
-Attached patch fixes the issue for both ondemand and conservative.
-
-Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
-Signed-off-by: Dave Jones <davej@redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/cpufreq/cpufreq_conservative.c | 12 ++++++++++++
- drivers/cpufreq/cpufreq_ondemand.c | 12 ++++++++++++
- 2 files changed, 24 insertions(+)
-
---- linux-2.6.17.4.orig/drivers/cpufreq/cpufreq_conservative.c
-+++ linux-2.6.17.4/drivers/cpufreq/cpufreq_conservative.c
-@@ -72,6 +72,14 @@ static DEFINE_PER_CPU(struct cpu_dbs_inf
-
- static unsigned int dbs_enable; /* number of CPUs using this policy */
-
-+/*
-+ * DEADLOCK ALERT! There is a ordering requirement between cpu_hotplug
-+ * lock and dbs_mutex. cpu_hotplug lock should always be held before
-+ * dbs_mutex. If any function that can potentially take cpu_hotplug lock
-+ * (like __cpufreq_driver_target()) is being called with dbs_mutex taken, then
-+ * cpu_hotplug lock should be taken before that. Note that cpu_hotplug lock
-+ * is recursive for the same process. -Venki
-+ */
- static DEFINE_MUTEX (dbs_mutex);
- static DECLARE_WORK (dbs_work, do_dbs_timer, NULL);
-
-@@ -414,12 +422,14 @@ static void dbs_check_cpu(int cpu)
- static void do_dbs_timer(void *data)
- {
- int i;
-+ lock_cpu_hotplug();
- mutex_lock(&dbs_mutex);
- for_each_online_cpu(i)
- dbs_check_cpu(i);
- schedule_delayed_work(&dbs_work,
- usecs_to_jiffies(dbs_tuners_ins.sampling_rate));
- mutex_unlock(&dbs_mutex);
-+ unlock_cpu_hotplug();
- }
-
- static inline void dbs_timer_init(void)
-@@ -514,6 +524,7 @@ static int cpufreq_governor_dbs(struct c
- break;
-
- case CPUFREQ_GOV_LIMITS:
-+ lock_cpu_hotplug();
- mutex_lock(&dbs_mutex);
- if (policy->max < this_dbs_info->cur_policy->cur)
- __cpufreq_driver_target(
-@@ -524,6 +535,7 @@ static int cpufreq_governor_dbs(struct c
- this_dbs_info->cur_policy,
- policy->min, CPUFREQ_RELATION_L);
- mutex_unlock(&dbs_mutex);
-+ unlock_cpu_hotplug();
- break;
- }
- return 0;
---- linux-2.6.17.4.orig/drivers/cpufreq/cpufreq_ondemand.c
-+++ linux-2.6.17.4/drivers/cpufreq/cpufreq_ondemand.c
-@@ -71,6 +71,14 @@ static DEFINE_PER_CPU(struct cpu_dbs_inf
-
- static unsigned int dbs_enable; /* number of CPUs using this policy */
-
-+/*
-+ * DEADLOCK ALERT! There is a ordering requirement between cpu_hotplug
-+ * lock and dbs_mutex. cpu_hotplug lock should always be held before
-+ * dbs_mutex. If any function that can potentially take cpu_hotplug lock
-+ * (like __cpufreq_driver_target()) is being called with dbs_mutex taken, then
-+ * cpu_hotplug lock should be taken before that. Note that cpu_hotplug lock
-+ * is recursive for the same process. -Venki
-+ */
- static DEFINE_MUTEX (dbs_mutex);
- static DECLARE_WORK (dbs_work, do_dbs_timer, NULL);
-
-@@ -363,12 +371,14 @@ static void dbs_check_cpu(int cpu)
- static void do_dbs_timer(void *data)
- {
- int i;
-+ lock_cpu_hotplug();
- mutex_lock(&dbs_mutex);
- for_each_online_cpu(i)
- dbs_check_cpu(i);
- queue_delayed_work(dbs_workq, &dbs_work,
- usecs_to_jiffies(dbs_tuners_ins.sampling_rate));
- mutex_unlock(&dbs_mutex);
-+ unlock_cpu_hotplug();
- }
-
- static inline void dbs_timer_init(void)
-@@ -469,6 +479,7 @@ static int cpufreq_governor_dbs(struct c
- break;
-
- case CPUFREQ_GOV_LIMITS:
-+ lock_cpu_hotplug();
- mutex_lock(&dbs_mutex);
- if (policy->max < this_dbs_info->cur_policy->cur)
- __cpufreq_driver_target(
-@@ -479,6 +490,7 @@ static int cpufreq_governor_dbs(struct c
- this_dbs_info->cur_policy,
- policy->min, CPUFREQ_RELATION_L);
- mutex_unlock(&dbs_mutex);
-+ unlock_cpu_hotplug();
- break;
- }
- return 0;
v4l-dvb-stradis-dont-export-module_device_table.patch
dvb-bt8xx-fix-frontend-detection-for-dvico-fusionhdtv-dvb-t-lite-rev-1.2.patch
make-powernow-k7-work-on-smp-kernels.patch
-fix-ondemand-vs-suspend-deadlock.patch
fix-powernow-k8-smp-kernel-on-up-hardware-bug.patch
cdrom-fix-bad-cgc.buflen-assignment.patch
splice-fix-problems-with-sys_tee.patch
USB-serial-ftdi_sio-Prevent-userspace-DoS.patch
generic_file_buffered_write-deadlock-on-vectored-write.patch
generic_file_buffered_write-handle-zero-length-iovec-segments.patch
+add-missing-ufo-initialisations.patch
+alsa-au88x0-fix-64bit-address-of-mpu401-mmio-port.patch
+alsa-fix-a-deadlock-in-snd-rtctimer.patch
+alsa-fix-missing-array-terminators-in-ad1988-codec-support.patch
+alsa-fix-model-for-hp-dc7600.patch
+alsa-fix-mute-switch-on-vaio-laptops-with-stac7661.patch
+alsa-fix-the-snd_fm801_tea575x-dependencies.patch
+alsa-fix-undefined-references-in-isa-miro-sound-driver.patch
+alsa-fix-workaround-for-ad1988a-rev2-codec.patch
+alsa-hda-intel-fix-race-in-remove.patch
+alsa-rme-hdsp-fixed-proc-interface.patch
+alsa-suppress-irq-handler-mismatch-messages-in-alsa-isa-drivers.patch
+fix-fdset-leakage.patch
+fix-ipv4-decnet-routing-rule-dumping.patch
+ieee80211-tkip-requires-crc32.patch
+pdflush-handle-resume-wakeups.patch
+serial-8250-sysrq-deadlock-fix.patch
+struct-file-leakage.patch