--- /dev/null
+From 3a08e30de2facffe8e1a25bf4fa62cbc920fbaf6 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Fri, 13 Feb 2009 11:37:08 +0100
+Subject: ALSA: hda - Add missing terminator in slave dig-out array
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 3a08e30de2facffe8e1a25bf4fa62cbc920fbaf6 upstream.
+
+Added the missing terminator for ad1989b_slave_dig_outs[].
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/pci/hda/patch_analog.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/sound/pci/hda/patch_analog.c
++++ b/sound/pci/hda/patch_analog.c
+@@ -1873,8 +1873,8 @@ static hda_nid_t ad1988_capsrc_nids[3] =
+ #define AD1988_SPDIF_OUT_HDMI 0x0b
+ #define AD1988_SPDIF_IN 0x07
+
+-static hda_nid_t ad1989b_slave_dig_outs[2] = {
+- AD1988_SPDIF_OUT, AD1988_SPDIF_OUT_HDMI
++static hda_nid_t ad1989b_slave_dig_outs[] = {
++ AD1988_SPDIF_OUT, AD1988_SPDIF_OUT_HDMI, 0
+ };
+
+ static struct hda_input_mux ad1988_6stack_capture_source = {
--- /dev/null
+From 32cf9a16f4af01573ddec1eb073111fc20a9d7d4 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Thu, 12 Feb 2009 00:06:42 +0100
+Subject: ALSA: mtpav - Fix initial value for input hwport
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 32cf9a16f4af01573ddec1eb073111fc20a9d7d4 upstream.
+
+Fix the initial value for input hwport. The old value (-1) may cause
+Oops when an realtime MIDI byte is received before the input port is
+explicitly given.
+Instead, now it's set to the broadcasting as default.
+
+Tested-by: Holger Dehnhardt <dehnhardt@ahdehnhardt.de>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ sound/drivers/mtpav.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/sound/drivers/mtpav.c
++++ b/sound/drivers/mtpav.c
+@@ -706,7 +706,6 @@ static int __devinit snd_mtpav_probe(str
+ mtp_card->card = card;
+ mtp_card->irq = -1;
+ mtp_card->share_irq = 0;
+- mtp_card->inmidiport = 0xffffffff;
+ mtp_card->inmidistate = 0;
+ mtp_card->outmidihwport = 0xffffffff;
+ init_timer(&mtp_card->timer);
+@@ -719,6 +718,8 @@ static int __devinit snd_mtpav_probe(str
+ if (err < 0)
+ goto __error;
+
++ mtp_card->inmidiport = mtp_card->num_ports + MTPAV_PIDX_BROADCAST;
++
+ err = snd_mtpav_get_ISA(mtp_card);
+ if (err < 0)
+ goto __error;
--- /dev/null
+From 0fb21de0799a985d2da3da14ae5625d724256638 Mon Sep 17 00:00:00 2001
+From: Jiri Kosina <jkosina@suse.cz>
+Date: Wed, 14 Jan 2009 03:03:21 +0100
+Subject: HID: adjust report descriptor fixup for MS 1028 receiver
+
+From: Jiri Kosina <jkosina@suse.cz>
+
+commit 0fb21de0799a985d2da3da14ae5625d724256638 upstream.
+
+Report descriptor fixup for MS 1028 receiver changes also values for
+Keyboard and Consumer, which incorrectly trims the range, causing correct
+events being thrown away before passing to userspace.
+
+We need to keep the GenDesk usage fixup though, as it reports totally bogus
+values about axis.
+
+Reported-by: Lucas Gadani <lgadani@gmail.com>
+Signed-off-by: Jiri Kosina <jkosina@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/hid/hid-microsoft.c | 13 ++++---------
+ 1 file changed, 4 insertions(+), 9 deletions(-)
+
+--- a/drivers/hid/hid-microsoft.c
++++ b/drivers/hid/hid-microsoft.c
+@@ -30,7 +30,7 @@
+ #define MS_NOGET 0x10
+
+ /*
+- * Microsoft Wireless Desktop Receiver (Model 1028) has several
++ * Microsoft Wireless Desktop Receiver (Model 1028) has
+ * 'Usage Min/Max' where it ought to have 'Physical Min/Max'
+ */
+ static void ms_report_fixup(struct hid_device *hdev, __u8 *rdesc,
+@@ -38,17 +38,12 @@ static void ms_report_fixup(struct hid_d
+ {
+ unsigned long quirks = (unsigned long)hid_get_drvdata(hdev);
+
+- if ((quirks & MS_RDESC) && rsize == 571 && rdesc[284] == 0x19 &&
+- rdesc[286] == 0x2a && rdesc[304] == 0x19 &&
+- rdesc[306] == 0x29 && rdesc[352] == 0x1a &&
+- rdesc[355] == 0x2a && rdesc[557] == 0x19 &&
++ if ((quirks & MS_RDESC) && rsize == 571 && rdesc[557] == 0x19 &&
+ rdesc[559] == 0x29) {
+ dev_info(&hdev->dev, "fixing up Microsoft Wireless Receiver "
+ "Model 1028 report descriptor\n");
+- rdesc[284] = rdesc[304] = rdesc[557] = 0x35;
+- rdesc[352] = 0x36;
+- rdesc[286] = rdesc[355] = 0x46;
+- rdesc[306] = rdesc[559] = 0x45;
++ rdesc[557] = 0x35;
++ rdesc[559] = 0x45;
+ }
+ }
+
--- /dev/null
+From 2999b58b795ad81f10e34bdbbfd2742172f247e4 Mon Sep 17 00:00:00 2001
+From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+Date: Sun, 1 Feb 2009 20:46:39 +0400
+Subject: ide/libata: fix ata_id_is_cfa() (take 4)
+
+From: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+
+commit 2999b58b795ad81f10e34bdbbfd2742172f247e4 upstream.
+
+When checking for the CFA feature set support, ata_id_is_cfa() tests bit 2 in
+word 82 of the identify data instead the word 83; it also checks the ATA/PI
+version support in the word 80 (which the CompactFlash specifications have as
+reserved), this having no slightest chance to work on the modern CF cards that
+don't have 0x848A in the word 0...
+
+Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/linux/ata.h | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+--- a/include/linux/ata.h
++++ b/include/linux/ata.h
+@@ -731,12 +731,17 @@ static inline int ata_id_current_chs_val
+
+ static inline int ata_id_is_cfa(const u16 *id)
+ {
+- if (id[ATA_ID_CONFIG] == 0x848A) /* Standard CF */
++ if (id[ATA_ID_CONFIG] == 0x848A) /* Traditional CF */
+ return 1;
+- /* Could be CF hiding as standard ATA */
+- if (ata_id_major_version(id) >= 3 &&
+- id[ATA_ID_COMMAND_SET_1] != 0xFFFF &&
+- (id[ATA_ID_COMMAND_SET_1] & (1 << 2)))
++ /*
++ * CF specs don't require specific value in the word 0 anymore and yet
++ * they forbid to report the ATA version in the word 80 and require the
++ * CFA feature set support to be indicated in the word 83 in this case.
++ * Unfortunately, some cards only follow either of this requirements,
++ * and while those that don't indicate CFA feature support need some
++ * sort of quirk list, it seems impractical for the ones that do...
++ */
++ if ((id[ATA_ID_COMMAND_SET_2] & 0xC004) == 0x4004)
+ return 1;
+ return 0;
+ }
--- /dev/null
+From d89293abd95bfd7dd9229087d6c30c1464c5ac83 Mon Sep 17 00:00:00 2001
+From: Tejun Heo <tj@kernel.org>
+Date: Thu, 29 Jan 2009 20:31:29 +0900
+Subject: libata: fix EH device failure handling
+
+From: Tejun Heo <tj@kernel.org>
+
+commit d89293abd95bfd7dd9229087d6c30c1464c5ac83 upstream.
+
+The dev->pio_mode > XFER_PIO_0 test is there to avoid unnecessary
+speed down warning messages but it accidentally disabled SATA link spd
+down during configuration phase after reset where PIO mode is always
+zero.
+
+This patch fixes the problem by moving the test where it belongs.
+This makes libata probing sequence behave better when the connection
+is flaky at higher link speeds which isn't too uncommon for eSATA
+devices.
+
+Signed-off-by: Tejun Heo <tj@kernel.org>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ata/libata-eh.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/drivers/ata/libata-eh.c
++++ b/drivers/ata/libata-eh.c
+@@ -2959,12 +2959,13 @@ static int ata_eh_handle_dev_fail(struct
+ /* give it just one more chance */
+ ehc->tries[dev->devno] = min(ehc->tries[dev->devno], 1);
+ case -EIO:
+- if (ehc->tries[dev->devno] == 1 && dev->pio_mode > XFER_PIO_0) {
++ if (ehc->tries[dev->devno] == 1) {
+ /* This is the last chance, better to slow
+ * down than lose it.
+ */
+ sata_down_spd_limit(ata_dev_phys_link(dev));
+- ata_down_xfermask_limit(dev, ATA_DNXFER_PIO);
++ if (dev->pio_mode > XFER_PIO_0)
++ ata_down_xfermask_limit(dev, ATA_DNXFER_PIO);
+ }
+ }
+
--- /dev/null
+From kaber@trash.net Fri Feb 13 15:27:29 2009
+From: Eric Leblond <eric@inl.fr>
+Date: Thu, 12 Feb 2009 08:07:37 +0100 (MET)
+Subject: netfilter: fix tuple inversion for Node information request
+To: stable@kernel.org
+Cc: netdev@vger.kernel.org, netfilter-devel@vger.kernel.org, Patrick McHardy <kaber@trash.net>, davem@davemloft.net
+Message-ID: <20090212070734.4876.53101.sendpatchset@x2.localnet>
+
+From: Eric Leblond <eric@inl.fr>
+
+netfilter: fix tuple inversion for Node information request
+
+Upstream commit: a51f42f3c
+
+The patch fixes a typo in the inverse mapping of Node Information
+request. Following draft-ietf-ipngwg-icmp-name-lookups-09, "Querier"
+sends a type 139 (ICMPV6_NI_QUERY) packet to "Responder" which answer
+with a type 140 (ICMPV6_NI_REPLY) packet.
+
+Signed-off-by: Eric Leblond <eric@inl.fr>
+Signed-off-by: Patrick McHardy <kaber@trash.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c
++++ b/net/ipv6/netfilter/nf_conntrack_proto_icmpv6.c
+@@ -49,8 +49,8 @@ static bool icmpv6_pkt_to_tuple(const st
+ static const u_int8_t invmap[] = {
+ [ICMPV6_ECHO_REQUEST - 128] = ICMPV6_ECHO_REPLY + 1,
+ [ICMPV6_ECHO_REPLY - 128] = ICMPV6_ECHO_REQUEST + 1,
+- [ICMPV6_NI_QUERY - 128] = ICMPV6_NI_QUERY + 1,
+- [ICMPV6_NI_REPLY - 128] = ICMPV6_NI_REPLY +1
++ [ICMPV6_NI_QUERY - 128] = ICMPV6_NI_REPLY + 1,
++ [ICMPV6_NI_REPLY - 128] = ICMPV6_NI_QUERY +1
+ };
+
+ static bool icmpv6_invert_tuple(struct nf_conntrack_tuple *tuple,
--- /dev/null
+From kaber@trash.net Fri Feb 13 15:28:03 2009
+From: Qu Haoran <haoran.qu@6wind.com>
+Date: Thu, 12 Feb 2009 08:07:38 +0100 (MET)
+Subject: netfilter: xt_sctp: sctp chunk mapping doesn't work
+To: stable@kernel.org
+Cc: netdev@vger.kernel.org, netfilter-devel@vger.kernel.org, Patrick McHardy <kaber@trash.net>, davem@davemloft.net
+Message-ID: <20090212070735.4876.81436.sendpatchset@x2.localnet>
+
+From: Qu Haoran <haoran.qu@6wind.com>
+
+netfilter: xt_sctp: sctp chunk mapping doesn't work
+
+Upstream commit: d4e2675a
+
+When user tries to map all chunks given in argument, kernel
+works on a copy of the chunkmap, but at the end it doesn't
+check the copy, but the orginal one.
+
+Signed-off-by: Qu Haoran <haoran.qu@6wind.com>
+Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
+Signed-off-by: Patrick McHardy <kaber@trash.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/netfilter/xt_sctp.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/net/netfilter/xt_sctp.c
++++ b/net/netfilter/xt_sctp.c
+@@ -105,7 +105,7 @@ match_packet(const struct sk_buff *skb,
+
+ switch (chunk_match_type) {
+ case SCTP_CHUNK_MATCH_ALL:
+- return SCTP_CHUNKMAP_IS_CLEAR(info->chunkmap);
++ return SCTP_CHUNKMAP_IS_CLEAR(chunkmapcopy);
+ case SCTP_CHUNK_MATCH_ANY:
+ return false;
+ case SCTP_CHUNK_MATCH_ONLY:
tcp-fix-length-tcp_splice_data_recv-passes-to-skb_splice_bits.patch
sparc-enable-syscall-wrappers-for-64-bit.patch
sparc64-annotate-sparc64-specific-syscalls-with-syscall_definex.patch
+alsa-hda-add-missing-terminator-in-slave-dig-out-array.patch
+alsa-mtpav-fix-initial-value-for-input-hwport.patch
+hid-adjust-report-descriptor-fixup-for-ms-1028-receiver.patch
+ide-libata-fix-ata_id_is_cfa.patch
+libata-fix-eh-device-failure-handling.patch
+netfilter-fix-tuple-inversion-for-node-information-request.patch
+netfilter-xt_sctp-sctp-chunk-mapping-doesn-t-work.patch
+x86-microcode_amd-fix-wrong-handling-of-equivalent-cpu-id.patch
--- /dev/null
+From 3c763fd77e66e55d029052da31df0abd9920cb1e Mon Sep 17 00:00:00 2001
+From: Andreas Herrmann <andreas.herrmann3@amd.com>
+Date: Tue, 16 Dec 2008 19:07:47 +0100
+Subject: x86: microcode_amd: fix wrong handling of equivalent CPU id
+
+From: Andreas Herrmann <andreas.herrmann3@amd.com>
+
+commit 3c763fd77e66e55d029052da31df0abd9920cb1e upstream.
+
+Impact: fix bug resulting in non-loaded AMD microcode
+
+mc_header->processor_rev_id is a 2 byte value. Similar is true for
+equiv_cpu in an equiv_cpu_entry -- only 2 bytes are of interest.
+
+Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/kernel/microcode_amd.c | 23 ++++++-----------------
+ 1 file changed, 6 insertions(+), 17 deletions(-)
+
+--- a/arch/x86/kernel/microcode_amd.c
++++ b/arch/x86/kernel/microcode_amd.c
+@@ -62,7 +62,7 @@ struct microcode_header_amd {
+ unsigned int mc_patch_data_checksum;
+ unsigned int nb_dev_id;
+ unsigned int sb_dev_id;
+- unsigned char processor_rev_id[2];
++ u16 processor_rev_id;
+ unsigned char nb_rev_id;
+ unsigned char sb_rev_id;
+ unsigned char bios_api_rev;
+@@ -125,7 +125,7 @@ static int get_matching_microcode(int cp
+
+ while (equiv_cpu_table[i].installed_cpu != 0) {
+ if (current_cpu_id == equiv_cpu_table[i].installed_cpu) {
+- equiv_cpu_id = equiv_cpu_table[i].equiv_cpu;
++ equiv_cpu_id = equiv_cpu_table[i].equiv_cpu & 0xffff;
+ break;
+ }
+ i++;
+@@ -137,21 +137,10 @@ static int get_matching_microcode(int cp
+ return 0;
+ }
+
+- if ((mc_header->processor_rev_id[0]) != (equiv_cpu_id & 0xff)) {
+- printk(KERN_ERR
+- "microcode: CPU%d patch does not match "
+- "(patch is %x, cpu extended is %x) \n",
+- cpu, mc_header->processor_rev_id[0],
+- (equiv_cpu_id & 0xff));
+- return 0;
+- }
+-
+- if ((mc_header->processor_rev_id[1]) != ((equiv_cpu_id >> 16) & 0xff)) {
+- printk(KERN_ERR "microcode: CPU%d patch does not match "
+- "(patch is %x, cpu base id is %x) \n",
+- cpu, mc_header->processor_rev_id[1],
+- ((equiv_cpu_id >> 16) & 0xff));
+-
++ if (mc_header->processor_rev_id != equiv_cpu_id) {
++ printk(KERN_ERR "microcode: CPU%d patch does not match "
++ "(processor_rev_id: %x, eqiv_cpu_id: %x)\n",
++ cpu, mc_header->processor_rev_id, equiv_cpu_id);
+ return 0;
+ }
+