]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
.30 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Mon, 29 Jun 2009 23:04:57 +0000 (16:04 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 29 Jun 2009 23:04:57 +0000 (16:04 -0700)
queue-2.6.30/alsa-ca0106-add-missing-registrations-of-vmaster-controls.patch [new file with mode: 0644]
queue-2.6.30/alsa-cmi8330-fix-mpu-401-pnp-init-copy-paste-bug.patch [new file with mode: 0644]
queue-2.6.30/alsa-hda-add-quirk-for-sony-vaio-z21mn.patch [new file with mode: 0644]
queue-2.6.30/alsa-hda-get-back-input-source-for-alc262-toshiba-s06-model.patch [new file with mode: 0644]
queue-2.6.30/alsa-intel8x0-fix-pcm-position-craziness.patch [new file with mode: 0644]
queue-2.6.30/arm-5545-2-add-flush_kernel_dcache_page-for-arm.patch [new file with mode: 0644]
queue-2.6.30/epoll-fix-nested-calls-support.patch [new file with mode: 0644]
queue-2.6.30/ib-mlx4-add-strong-ordering-to-local-inval-and-fast-reg-work-requests.patch [new file with mode: 0644]
queue-2.6.30/series
queue-2.6.30/x86-handle-initrd-that-extends-into-unusable-memory.patch [new file with mode: 0644]
queue-2.6.30/x86-hpet-mark-per-cpu-interrupts-irqf_timer-to-prevent-resume-failure.patch [new file with mode: 0644]

diff --git a/queue-2.6.30/alsa-ca0106-add-missing-registrations-of-vmaster-controls.patch b/queue-2.6.30/alsa-ca0106-add-missing-registrations-of-vmaster-controls.patch
new file mode 100644 (file)
index 0000000..c1b04ce
--- /dev/null
@@ -0,0 +1,42 @@
+From 601e1cc5df940b59e71c947726640811897d30df Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Tue, 2 Jun 2009 11:37:01 +0200
+Subject: ALSA: ca0106 - Add missing registrations of vmaster controls
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 601e1cc5df940b59e71c947726640811897d30df upstream.
+
+Although the vmaster controls are created, they aren't registered thus
+they don't appear in the real world.  Added the missing snd_ctl_add()
+calls.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/ca0106/ca0106_mixer.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/sound/pci/ca0106/ca0106_mixer.c
++++ b/sound/pci/ca0106/ca0106_mixer.c
+@@ -841,6 +841,9 @@ int __devinit snd_ca0106_mixer(struct sn
+                                             snd_ca0106_master_db_scale);
+       if (!vmaster)
+               return -ENOMEM;
++      err = snd_ctl_add(card, vmaster);
++      if (err < 0)
++              return err;
+       add_slaves(card, vmaster, slave_vols);
+       if (emu->details->spi_dac == 1) {
+@@ -848,6 +851,9 @@ int __devinit snd_ca0106_mixer(struct sn
+                                                     NULL);
+               if (!vmaster)
+                       return -ENOMEM;
++              err = snd_ctl_add(card, vmaster);
++              if (err < 0)
++                      return err;
+               add_slaves(card, vmaster, slave_sws);
+       }
+         return 0;
diff --git a/queue-2.6.30/alsa-cmi8330-fix-mpu-401-pnp-init-copy-paste-bug.patch b/queue-2.6.30/alsa-cmi8330-fix-mpu-401-pnp-init-copy-paste-bug.patch
new file mode 100644 (file)
index 0000000..6802f13
--- /dev/null
@@ -0,0 +1,30 @@
+From c2a30d711852e4f39c8a79135b3caa701f7a8e02 Mon Sep 17 00:00:00 2001
+From: Ondrej Zary <linux@rainbow-software.org>
+Date: Sat, 27 Jun 2009 16:17:08 +0200
+Subject: ALSA: cmi8330: fix MPU-401 PnP init copy&paste bug
+
+From: Ondrej Zary <linux@rainbow-software.org>
+
+commit c2a30d711852e4f39c8a79135b3caa701f7a8e02 upstream.
+
+Fix copy&paste bug in PnP MPU-401 initialization.
+
+Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/isa/cmi8330.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/isa/cmi8330.c
++++ b/sound/isa/cmi8330.c
+@@ -338,7 +338,7 @@ static int __devinit snd_cmi8330_pnp(int
+               return -EBUSY;
+       acard->mpu = pnp_request_card_device(card, id->devs[2].id, NULL);
+-      if (acard->play == NULL)
++      if (acard->mpu == NULL)
+               return -EBUSY;
+       pdev = acard->cap;
diff --git a/queue-2.6.30/alsa-hda-add-quirk-for-sony-vaio-z21mn.patch b/queue-2.6.30/alsa-hda-add-quirk-for-sony-vaio-z21mn.patch
new file mode 100644 (file)
index 0000000..6d375d9
--- /dev/null
@@ -0,0 +1,28 @@
+From 376b508ffde3b17e105265f89b83bdb044b1c1ae Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Mon, 22 Jun 2009 11:03:13 +0200
+Subject: ALSA: hda - Add quirk for Sony VAIO Z21MN
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 376b508ffde3b17e105265f89b83bdb044b1c1ae upstream.
+
+It needs model=toshiba-s06 to work with the digital-mic.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/patch_realtek.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -10915,6 +10915,7 @@ static struct snd_pci_quirk alc262_cfg_t
+       SND_PCI_QUIRK(0x104d, 0x8203, "Sony UX-90", ALC262_HIPPO),
+       SND_PCI_QUIRK(0x104d, 0x820f, "Sony ASSAMD", ALC262_SONY_ASSAMD),
+       SND_PCI_QUIRK(0x104d, 0x9016, "Sony VAIO", ALC262_AUTO), /* dig-only */
++      SND_PCI_QUIRK(0x104d, 0x9025, "Sony VAIO Z21MN", ALC262_TOSHIBA_S06),
+       SND_PCI_QUIRK_MASK(0x104d, 0xff00, 0x9000, "Sony VAIO",
+                          ALC262_SONY_ASSAMD),
+       SND_PCI_QUIRK(0x1179, 0x0001, "Toshiba dynabook SS RX1",
diff --git a/queue-2.6.30/alsa-hda-get-back-input-source-for-alc262-toshiba-s06-model.patch b/queue-2.6.30/alsa-hda-get-back-input-source-for-alc262-toshiba-s06-model.patch
new file mode 100644 (file)
index 0000000..bc07335
--- /dev/null
@@ -0,0 +1,33 @@
+From ae14ef68e8e67ca5b8b29f0eb640f7c106617f4e Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Mon, 22 Jun 2009 08:16:56 +0200
+Subject: ALSA: hda - Get back Input Source for ALC262 toshiba-s06 model
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit ae14ef68e8e67ca5b8b29f0eb640f7c106617f4e upstream.
+
+The commit f9e336f65b666b8f1764d17e9b7c21c90748a37e
+    ALSA: hda - Unify capture mixer creation in realtek codes
+removed the "Input Source" mixer element creation for toshiba-s06 model
+because it contains a digital-mic input.
+
+This patch take the control back.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/patch_realtek.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -11122,6 +11122,7 @@ static struct alc_config_preset alc262_p
+               .capsrc_nids = alc262_dmic_capsrc_nids,
+               .dac_nids = alc262_dac_nids,
+               .adc_nids = alc262_dmic_adc_nids, /* ADC0 */
++              .num_adc_nids = 1, /* single ADC */
+               .dig_out_nid = ALC262_DIGOUT_NID,
+               .num_channel_mode = ARRAY_SIZE(alc262_modes),
+               .channel_mode = alc262_modes,
diff --git a/queue-2.6.30/alsa-intel8x0-fix-pcm-position-craziness.patch b/queue-2.6.30/alsa-intel8x0-fix-pcm-position-craziness.patch
new file mode 100644 (file)
index 0000000..16514e2
--- /dev/null
@@ -0,0 +1,89 @@
+From f708eb1d71dc8ffb184da9f0bc53461c6dc10653 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Mon, 15 Jun 2009 12:31:38 +0200
+Subject: ALSA: intel8x0 - Fix PCM position craziness
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit f708eb1d71dc8ffb184da9f0bc53461c6dc10653 upstream.
+
+The PCM pointer callback sometimes returns invalid positions and this
+screws up the hw_ptr updater in PCM core.  Especially since now the
+jiffies check is optional with xrun_debug, the invalid position is
+handled as is, and causes serious sound skips, etc.
+
+This patch simplifies the position-fix strategy in intel8x0 to be more
+robust:
+- just falls back to the last position if bogus position is detected
+- another sanity check for the backward move of the position due to
+  a race of register update and the base-index update
+
+This patch is applicable also for 2.6.30.
+
+Tested-by: David Miller <davem@davemloft.net>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/intel8x0.c |   24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+--- a/sound/pci/intel8x0.c
++++ b/sound/pci/intel8x0.c
+@@ -356,8 +356,6 @@ struct ichdev {
+         unsigned int position;
+       unsigned int pos_shift;
+       unsigned int last_pos;
+-      unsigned long last_pos_jiffies;
+-      unsigned int jiffy_to_bytes;
+         int frags;
+         int lvi;
+         int lvi_frag;
+@@ -844,7 +842,6 @@ static int snd_intel8x0_pcm_trigger(stru
+       case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
+               val = ICH_IOCE | ICH_STARTBM;
+               ichdev->last_pos = ichdev->position;
+-              ichdev->last_pos_jiffies = jiffies;
+               break;
+       case SNDRV_PCM_TRIGGER_SUSPEND:
+               ichdev->suspended = 1;
+@@ -1048,7 +1045,6 @@ static int snd_intel8x0_pcm_prepare(stru
+                       ichdev->pos_shift = (runtime->sample_bits > 16) ? 2 : 1;
+       }
+       snd_intel8x0_setup_periods(chip, ichdev);
+-      ichdev->jiffy_to_bytes = (runtime->rate * 4 * ichdev->pos_shift) / HZ;
+       return 0;
+ }
+@@ -1073,19 +1069,23 @@ static snd_pcm_uframes_t snd_intel8x0_pc
+                   ptr1 == igetword(chip, ichdev->reg_offset + ichdev->roff_picb))
+                       break;
+       } while (timeout--);
++      ptr = ichdev->last_pos;
+       if (ptr1 != 0) {
+               ptr1 <<= ichdev->pos_shift;
+               ptr = ichdev->fragsize1 - ptr1;
+               ptr += position;
+-              ichdev->last_pos = ptr;
+-              ichdev->last_pos_jiffies = jiffies;
+-      } else {
+-              ptr1 = jiffies - ichdev->last_pos_jiffies;
+-              if (ptr1)
+-                      ptr1 -= 1;
+-              ptr = ichdev->last_pos + ptr1 * ichdev->jiffy_to_bytes;
+-              ptr %= ichdev->size;
++              if (ptr < ichdev->last_pos) {
++                      unsigned int pos_base, last_base;
++                      pos_base = position / ichdev->fragsize1;
++                      last_base = ichdev->last_pos / ichdev->fragsize1;
++                      /* another sanity check; ptr1 can go back to full
++                       * before the base position is updated
++                       */
++                      if (pos_base == last_base)
++                              ptr = ichdev->last_pos;
++              }
+       }
++      ichdev->last_pos = ptr;
+       spin_unlock(&chip->reg_lock);
+       if (ptr >= ichdev->size)
+               return 0;
diff --git a/queue-2.6.30/arm-5545-2-add-flush_kernel_dcache_page-for-arm.patch b/queue-2.6.30/arm-5545-2-add-flush_kernel_dcache_page-for-arm.patch
new file mode 100644 (file)
index 0000000..05671a2
--- /dev/null
@@ -0,0 +1,40 @@
+From 73be1591579084a8103a7005dd3172f3e9dd7362 Mon Sep 17 00:00:00 2001
+From: Nicolas Pitre <nico@cam.org>
+Date: Fri, 12 Jun 2009 03:09:29 +0100
+Subject: ARM: 5545/2: add flush_kernel_dcache_page() for ARM
+
+From: Nicolas Pitre <nico@cam.org>
+
+commit 73be1591579084a8103a7005dd3172f3e9dd7362 upstream.
+
+Without this, the default implementation is a no op which is completely
+wrong with a VIVT cache, and usage of sg_copy_buffer() produces
+unpredictable results.
+
+Tested-by: Sebastian Andrzej Siewior <bigeasy@breakpoint.cc>
+
+Signed-off-by: Nicolas Pitre <nico@marvell.com>
+Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/arm/include/asm/cacheflush.h |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/arch/arm/include/asm/cacheflush.h
++++ b/arch/arm/include/asm/cacheflush.h
+@@ -429,6 +429,14 @@ static inline void flush_anon_page(struc
+               __flush_anon_page(vma, page, vmaddr);
+ }
++#define ARCH_HAS_FLUSH_KERNEL_DCACHE_PAGE
++static inline void flush_kernel_dcache_page(struct page *page)
++{
++      /* highmem pages are always flushed upon kunmap already */
++      if ((cache_is_vivt() || cache_is_vipt_aliasing()) && !PageHighMem(page))
++              __cpuc_flush_dcache_page(page_address(page));
++}
++
+ #define flush_dcache_mmap_lock(mapping) \
+       spin_lock_irq(&(mapping)->tree_lock)
+ #define flush_dcache_mmap_unlock(mapping) \
diff --git a/queue-2.6.30/epoll-fix-nested-calls-support.patch b/queue-2.6.30/epoll-fix-nested-calls-support.patch
new file mode 100644 (file)
index 0000000..20d9185
--- /dev/null
@@ -0,0 +1,118 @@
+From 3fe4a975d662f11037cb710f8b4b158a3e38f9c0 Mon Sep 17 00:00:00 2001
+From: Davide Libenzi <davidel@xmailserver.org>
+Date: Wed, 17 Jun 2009 16:25:58 -0700
+Subject: epoll: fix nested calls support
+
+From: Davide Libenzi <davidel@xmailserver.org>
+
+commit 3fe4a975d662f11037cb710f8b4b158a3e38f9c0 upstream.
+
+This fixes a regression in 2.6.30.
+
+I unfortunately accepted a patch time ago, to drop the "current" usage
+from possible IRQ context, w/out proper thought over it.  The patch
+switched to using the CPU id by bounding the nested call callback with a
+get_cpu()/put_cpu().
+
+Unfortunately the ep_call_nested() function can be called with a callback
+that grabs sleepy locks (from own f_op->poll()), that results in epic
+fails.  The following patch uses the proper "context" depending on the
+path where it is called, and on the kind of callback.
+
+This has been reported by Stefan Richter, that has also verified the patch
+is his previously failing environment.
+
+Signed-off-by: Davide Libenzi <davidel@xmailserver.org>
+Reported-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/eventpoll.c |   21 ++++++++++++---------
+ 1 file changed, 12 insertions(+), 9 deletions(-)
+
+--- a/fs/eventpoll.c
++++ b/fs/eventpoll.c
+@@ -98,7 +98,7 @@ struct epoll_filefd {
+ struct nested_call_node {
+       struct list_head llink;
+       void *cookie;
+-      int cpu;
++      void *ctx;
+ };
+ /*
+@@ -317,17 +317,17 @@ static void ep_nested_calls_init(struct 
+  * @nproc: Nested call core function pointer.
+  * @priv: Opaque data to be passed to the @nproc callback.
+  * @cookie: Cookie to be used to identify this nested call.
++ * @ctx: This instance context.
+  *
+  * Returns: Returns the code returned by the @nproc callback, or -1 if
+  *          the maximum recursion limit has been exceeded.
+  */
+ static int ep_call_nested(struct nested_calls *ncalls, int max_nests,
+                         int (*nproc)(void *, void *, int), void *priv,
+-                        void *cookie)
++                        void *cookie, void *ctx)
+ {
+       int error, call_nests = 0;
+       unsigned long flags;
+-      int this_cpu = get_cpu();
+       struct list_head *lsthead = &ncalls->tasks_call_list;
+       struct nested_call_node *tncur;
+       struct nested_call_node tnode;
+@@ -340,7 +340,7 @@ static int ep_call_nested(struct nested_
+        * very much limited.
+        */
+       list_for_each_entry(tncur, lsthead, llink) {
+-              if (tncur->cpu == this_cpu &&
++              if (tncur->ctx == ctx &&
+                   (tncur->cookie == cookie || ++call_nests > max_nests)) {
+                       /*
+                        * Ops ... loop detected or maximum nest level reached.
+@@ -352,7 +352,7 @@ static int ep_call_nested(struct nested_
+       }
+       /* Add the current task and cookie to the list */
+-      tnode.cpu = this_cpu;
++      tnode.ctx = ctx;
+       tnode.cookie = cookie;
+       list_add(&tnode.llink, lsthead);
+@@ -364,10 +364,9 @@ static int ep_call_nested(struct nested_
+       /* Remove the current task from the list */
+       spin_lock_irqsave(&ncalls->lock, flags);
+       list_del(&tnode.llink);
+- out_unlock:
++out_unlock:
+       spin_unlock_irqrestore(&ncalls->lock, flags);
+-      put_cpu();
+       return error;
+ }
+@@ -408,8 +407,12 @@ static int ep_poll_wakeup_proc(void *pri
+  */
+ static void ep_poll_safewake(wait_queue_head_t *wq)
+ {
++      int this_cpu = get_cpu();
++
+       ep_call_nested(&poll_safewake_ncalls, EP_MAX_NESTS,
+-                     ep_poll_wakeup_proc, NULL, wq);
++                     ep_poll_wakeup_proc, NULL, wq, (void *) (long) this_cpu);
++
++      put_cpu();
+ }
+ /*
+@@ -663,7 +666,7 @@ static unsigned int ep_eventpoll_poll(st
+        * could re-enter here.
+        */
+       pollflags = ep_call_nested(&poll_readywalk_ncalls, EP_MAX_NESTS,
+-                                 ep_poll_readyevents_proc, ep, ep);
++                                 ep_poll_readyevents_proc, ep, ep, current);
+       return pollflags != -1 ? pollflags : 0;
+ }
diff --git a/queue-2.6.30/ib-mlx4-add-strong-ordering-to-local-inval-and-fast-reg-work-requests.patch b/queue-2.6.30/ib-mlx4-add-strong-ordering-to-local-inval-and-fast-reg-work-requests.patch
new file mode 100644 (file)
index 0000000..3304190
--- /dev/null
@@ -0,0 +1,58 @@
+From 2ac6bf4ddc87c3b6b609f8fa82f6ebbffeac12f4 Mon Sep 17 00:00:00 2001
+From: Jack Morgenstein <jackm@dev.mellanox.co.il>
+Date: Fri, 5 Jun 2009 10:36:24 -0700
+Subject: IB/mlx4: Add strong ordering to local inval and fast reg work requests
+
+From: Jack Morgenstein <jackm@dev.mellanox.co.il>
+
+commit 2ac6bf4ddc87c3b6b609f8fa82f6ebbffeac12f4 upstream.
+
+The ConnectX Programmer's Reference Manual states that the "SO" bit
+must be set when posting Fast Register and Local Invalidate send work
+requests.  When this bit is set, the work request will be executed
+only after all previous work requests on the send queue have been
+executed.  (If the bit is not set, Fast Register and Local Invalidate
+WQEs may begin execution too early, which violates the defined
+semantics for these operations)
+
+This fixes the issue with NFS/RDMA reported in
+<http://lists.openfabrics.org/pipermail/general/2009-April/059253.html>
+
+Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
+Signed-off-by: Roland Dreier <rolandd@cisco.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/infiniband/hw/mlx4/qp.c |    4 ++++
+ include/linux/mlx4/qp.h         |    1 +
+ 2 files changed, 5 insertions(+)
+
+--- a/drivers/infiniband/hw/mlx4/qp.c
++++ b/drivers/infiniband/hw/mlx4/qp.c
+@@ -1585,12 +1585,16 @@ int mlx4_ib_post_send(struct ib_qp *ibqp
+                               break;
+                       case IB_WR_LOCAL_INV:
++                              ctrl->srcrb_flags |=
++                                      cpu_to_be32(MLX4_WQE_CTRL_STRONG_ORDER);
+                               set_local_inv_seg(wqe, wr->ex.invalidate_rkey);
+                               wqe  += sizeof (struct mlx4_wqe_local_inval_seg);
+                               size += sizeof (struct mlx4_wqe_local_inval_seg) / 16;
+                               break;
+                       case IB_WR_FAST_REG_MR:
++                              ctrl->srcrb_flags |=
++                                      cpu_to_be32(MLX4_WQE_CTRL_STRONG_ORDER);
+                               set_fmr_seg(wqe, wr);
+                               wqe  += sizeof (struct mlx4_wqe_fmr_seg);
+                               size += sizeof (struct mlx4_wqe_fmr_seg) / 16;
+--- a/include/linux/mlx4/qp.h
++++ b/include/linux/mlx4/qp.h
+@@ -165,6 +165,7 @@ enum {
+       MLX4_WQE_CTRL_IP_CSUM           = 1 << 4,
+       MLX4_WQE_CTRL_TCP_UDP_CSUM      = 1 << 5,
+       MLX4_WQE_CTRL_INS_VLAN          = 1 << 6,
++      MLX4_WQE_CTRL_STRONG_ORDER      = 1 << 7,
+ };
+ struct mlx4_wqe_ctrl_seg {
index 6f71d03f92a86d8371cb3b303a9269db02ca3580..b665942b8460e8c481a9b07a6cc832d248ead2d4 100644 (file)
@@ -44,3 +44,13 @@ x86-enable-gart-iommu-only-after-setting-up-protection-methods.patch
 x86-move-rdtsc_barrier-into-the-tsc-vread-method.patch
 x86-fix-uv-bau-sending-buffer-initialization.patch
 x86-add-quirk-for-reboot-stalls-on-a-dell-optiplex-360.patch
+x86-handle-initrd-that-extends-into-unusable-memory.patch
+alsa-ca0106-add-missing-registrations-of-vmaster-controls.patch
+alsa-intel8x0-fix-pcm-position-craziness.patch
+alsa-hda-get-back-input-source-for-alc262-toshiba-s06-model.patch
+alsa-hda-add-quirk-for-sony-vaio-z21mn.patch
+alsa-cmi8330-fix-mpu-401-pnp-init-copy-paste-bug.patch
+x86-hpet-mark-per-cpu-interrupts-irqf_timer-to-prevent-resume-failure.patch
+arm-5545-2-add-flush_kernel_dcache_page-for-arm.patch
+ib-mlx4-add-strong-ordering-to-local-inval-and-fast-reg-work-requests.patch
+epoll-fix-nested-calls-support.patch
diff --git a/queue-2.6.30/x86-handle-initrd-that-extends-into-unusable-memory.patch b/queue-2.6.30/x86-handle-initrd-that-extends-into-unusable-memory.patch
new file mode 100644 (file)
index 0000000..a67bf10
--- /dev/null
@@ -0,0 +1,76 @@
+From 8c5dd8f43367f4f266dd616f11658005bc2d20ef Mon Sep 17 00:00:00 2001
+From: Yinghai Lu <yinghai@kernel.org>
+Date: Thu, 4 Jun 2009 19:14:22 -0700
+Subject: x86: handle initrd that extends into unusable memory
+
+From: Yinghai Lu <yinghai@kernel.org>
+
+commit 8c5dd8f43367f4f266dd616f11658005bc2d20ef upstream.
+
+On a system where system memory (according e820) is not covered by
+mtrr, mtrr_trim_memory converts a portion of memory to reserved, but
+bootloader has already put the initrd in that range.
+
+Thus, we need to have 64bit to use relocate_initrd too.
+
+[ Impact: fix using initrd when mtrr_trim_memory happen ]
+
+Signed-off-by: Yinghai Lu <yinghai@kernel.org>
+Signed-off-by: H. Peter Anvin <hpa@zytor.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/kernel/setup.c |   15 +++------------
+ 1 file changed, 3 insertions(+), 12 deletions(-)
+
+--- a/arch/x86/kernel/setup.c
++++ b/arch/x86/kernel/setup.c
+@@ -293,15 +293,13 @@ static void __init reserve_brk(void)
+ #ifdef CONFIG_BLK_DEV_INITRD
+-#ifdef CONFIG_X86_32
+-
+ #define MAX_MAP_CHUNK (NR_FIX_BTMAPS << PAGE_SHIFT)
+ static void __init relocate_initrd(void)
+ {
+       u64 ramdisk_image = boot_params.hdr.ramdisk_image;
+       u64 ramdisk_size  = boot_params.hdr.ramdisk_size;
+-      u64 end_of_lowmem = max_low_pfn << PAGE_SHIFT;
++      u64 end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT;
+       u64 ramdisk_here;
+       unsigned long slop, clen, mapaddr;
+       char *p, *q;
+@@ -357,14 +355,13 @@ static void __init relocate_initrd(void)
+               ramdisk_image, ramdisk_image + ramdisk_size - 1,
+               ramdisk_here, ramdisk_here + ramdisk_size - 1);
+ }
+-#endif
+ static void __init reserve_initrd(void)
+ {
+       u64 ramdisk_image = boot_params.hdr.ramdisk_image;
+       u64 ramdisk_size  = boot_params.hdr.ramdisk_size;
+       u64 ramdisk_end   = ramdisk_image + ramdisk_size;
+-      u64 end_of_lowmem = max_low_pfn << PAGE_SHIFT;
++      u64 end_of_lowmem = max_low_pfn_mapped << PAGE_SHIFT;
+       if (!boot_params.hdr.type_of_loader ||
+           !ramdisk_image || !ramdisk_size)
+@@ -394,14 +391,8 @@ static void __init reserve_initrd(void)
+               return;
+       }
+-#ifdef CONFIG_X86_32
+       relocate_initrd();
+-#else
+-      printk(KERN_ERR "initrd extends beyond end of memory "
+-             "(0x%08llx > 0x%08llx)\ndisabling initrd\n",
+-             ramdisk_end, end_of_lowmem);
+-      initrd_start = 0;
+-#endif
++
+       free_early(ramdisk_image, ramdisk_end);
+ }
+ #else
diff --git a/queue-2.6.30/x86-hpet-mark-per-cpu-interrupts-irqf_timer-to-prevent-resume-failure.patch b/queue-2.6.30/x86-hpet-mark-per-cpu-interrupts-irqf_timer-to-prevent-resume-failure.patch
new file mode 100644 (file)
index 0000000..f987861
--- /dev/null
@@ -0,0 +1,42 @@
+From 507fa3a3d80365c595113a5ac3232309e3dbf5d8 Mon Sep 17 00:00:00 2001
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Sun, 14 Jun 2009 17:46:01 +0200
+Subject: x86: hpet: Mark per cpu interrupts IRQF_TIMER to prevent resume failure
+
+From: Thomas Gleixner <tglx@linutronix.de>
+
+commit 507fa3a3d80365c595113a5ac3232309e3dbf5d8 upstream.
+
+timer interrupts are excluded from being disabled during suspend. The
+clock events code manages the disabling of clock events on its own
+because the timer interrupt needs to be functional before the resume
+code reenables the device interrupts.
+
+The hpet per cpu timers request their interrupt without setting the
+IRQF_TIMER flag so suspend_device_irqs() disables them as well which
+results in a fatal resume failure on the boot CPU.
+
+Adding IRQF_TIMER to the interupt flags when requesting the hpet per
+cpu timer interrupts solves the problem.
+
+Reported-by: Benjamin S. <sbenni@gmx.de>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Tested-by: Benjamin S. <sbenni@gmx.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/kernel/hpet.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/arch/x86/kernel/hpet.c
++++ b/arch/x86/kernel/hpet.c
+@@ -510,7 +510,8 @@ static int hpet_setup_irq(struct hpet_de
+ {
+       if (request_irq(dev->irq, hpet_interrupt_handler,
+-                      IRQF_DISABLED|IRQF_NOBALANCING, dev->name, dev))
++                      IRQF_TIMER | IRQF_DISABLED | IRQF_NOBALANCING,
++                      dev->name, dev))
+               return -1;
+       disable_irq(dev->irq);