--- /dev/null
+From 7ff34ad80b7080fafaac8efa9ef0061708eddd51 Mon Sep 17 00:00:00 2001
+From: Kailang Yang <kailang@realtek.com>
+Date: Sat, 6 Oct 2012 17:02:30 +0200
+Subject: ALSA: hda - Add new codec ALC283 ALC290 support
+
+From: Kailang Yang <kailang@realtek.com>
+
+commit 7ff34ad80b7080fafaac8efa9ef0061708eddd51 upstream.
+
+These are compatible with standard ALC269 parser.
+
+Signed-off-by: Kailang Yang <kailang@realtek.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_realtek.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -7089,6 +7089,8 @@ static const struct hda_codec_preset snd
+ { .id = 0x10ec0276, .name = "ALC276", .patch = patch_alc269 },
+ { .id = 0x10ec0280, .name = "ALC280", .patch = patch_alc269 },
+ { .id = 0x10ec0282, .name = "ALC282", .patch = patch_alc269 },
++ { .id = 0x10ec0283, .name = "ALC283", .patch = patch_alc269 },
++ { .id = 0x10ec0290, .name = "ALC290", .patch = patch_alc269 },
+ { .id = 0x10ec0861, .rev = 0x100340, .name = "ALC660",
+ .patch = patch_alc861 },
+ { .id = 0x10ec0660, .name = "ALC660-VD", .patch = patch_alc861vd },
--- /dev/null
+From af02dde8a609d8d071c4b31a82df811a55690a4a Mon Sep 17 00:00:00 2001
+From: David Henningsson <david.henningsson@canonical.com>
+Date: Wed, 21 Nov 2012 08:57:58 +0100
+Subject: ALSA: hda - Add support for Realtek ALC292
+
+From: David Henningsson <david.henningsson@canonical.com>
+
+commit af02dde8a609d8d071c4b31a82df811a55690a4a upstream.
+
+We found a new codec ID 292, and that just a simple quirk would enable
+sound output/input on this ALC292 chip.
+
+BugLink: https://bugs.launchpad.net/bugs/1081466
+Tested-by: Acelan Kao <acelan.kao@canonical.com>
+Signed-off-by: David Henningsson <david.henningsson@canonical.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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
+@@ -7092,6 +7092,7 @@ static const struct hda_codec_preset snd
+ { .id = 0x10ec0282, .name = "ALC282", .patch = patch_alc269 },
+ { .id = 0x10ec0283, .name = "ALC283", .patch = patch_alc269 },
+ { .id = 0x10ec0290, .name = "ALC290", .patch = patch_alc269 },
++ { .id = 0x10ec0292, .name = "ALC292", .patch = patch_alc269 },
+ { .id = 0x10ec0861, .rev = 0x100340, .name = "ALC660",
+ .patch = patch_alc861 },
+ { .id = 0x10ec0660, .name = "ALC660-VD", .patch = patch_alc861vd },
--- /dev/null
+From 7110005e8d5c3cd418fc4b64f9f124f004422a9a Mon Sep 17 00:00:00 2001
+From: Duncan Roe <duncan_roe@acslink.net.au>
+Date: Wed, 10 Oct 2012 14:19:50 +0200
+Subject: ALSA: hda - Fix missing beep on ASUS X43U notebook
+
+From: Duncan Roe <duncan_roe@acslink.net.au>
+
+commit 7110005e8d5c3cd418fc4b64f9f124f004422a9a upstream.
+
+Signed-off-by: Duncan Roe <duncan_roe@acslink.net.au>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ 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
+@@ -4280,6 +4280,7 @@ static void alc_auto_init_std(struct hda
+ ((spec)->beep_amp = HDA_COMPOSE_AMP_VAL(nid, 3, idx, dir))
+
+ static const struct snd_pci_quirk beep_white_list[] = {
++ SND_PCI_QUIRK(0x1043, 0x103c, "ASUS", 1),
+ SND_PCI_QUIRK(0x1043, 0x829f, "ASUS", 1),
+ SND_PCI_QUIRK(0x1043, 0x83ce, "EeePC", 1),
+ SND_PCI_QUIRK(0x1043, 0x831a, "EeePC", 1),
--- /dev/null
+From 81b401100c01d2357031e874689f89bd788d13cd Mon Sep 17 00:00:00 2001
+From: Oliver Hartkopp <socketcan@hartkopp.net>
+Date: Mon, 26 Nov 2012 22:24:23 +0100
+Subject: can: bcm: initialize ifindex for timeouts without previous frame reception
+
+From: Oliver Hartkopp <socketcan@hartkopp.net>
+
+commit 81b401100c01d2357031e874689f89bd788d13cd upstream.
+
+Set in the rx_ifindex to pass the correct interface index in the case of a
+message timeout detection. Usually the rx_ifindex value is set at receive
+time. But when no CAN frame has been received the RX_TIMEOUT notification
+did not contain a valid value.
+
+Reported-by: Andre Naujoks <nautsch2@googlemail.com>
+Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ net/can/bcm.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/net/can/bcm.c
++++ b/net/can/bcm.c
+@@ -1084,6 +1084,9 @@ static int bcm_rx_setup(struct bcm_msg_h
+ op->sk = sk;
+ op->ifindex = ifindex;
+
++ /* ifindex for timeout events w/o previous frame reception */
++ op->rx_ifindex = ifindex;
++
+ /* initialize uninitialized (kzalloc) structure */
+ hrtimer_init(&op->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+ op->timer.function = bcm_rx_timeout_handler;
--- /dev/null
+From c9faaa09e2a1335678f09c70a0d0eda095564bab Mon Sep 17 00:00:00 2001
+From: Oliver Hartkopp <socketcan@hartkopp.net>
+Date: Wed, 21 Nov 2012 22:43:59 +0100
+Subject: can: peak_usb: fix hwtstamp assignment
+
+From: Oliver Hartkopp <socketcan@hartkopp.net>
+
+commit c9faaa09e2a1335678f09c70a0d0eda095564bab upstream.
+
+The skb->tstamp is set to the hardware timestamp when available in the USB
+urb message. This leads to user visible timestamps which contain the 'uptime'
+of the USB adapter - and not the usual system generated timestamp.
+
+Fix this wrong assignment by applying the available hardware timestamp to the
+skb_shared_hwtstamps data structure - which is intended for this purpose.
+
+Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/can/usb/peak_usb/pcan_usb.c | 8 ++++++--
+ drivers/net/can/usb/peak_usb/pcan_usb_pro.c | 8 ++++++--
+ 2 files changed, 12 insertions(+), 4 deletions(-)
+
+--- a/drivers/net/can/usb/peak_usb/pcan_usb.c
++++ b/drivers/net/can/usb/peak_usb/pcan_usb.c
+@@ -519,8 +519,10 @@ static int pcan_usb_decode_error(struct
+ mc->pdev->dev.can.state = new_state;
+
+ if (status_len & PCAN_USB_STATUSLEN_TIMESTAMP) {
++ struct skb_shared_hwtstamps *hwts = skb_hwtstamps(skb);
++
+ peak_usb_get_ts_tv(&mc->pdev->time_ref, mc->ts16, &tv);
+- skb->tstamp = timeval_to_ktime(tv);
++ hwts->hwtstamp = timeval_to_ktime(tv);
+ }
+
+ netif_rx(skb);
+@@ -605,6 +607,7 @@ static int pcan_usb_decode_data(struct p
+ struct sk_buff *skb;
+ struct can_frame *cf;
+ struct timeval tv;
++ struct skb_shared_hwtstamps *hwts;
+
+ skb = alloc_can_skb(mc->netdev, &cf);
+ if (!skb)
+@@ -652,7 +655,8 @@ static int pcan_usb_decode_data(struct p
+
+ /* convert timestamp into kernel time */
+ peak_usb_get_ts_tv(&mc->pdev->time_ref, mc->ts16, &tv);
+- skb->tstamp = timeval_to_ktime(tv);
++ hwts = skb_hwtstamps(skb);
++ hwts->hwtstamp = timeval_to_ktime(tv);
+
+ /* push the skb */
+ netif_rx(skb);
+--- a/drivers/net/can/usb/peak_usb/pcan_usb_pro.c
++++ b/drivers/net/can/usb/peak_usb/pcan_usb_pro.c
+@@ -532,6 +532,7 @@ static int pcan_usb_pro_handle_canmsg(st
+ struct can_frame *can_frame;
+ struct sk_buff *skb;
+ struct timeval tv;
++ struct skb_shared_hwtstamps *hwts;
+
+ skb = alloc_can_skb(netdev, &can_frame);
+ if (!skb)
+@@ -549,7 +550,8 @@ static int pcan_usb_pro_handle_canmsg(st
+ memcpy(can_frame->data, rx->data, can_frame->can_dlc);
+
+ peak_usb_get_ts_tv(&usb_if->time_ref, le32_to_cpu(rx->ts32), &tv);
+- skb->tstamp = timeval_to_ktime(tv);
++ hwts = skb_hwtstamps(skb);
++ hwts->hwtstamp = timeval_to_ktime(tv);
+
+ netif_rx(skb);
+ netdev->stats.rx_packets++;
+@@ -570,6 +572,7 @@ static int pcan_usb_pro_handle_error(str
+ u8 err_mask = 0;
+ struct sk_buff *skb;
+ struct timeval tv;
++ struct skb_shared_hwtstamps *hwts;
+
+ /* nothing should be sent while in BUS_OFF state */
+ if (dev->can.state == CAN_STATE_BUS_OFF)
+@@ -664,7 +667,8 @@ static int pcan_usb_pro_handle_error(str
+ dev->can.state = new_state;
+
+ peak_usb_get_ts_tv(&usb_if->time_ref, le32_to_cpu(er->ts32), &tv);
+- skb->tstamp = timeval_to_ktime(tv);
++ hwts = skb_hwtstamps(skb);
++ hwts->hwtstamp = timeval_to_ktime(tv);
+ netif_rx(skb);
+ netdev->stats.rx_packets++;
+ netdev->stats.rx_bytes += can_frame->can_dlc;
--- /dev/null
+From 25389bb207987b5774182f763b9fb65ff08761c8 Mon Sep 17 00:00:00 2001
+From: Jan Kara <jack@suse.cz>
+Date: Fri, 23 Nov 2012 14:03:04 +0100
+Subject: jbd: Fix lock ordering bug in journal_unmap_buffer()
+
+From: Jan Kara <jack@suse.cz>
+
+commit 25389bb207987b5774182f763b9fb65ff08761c8 upstream.
+
+Commit 09e05d48 introduced a wait for transaction commit into
+journal_unmap_buffer() in the case we are truncating a buffer undergoing commit
+in the page stradding i_size on a filesystem with blocksize < pagesize. Sadly
+we forgot to drop buffer lock before waiting for transaction commit and thus
+deadlock is possible when kjournald wants to lock the buffer.
+
+Fix the problem by dropping the buffer lock before waiting for transaction
+commit. Since we are still holding page lock (and that is OK), buffer cannot
+disappear under us.
+
+Signed-off-by: Jan Kara <jack@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/jbd/transaction.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/fs/jbd/transaction.c
++++ b/fs/jbd/transaction.c
+@@ -1961,7 +1961,9 @@ retry:
+ spin_unlock(&journal->j_list_lock);
+ jbd_unlock_bh_state(bh);
+ spin_unlock(&journal->j_state_lock);
++ unlock_buffer(bh);
+ log_wait_commit(journal, tid);
++ lock_buffer(bh);
+ goto retry;
+ }
+ /*
--- /dev/null
+From a7227a0faa117d0bc532aea546ae5ac5f89e8ed7 Mon Sep 17 00:00:00 2001
+From: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
+Date: Fri, 23 Nov 2012 20:55:06 +0100
+Subject: PM / QoS: fix wrong error-checking condition
+
+From: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
+
+commit a7227a0faa117d0bc532aea546ae5ac5f89e8ed7 upstream.
+
+dev_pm_qos_add_request() can return 0, 1, or a negative error code,
+therefore the correct error test is "if (error < 0)." Checking just for
+non-zero return code leads to erroneous setting of the req->dev pointer
+to NULL, which then leads to a repeated call to
+dev_pm_qos_add_ancestor_request() in st1232_ts_irq_handler(). This in turn
+leads to an Oops, when the I2C host adapter is unloaded and reloaded again
+because of the inconsistent state of its QoS request list.
+
+Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/base/power/qos.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/base/power/qos.c
++++ b/drivers/base/power/qos.c
+@@ -451,7 +451,7 @@ int dev_pm_qos_add_ancestor_request(stru
+ if (ancestor)
+ error = dev_pm_qos_add_request(ancestor, req, value);
+
+- if (error)
++ if (error < 0)
+ req->dev = NULL;
+
+ return error;
futex-avoid-wake_futex-for-a-pi-futex_q.patch
mac80211-deinitialize-ibss-internals-after-emptiness-check.patch
radeon-add-agpmode-1-quirk-for-rv250.patch
+can-peak_usb-fix-hwtstamp-assignment.patch
+can-bcm-initialize-ifindex-for-timeouts-without-previous-frame-reception.patch
+jbd-fix-lock-ordering-bug-in-journal_unmap_buffer.patch
+sparc64-not-any-error-from-do_sigaltstack-should-fail-rt_sigreturn.patch
+pm-qos-fix-wrong-error-checking-condition.patch
+writeback-put-unused-inodes-to-lru-after-writeback-completion.patch
+alsa-hda-add-new-codec-alc283-alc290-support.patch
+alsa-hda-fix-missing-beep-on-asus-x43u-notebook.patch
+alsa-hda-add-support-for-realtek-alc292.patch
--- /dev/null
+From fae2ae2a900a5c7bb385fe4075f343e7e2d5daa2 Mon Sep 17 00:00:00 2001
+From: Al Viro <viro@zeniv.linux.org.uk>
+Date: Sun, 18 Nov 2012 22:27:03 -0500
+Subject: sparc64: not any error from do_sigaltstack() should fail rt_sigreturn()
+
+From: Al Viro <viro@zeniv.linux.org.uk>
+
+commit fae2ae2a900a5c7bb385fe4075f343e7e2d5daa2 upstream.
+
+If a signal handler is executed on altstack and another signal comes,
+we will end up with rt_sigreturn() on return from the second handler
+getting -EPERM from do_sigaltstack(). It's perfectly OK, since we
+are not asking to change the settings; in fact, they couldn't have been
+changed during the second handler execution exactly because we'd been
+on altstack all along. 64bit sigreturn on sparc treats any error from
+do_sigaltstack() as "SIGSEGV now"; we need to switch to the same semantics
+we are using on other architectures.
+
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/sparc/kernel/signal_64.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+--- a/arch/sparc/kernel/signal_64.c
++++ b/arch/sparc/kernel/signal_64.c
+@@ -295,9 +295,7 @@ void do_rt_sigreturn(struct pt_regs *reg
+ err |= restore_fpu_state(regs, fpu_save);
+
+ err |= __copy_from_user(&set, &sf->mask, sizeof(sigset_t));
+- err |= do_sigaltstack(&sf->stack, NULL, (unsigned long)sf);
+-
+- if (err)
++ if (err || do_sigaltstack(&sf->stack, NULL, (unsigned long)sf) == -EFAULT)
+ goto segv;
+
+ err |= __get_user(rwin_save, &sf->rwin_save);
--- /dev/null
+From 4eff96dd5283a102e0c1cac95247090be74a38ed Mon Sep 17 00:00:00 2001
+From: Jan Kara <jack@suse.cz>
+Date: Mon, 26 Nov 2012 16:29:51 -0800
+Subject: writeback: put unused inodes to LRU after writeback completion
+
+From: Jan Kara <jack@suse.cz>
+
+commit 4eff96dd5283a102e0c1cac95247090be74a38ed upstream.
+
+Commit 169ebd90131b ("writeback: Avoid iput() from flusher thread")
+removed iget-iput pair from inode writeback. As a side effect, inodes
+that are dirty during iput_final() call won't be ever added to inode LRU
+(iput_final() doesn't add dirty inodes to LRU and later when the inode
+is cleaned there's noone to add the inode there). Thus inodes are
+effectively unreclaimable until someone looks them up again.
+
+The practical effect of this bug is limited by the fact that inodes are
+pinned by a dentry for long enough that the inode gets cleaned. But
+still the bug can have nasty consequences leading up to OOM conditions
+under certain circumstances. Following can easily reproduce the
+problem:
+
+ for (( i = 0; i < 1000; i++ )); do
+ mkdir $i
+ for (( j = 0; j < 1000; j++ )); do
+ touch $i/$j
+ echo 2 > /proc/sys/vm/drop_caches
+ done
+ done
+
+then one needs to run 'sync; ls -lR' to make inodes reclaimable again.
+
+We fix the issue by inserting unused clean inodes into the LRU after
+writeback finishes in inode_sync_complete().
+
+Signed-off-by: Jan Kara <jack@suse.cz>
+Reported-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
+Cc: Al Viro <viro@zeniv.linux.org.uk>
+Cc: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
+Cc: Wu Fengguang <fengguang.wu@intel.com>
+Cc: Dave Chinner <david@fromorbit.com>
+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@linuxfoundation.org>
+
+---
+ fs/fs-writeback.c | 2 ++
+ fs/inode.c | 16 ++++++++++++++--
+ fs/internal.h | 1 +
+ 3 files changed, 17 insertions(+), 2 deletions(-)
+
+--- a/fs/fs-writeback.c
++++ b/fs/fs-writeback.c
+@@ -228,6 +228,8 @@ static void requeue_io(struct inode *ino
+ static void inode_sync_complete(struct inode *inode)
+ {
+ inode->i_state &= ~I_SYNC;
++ /* If inode is clean an unused, put it into LRU now... */
++ inode_add_lru(inode);
+ /* Waiters must see I_SYNC cleared before being woken up */
+ smp_mb();
+ wake_up_bit(&inode->i_state, __I_SYNC);
+--- a/fs/inode.c
++++ b/fs/inode.c
+@@ -408,6 +408,19 @@ static void inode_lru_list_add(struct in
+ spin_unlock(&inode->i_sb->s_inode_lru_lock);
+ }
+
++/*
++ * Add inode to LRU if needed (inode is unused and clean).
++ *
++ * Needs inode->i_lock held.
++ */
++void inode_add_lru(struct inode *inode)
++{
++ if (!(inode->i_state & (I_DIRTY | I_SYNC | I_FREEING | I_WILL_FREE)) &&
++ !atomic_read(&inode->i_count) && inode->i_sb->s_flags & MS_ACTIVE)
++ inode_lru_list_add(inode);
++}
++
++
+ static void inode_lru_list_del(struct inode *inode)
+ {
+ spin_lock(&inode->i_sb->s_inode_lru_lock);
+@@ -1390,8 +1403,7 @@ static void iput_final(struct inode *ino
+
+ if (!drop && (sb->s_flags & MS_ACTIVE)) {
+ inode->i_state |= I_REFERENCED;
+- if (!(inode->i_state & (I_DIRTY|I_SYNC)))
+- inode_lru_list_add(inode);
++ inode_add_lru(inode);
+ spin_unlock(&inode->i_lock);
+ return;
+ }
+--- a/fs/internal.h
++++ b/fs/internal.h
+@@ -110,6 +110,7 @@ extern int open_check_o_direct(struct fi
+ * inode.c
+ */
+ extern spinlock_t inode_sb_list_lock;
++extern void inode_add_lru(struct inode *inode);
+
+ /*
+ * fs-writeback.c