--- /dev/null
+From dacae5a19b4cbe1b5e3a86de23ea74cbe9ec9652 Mon Sep 17 00:00:00 2001
+From: Denis Efremov <yefremov.denis@gmail.com>
+Date: Mon, 11 Feb 2013 19:49:48 +0400
+Subject: ALSA: ali5451: remove irq enabling in pointer callback
+
+From: Denis Efremov <yefremov.denis@gmail.com>
+
+commit dacae5a19b4cbe1b5e3a86de23ea74cbe9ec9652 upstream.
+
+snd_ali_pointer function is called with local
+interrupts disabled. However it seems very strange to
+reenable them in such way.
+
+Found by Linux Driver Verification project (linuxtesting.org).
+
+Signed-off-by: Denis Efremov <yefremov.denis@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/ali5451/ali5451.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/pci/ali5451/ali5451.c
++++ b/sound/pci/ali5451/ali5451.c
+@@ -1435,7 +1435,7 @@ static snd_pcm_uframes_t snd_ali_pointer
+
+ spin_lock(&codec->reg_lock);
+ if (!pvoice->running) {
+- spin_unlock_irq(&codec->reg_lock);
++ spin_unlock(&codec->reg_lock);
+ return 0;
+ }
+ outb(pvoice->number, ALI_REG(codec, ALI_GC_CIR));
--- /dev/null
+From edac894389f9c9de2a1368c78809c824b343f3a5 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Mon, 4 Feb 2013 10:28:15 +0100
+Subject: ALSA: aloop: Fix Oops while PM resume
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit edac894389f9c9de2a1368c78809c824b343f3a5 upstream.
+
+snd-aloop driver has no proper PM implementation, thus the PM resume
+may trigger Oops due to leftover timer instance. This patch adds the
+missing suspend/resume implementation.
+
+Reported-and-tested-by: El boulangero <elboulangero@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/drivers/aloop.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/sound/drivers/aloop.c
++++ b/sound/drivers/aloop.c
+@@ -286,12 +286,14 @@ static int loopback_trigger(struct snd_p
+ loopback_active_notify(dpcm);
+ break;
+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
++ case SNDRV_PCM_TRIGGER_SUSPEND:
+ spin_lock(&cable->lock);
+ cable->pause |= stream;
+ loopback_timer_stop(dpcm);
+ spin_unlock(&cable->lock);
+ break;
+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
++ case SNDRV_PCM_TRIGGER_RESUME:
+ spin_lock(&cable->lock);
+ dpcm->last_jiffies = jiffies;
+ cable->pause &= ~stream;
+@@ -563,7 +565,8 @@ static snd_pcm_uframes_t loopback_pointe
+ static struct snd_pcm_hardware loopback_pcm_hardware =
+ {
+ .info = (SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_MMAP |
+- SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_PAUSE),
++ SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_PAUSE |
++ SNDRV_PCM_INFO_RESUME),
+ .formats = (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S16_BE |
+ SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S32_BE |
+ SNDRV_PCM_FMTBIT_FLOAT_LE | SNDRV_PCM_FMTBIT_FLOAT_BE),
--- /dev/null
+From f49a59c4471d81a233e09dda45187cc44fda009d Mon Sep 17 00:00:00 2001
+From: Denis Efremov <yefremov.denis@gmail.com>
+Date: Mon, 11 Feb 2013 19:04:06 +0400
+Subject: ALSA: rme32.c irq enabling after spin_lock_irq
+
+From: Denis Efremov <yefremov.denis@gmail.com>
+
+commit f49a59c4471d81a233e09dda45187cc44fda009d upstream.
+
+According to the other code in this driver and similar
+code in rme96 it seems, that spin_lock_irq in
+snd_rme32_capture_close function should be paired
+with spin_unlock_irq.
+
+Found by Linux Driver Verification project (linuxtesting.org).
+
+Signed-off-by: Denis Efremov <yefremov.denis@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/rme32.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/pci/rme32.c
++++ b/sound/pci/rme32.c
+@@ -1017,7 +1017,7 @@ static int snd_rme32_capture_close(struc
+ spin_lock_irq(&rme32->lock);
+ rme32->capture_substream = NULL;
+ rme32->capture_periodsize = 0;
+- spin_unlock(&rme32->lock);
++ spin_unlock_irq(&rme32->lock);
+ return 0;
+ }
+
--- /dev/null
+From b22affe0aef429d657bc6505aacb1c569340ddd2 Mon Sep 17 00:00:00 2001
+From: Leonid Shatz <leonid.shatz@ravellosystems.com>
+Date: Mon, 4 Feb 2013 14:33:37 +0200
+Subject: hrtimer: Prevent hrtimer_enqueue_reprogram race
+
+From: Leonid Shatz <leonid.shatz@ravellosystems.com>
+
+commit b22affe0aef429d657bc6505aacb1c569340ddd2 upstream.
+
+hrtimer_enqueue_reprogram contains a race which could result in
+timer.base switch during unlock/lock sequence.
+
+hrtimer_enqueue_reprogram is releasing the lock protecting the timer
+base for calling raise_softirq_irqsoff() due to a lock ordering issue
+versus rq->lock.
+
+If during that time another CPU calls __hrtimer_start_range_ns() on
+the same hrtimer, the timer base might switch, before the current CPU
+can lock base->lock again and therefor the unlock_timer_base() call
+will unlock the wrong lock.
+
+[ tglx: Added comment and massaged changelog ]
+
+Signed-off-by: Leonid Shatz <leonid.shatz@ravellosystems.com>
+Signed-off-by: Izik Eidus <izik.eidus@ravellosystems.com>
+Cc: Andrea Arcangeli <aarcange@redhat.com>
+Link: http://lkml.kernel.org/r/1359981217-389-1-git-send-email-izik.eidus@ravellosystems.com
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ kernel/hrtimer.c | 36 ++++++++++++++++++------------------
+ 1 file changed, 18 insertions(+), 18 deletions(-)
+
+--- a/kernel/hrtimer.c
++++ b/kernel/hrtimer.c
+@@ -640,21 +640,9 @@ static inline void hrtimer_init_hres(str
+ * and expiry check is done in the hrtimer_interrupt or in the softirq.
+ */
+ static inline int hrtimer_enqueue_reprogram(struct hrtimer *timer,
+- struct hrtimer_clock_base *base,
+- int wakeup)
++ struct hrtimer_clock_base *base)
+ {
+- if (base->cpu_base->hres_active && hrtimer_reprogram(timer, base)) {
+- if (wakeup) {
+- raw_spin_unlock(&base->cpu_base->lock);
+- raise_softirq_irqoff(HRTIMER_SOFTIRQ);
+- raw_spin_lock(&base->cpu_base->lock);
+- } else
+- __raise_softirq_irqoff(HRTIMER_SOFTIRQ);
+-
+- return 1;
+- }
+-
+- return 0;
++ return base->cpu_base->hres_active && hrtimer_reprogram(timer, base);
+ }
+
+ static inline ktime_t hrtimer_update_base(struct hrtimer_cpu_base *base)
+@@ -735,8 +723,7 @@ static inline int hrtimer_switch_to_hres
+ static inline void
+ hrtimer_force_reprogram(struct hrtimer_cpu_base *base, int skip_equal) { }
+ static inline int hrtimer_enqueue_reprogram(struct hrtimer *timer,
+- struct hrtimer_clock_base *base,
+- int wakeup)
++ struct hrtimer_clock_base *base)
+ {
+ return 0;
+ }
+@@ -995,8 +982,21 @@ int __hrtimer_start_range_ns(struct hrti
+ *
+ * XXX send_remote_softirq() ?
+ */
+- if (leftmost && new_base->cpu_base == &__get_cpu_var(hrtimer_bases))
+- hrtimer_enqueue_reprogram(timer, new_base, wakeup);
++ if (leftmost && new_base->cpu_base == &__get_cpu_var(hrtimer_bases)
++ && hrtimer_enqueue_reprogram(timer, new_base)) {
++ if (wakeup) {
++ /*
++ * We need to drop cpu_base->lock to avoid a
++ * lock ordering issue vs. rq->lock.
++ */
++ raw_spin_unlock(&new_base->cpu_base->lock);
++ raise_softirq_irqoff(HRTIMER_SOFTIRQ);
++ local_irq_restore(flags);
++ return ret;
++ } else {
++ __raise_softirq_irqoff(HRTIMER_SOFTIRQ);
++ }
++ }
+
+ unlock_hrtimer_base(timer, &flags);
+
timeconst.pl-eliminate-perl-warning.patch
genirq-avoid-deadlock-in-spurious-handling.patch
posix-cpu-timers-fix-nanosleep-task_struct-leak.patch
+hrtimer-prevent-hrtimer_enqueue_reprogram-race.patch
+x86-hyper-v-register-clocksource-only-if-its-advertised.patch
+workqueue-un-gpl-function-delayed_work_timer_fn.patch
+alsa-ali5451-remove-irq-enabling-in-pointer-callback.patch
+alsa-rme32.c-irq-enabling-after-spin_lock_irq.patch
+alsa-aloop-fix-oops-while-pm-resume.patch
--- /dev/null
+From 1438ade5670b56d5386c220e1ad4b5a824a1e585 Mon Sep 17 00:00:00 2001
+From: Konstantin Khlebnikov <khlebnikov@openvz.org>
+Date: Thu, 24 Jan 2013 16:36:31 +0400
+Subject: workqueue: un-GPL function delayed_work_timer_fn()
+
+From: Konstantin Khlebnikov <khlebnikov@openvz.org>
+
+commit 1438ade5670b56d5386c220e1ad4b5a824a1e585 upstream.
+
+commit d8e794dfd51c368ed3f686b7f4172830b60ae47b ("workqueue: set
+delayed_work->timer function on initialization") exports function
+delayed_work_timer_fn() only for GPL modules. This makes delayed-works
+unusable for non-GPL modules, because initialization macro now requires
+GPL symbol. For example schedule_delayed_work() available for non-GPL.
+
+Signed-off-by: Konstantin Khlebnikov <khlebnikov@openvz.org>
+Signed-off-by: Tejun Heo <tj@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ kernel/workqueue.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/kernel/workqueue.c
++++ b/kernel/workqueue.c
+@@ -1352,7 +1352,7 @@ void delayed_work_timer_fn(unsigned long
+ /* should have been called from irqsafe timer with irq already off */
+ __queue_work(dwork->cpu, cwq->wq, &dwork->work);
+ }
+-EXPORT_SYMBOL_GPL(delayed_work_timer_fn);
++EXPORT_SYMBOL(delayed_work_timer_fn);
+
+ static void __queue_delayed_work(int cpu, struct workqueue_struct *wq,
+ struct delayed_work *dwork, unsigned long delay)
--- /dev/null
+From 32068f6527b8f1822a30671dedaf59c567325026 Mon Sep 17 00:00:00 2001
+From: Olaf Hering <[mailto:olaf@aepfle.de]>
+Date: Sun, 3 Feb 2013 17:22:37 -0800
+Subject: x86: Hyper-V: register clocksource only if its advertised
+
+From: Olaf Hering <[mailto:olaf@aepfle.de]>
+
+commit 32068f6527b8f1822a30671dedaf59c567325026 upstream.
+
+Enable hyperv_clocksource only if its advertised as a feature.
+XenServer 6 returns the signature which is checked in
+ms_hyperv_platform(), but it does not offer all features. Currently the
+clocksource is enabled unconditionally in ms_hyperv_init_platform(), and
+the result is a hanging guest.
+
+Hyper-V spec Bit 1 indicates the availability of Partition Reference
+Counter. Register the clocksource only if this bit is set.
+
+The guest in question prints this in dmesg:
+ [ 0.000000] Hypervisor detected: Microsoft HyperV
+ [ 0.000000] HyperV: features 0x70, hints 0x0
+
+This bug can be reproduced easily be setting 'viridian=1' in a HVM domU
+.cfg file. A workaround without this patch is to boot the HVM guest with
+'clocksource=jiffies'.
+
+Signed-off-by: Olaf Hering <olaf@aepfle.de>
+Link: http://lkml.kernel.org/r/1359940959-32168-1-git-send-email-kys@microsoft.com
+Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
+Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/kernel/cpu/mshyperv.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/arch/x86/kernel/cpu/mshyperv.c
++++ b/arch/x86/kernel/cpu/mshyperv.c
+@@ -68,7 +68,8 @@ static void __init ms_hyperv_init_platfo
+ printk(KERN_INFO "HyperV: features 0x%x, hints 0x%x\n",
+ ms_hyperv.features, ms_hyperv.hints);
+
+- clocksource_register_hz(&hyperv_cs, NSEC_PER_SEC/100);
++ if (ms_hyperv.features & HV_X64_MSR_TIME_REF_COUNT_AVAILABLE)
++ clocksource_register_hz(&hyperv_cs, NSEC_PER_SEC/100);
+ }
+
+ const __refconst struct hypervisor_x86 x86_hyper_ms_hyperv = {