--- /dev/null
+From 15c446e077c9f961528aa2bca781ce60ca12bd35 Mon Sep 17 00:00:00 2001
+From: David Henningsson <david.henningsson@canonical.com>
+Date: Mon, 7 Oct 2013 10:39:59 +0200
+Subject: ALSA: hda - Fix mono speakers and headset mic on Dell Vostro 5470
+
+From: David Henningsson <david.henningsson@canonical.com>
+
+This is a backport for stable. The original commit SHA is
+338cae565c53755de9f87d6a801517940d2d56f7.
+
+On this machine, DAC on node 0x03 seems to give mono output.
+
+Also, it needs additional patches for headset mic support.
+It supports CTIA style headsets only.
+
+Alsa-info available at the bug link below.
+
+BugLink: https://bugs.launchpad.net/bugs/1236228
+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 | 27 +++++++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -3308,6 +3308,15 @@ static void alc269_fixup_limit_int_mic_b
+ }
+ }
+
++static void alc290_fixup_mono_speakers(struct hda_codec *codec,
++ const struct hda_fixup *fix, int action)
++{
++ if (action == HDA_FIXUP_ACT_PRE_PROBE)
++ /* Remove DAC node 0x03, as it seems to be
++ giving mono output */
++ snd_hda_override_wcaps(codec, 0x03, 0);
++}
++
+ enum {
+ ALC269_FIXUP_SONY_VAIO,
+ ALC275_FIXUP_SONY_VAIO_GPIO2,
+@@ -3335,6 +3344,8 @@ enum {
+ ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT,
+ ALC269_FIXUP_DELL1_MIC_NO_PRESENCE,
+ ALC269_FIXUP_DELL2_MIC_NO_PRESENCE,
++ ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
++ ALC290_FIXUP_MONO_SPEAKERS,
+ ALC269_FIXUP_HEADSET_MODE,
+ ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC,
+ ALC269_FIXUP_ASUS_X101_FUNC,
+@@ -3522,6 +3533,15 @@ static const struct hda_fixup alc269_fix
+ .chained = true,
+ .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
+ },
++ [ALC269_FIXUP_DELL3_MIC_NO_PRESENCE] = {
++ .type = HDA_FIXUP_PINS,
++ .v.pins = (const struct hda_pintbl[]) {
++ { 0x1a, 0x01a1913c }, /* use as headset mic, without its own jack detect */
++ { }
++ },
++ .chained = true,
++ .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
++ },
+ [ALC269_FIXUP_HEADSET_MODE] = {
+ .type = HDA_FIXUP_FUNC,
+ .v.func = alc_fixup_headset_mode,
+@@ -3603,6 +3623,12 @@ static const struct hda_fixup alc269_fix
+ { }
+ },
+ },
++ [ALC290_FIXUP_MONO_SPEAKERS] = {
++ .type = HDA_FIXUP_FUNC,
++ .v.func = alc290_fixup_mono_speakers,
++ .chained = true,
++ .chain_id = ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
++ },
+ };
+
+ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
+@@ -3639,6 +3665,7 @@ static const struct snd_pci_quirk alc269
+ SND_PCI_QUIRK(0x1028, 0x0608, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
+ SND_PCI_QUIRK(0x1028, 0x0609, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
+ SND_PCI_QUIRK(0x1028, 0x0613, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
++ SND_PCI_QUIRK(0x1028, 0x0616, "Dell Vostro 5470", ALC290_FIXUP_MONO_SPEAKERS),
+ SND_PCI_QUIRK(0x1028, 0x15cc, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
+ SND_PCI_QUIRK(0x1028, 0x15cd, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
+ SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2),
--- /dev/null
+From 3f0116c3238a96bc18ad4b4acefe4e7be32fa861 Mon Sep 17 00:00:00 2001
+From: Ingo Molnar <mingo@kernel.org>
+Date: Thu, 10 Oct 2013 10:16:30 +0200
+Subject: compiler/gcc4: Add quirk for 'asm goto' miscompilation bug
+
+From: Ingo Molnar <mingo@kernel.org>
+
+commit 3f0116c3238a96bc18ad4b4acefe4e7be32fa861 upstream.
+
+Fengguang Wu, Oleg Nesterov and Peter Zijlstra tracked down
+a kernel crash to a GCC bug: GCC miscompiles certain 'asm goto'
+constructs, as outlined here:
+
+ http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
+
+Implement a workaround suggested by Jakub Jelinek.
+
+Reported-and-tested-by: Fengguang Wu <fengguang.wu@intel.com>
+Reported-by: Oleg Nesterov <oleg@redhat.com>
+Reported-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
+Suggested-by: Jakub Jelinek <jakub@redhat.com>
+Reviewed-by: Richard Henderson <rth@twiddle.net>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+Link: http://lkml.kernel.org/r/20131015062351.GA4666@gmail.com
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm/include/asm/jump_label.h | 2 +-
+ arch/mips/include/asm/jump_label.h | 2 +-
+ arch/powerpc/include/asm/jump_label.h | 2 +-
+ arch/s390/include/asm/jump_label.h | 2 +-
+ arch/sparc/include/asm/jump_label.h | 2 +-
+ arch/x86/include/asm/cpufeature.h | 6 +++---
+ arch/x86/include/asm/jump_label.h | 2 +-
+ include/linux/compiler-gcc4.h | 15 +++++++++++++++
+ 8 files changed, 24 insertions(+), 9 deletions(-)
+
+--- a/arch/arm/include/asm/jump_label.h
++++ b/arch/arm/include/asm/jump_label.h
+@@ -16,7 +16,7 @@
+
+ static __always_inline bool arch_static_branch(struct static_key *key)
+ {
+- asm goto("1:\n\t"
++ asm_volatile_goto("1:\n\t"
+ JUMP_LABEL_NOP "\n\t"
+ ".pushsection __jump_table, \"aw\"\n\t"
+ ".word 1b, %l[l_yes], %c0\n\t"
+--- a/arch/mips/include/asm/jump_label.h
++++ b/arch/mips/include/asm/jump_label.h
+@@ -22,7 +22,7 @@
+
+ static __always_inline bool arch_static_branch(struct static_key *key)
+ {
+- asm goto("1:\tnop\n\t"
++ asm_volatile_goto("1:\tnop\n\t"
+ "nop\n\t"
+ ".pushsection __jump_table, \"aw\"\n\t"
+ WORD_INSN " 1b, %l[l_yes], %0\n\t"
+--- a/arch/powerpc/include/asm/jump_label.h
++++ b/arch/powerpc/include/asm/jump_label.h
+@@ -19,7 +19,7 @@
+
+ static __always_inline bool arch_static_branch(struct static_key *key)
+ {
+- asm goto("1:\n\t"
++ asm_volatile_goto("1:\n\t"
+ "nop\n\t"
+ ".pushsection __jump_table, \"aw\"\n\t"
+ JUMP_ENTRY_TYPE "1b, %l[l_yes], %c0\n\t"
+--- a/arch/s390/include/asm/jump_label.h
++++ b/arch/s390/include/asm/jump_label.h
+@@ -15,7 +15,7 @@
+
+ static __always_inline bool arch_static_branch(struct static_key *key)
+ {
+- asm goto("0: brcl 0,0\n"
++ asm_volatile_goto("0: brcl 0,0\n"
+ ".pushsection __jump_table, \"aw\"\n"
+ ASM_ALIGN "\n"
+ ASM_PTR " 0b, %l[label], %0\n"
+--- a/arch/sparc/include/asm/jump_label.h
++++ b/arch/sparc/include/asm/jump_label.h
+@@ -9,7 +9,7 @@
+
+ static __always_inline bool arch_static_branch(struct static_key *key)
+ {
+- asm goto("1:\n\t"
++ asm_volatile_goto("1:\n\t"
+ "nop\n\t"
+ "nop\n\t"
+ ".pushsection __jump_table, \"aw\"\n\t"
+--- a/arch/x86/include/asm/cpufeature.h
++++ b/arch/x86/include/asm/cpufeature.h
+@@ -373,7 +373,7 @@ static __always_inline __pure bool __sta
+ * Catch too early usage of this before alternatives
+ * have run.
+ */
+- asm goto("1: jmp %l[t_warn]\n"
++ asm_volatile_goto("1: jmp %l[t_warn]\n"
+ "2:\n"
+ ".section .altinstructions,\"a\"\n"
+ " .long 1b - .\n"
+@@ -386,7 +386,7 @@ static __always_inline __pure bool __sta
+ : : "i" (X86_FEATURE_ALWAYS) : : t_warn);
+ #endif
+
+- asm goto("1: jmp %l[t_no]\n"
++ asm_volatile_goto("1: jmp %l[t_no]\n"
+ "2:\n"
+ ".section .altinstructions,\"a\"\n"
+ " .long 1b - .\n"
+@@ -448,7 +448,7 @@ static __always_inline __pure bool _stat
+ * have. Thus, we force the jump to the widest, 4-byte, signed relative
+ * offset even though the last would often fit in less bytes.
+ */
+- asm goto("1: .byte 0xe9\n .long %l[t_dynamic] - 2f\n"
++ asm_volatile_goto("1: .byte 0xe9\n .long %l[t_dynamic] - 2f\n"
+ "2:\n"
+ ".section .altinstructions,\"a\"\n"
+ " .long 1b - .\n" /* src offset */
+--- a/arch/x86/include/asm/jump_label.h
++++ b/arch/x86/include/asm/jump_label.h
+@@ -13,7 +13,7 @@
+
+ static __always_inline bool arch_static_branch(struct static_key *key)
+ {
+- asm goto("1:"
++ asm_volatile_goto("1:"
+ STATIC_KEY_INITIAL_NOP
+ ".pushsection __jump_table, \"aw\" \n\t"
+ _ASM_ALIGN "\n\t"
+--- a/include/linux/compiler-gcc4.h
++++ b/include/linux/compiler-gcc4.h
+@@ -65,6 +65,21 @@
+ #define __visible __attribute__((externally_visible))
+ #endif
+
++/*
++ * GCC 'asm goto' miscompiles certain code sequences:
++ *
++ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
++ *
++ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
++ * Fixed in GCC 4.8.2 and later versions.
++ *
++ * (asm goto is automatically volatile - the naming reflects this.)
++ */
++#if GCC_VERSION <= 40801
++# define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
++#else
++# define asm_volatile_goto(x...) do { asm goto(x); } while (0)
++#endif
+
+ #ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
+ #if GCC_VERSION >= 40400
--- /dev/null
+From 671952a2a290a90017c64e75b7dd0343b0d005b4 Mon Sep 17 00:00:00 2001
+From: Imre Deak <imre.deak@intel.com>
+Date: Tue, 1 Oct 2013 18:11:26 +0300
+Subject: drm/i915: fix rps.vlv_work initialization
+
+From: Imre Deak <imre.deak@intel.com>
+
+commit 671952a2a290a90017c64e75b7dd0343b0d005b4 upstream.
+
+During driver loading we are initializing rps.vlv_work in
+valleyview_enable_rps() via the rps.delayed_resume_work delayed work.
+This is too late since we are using vlv_work already via
+i915_driver_load()->intel_uncore_sanitize()->
+intel_disable_gt_powersave(). This at least leads to the following
+kernel warning:
+
+ INFO: trying to register non-static key.
+ the code is fine but needs lockdep annotation.
+ turning off the locking correctness validator.
+
+Fix this by initialzing vlv_work before we call intel_uncore_sanitize().
+
+The regression was introduced in
+
+commit 7dcd2677ea912573d9ed4bcd629b0023b2d11505
+Author: Konstantin Khlebnikov <khlebnikov@openvz.org>
+Date: Wed Jul 17 10:22:58 2013 +0400
+
+ drm/i915: fix long-standing SNB regression in power consumption
+ after resume
+
+though there was no good reason to initialize the static vlv_work from
+another delayed work to begin with (especially since this will happen
+multiple times).
+
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=69397
+Tested-by: shui yangwei <yangweix.shui@intel.com>
+Signed-off-by: Imre Deak <imre.deak@intel.com>
+Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/i915/intel_pm.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -3603,8 +3603,6 @@ static void valleyview_enable_rps(struct
+ dev_priv->rps.rpe_delay),
+ dev_priv->rps.rpe_delay);
+
+- INIT_DELAYED_WORK(&dev_priv->rps.vlv_work, vlv_rps_timer_work);
+-
+ valleyview_set_rps(dev_priv->dev, dev_priv->rps.rpe_delay);
+
+ /* requires MSI enabled */
+@@ -5567,6 +5565,8 @@ void intel_pm_init(struct drm_device *de
+
+ INIT_DELAYED_WORK(&dev_priv->rps.delayed_resume_work,
+ intel_gen6_powersave_work);
++
++ INIT_DELAYED_WORK(&dev_priv->rps.vlv_work, vlv_rps_timer_work);
+ }
+
+ int sandybridge_pcode_read(struct drm_i915_private *dev_priv, u8 mbox, u32 *val)
--- /dev/null
+From f3fc4884ebe6ae649d3723be14b219230d3b7fd2 Mon Sep 17 00:00:00 2001
+From: Francisco Jerez <currojerez@riseup.net>
+Date: Wed, 2 Oct 2013 15:53:16 -0700
+Subject: drm/i915/hsw: Disable L3 caching of atomic memory operations.
+
+From: Francisco Jerez <currojerez@riseup.net>
+
+commit f3fc4884ebe6ae649d3723be14b219230d3b7fd2 upstream.
+
+Otherwise using any atomic memory operation will lock up the GPU due
+to a Haswell hardware bug.
+
+v2: Use the _MASKED_BIT_ENABLE macro. Drop drm parameter definition.
+
+Signed-off-by: Francisco Jerez <currojerez@riseup.net>
+Reviewed-by: Ben Widawsky <ben@bwidawsk.net>
+Cc: Daniel Vetter <daniel@ffwll.ch>
+[danvet: Fix checkpatch fail.]
+Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/i915/i915_reg.h | 6 ++++++
+ drivers/gpu/drm/i915/intel_pm.c | 5 +++++
+ 2 files changed, 11 insertions(+)
+
+--- a/drivers/gpu/drm/i915/i915_reg.h
++++ b/drivers/gpu/drm/i915/i915_reg.h
+@@ -3791,6 +3791,9 @@
+ #define GEN7_SQ_CHICKEN_MBCUNIT_CONFIG 0x9030
+ #define GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB (1<<11)
+
++#define HSW_SCRATCH1 0xb038
++#define HSW_SCRATCH1_L3_DATA_ATOMICS_DISABLE (1<<27)
++
+ #define HSW_FUSE_STRAP 0x42014
+ #define HSW_CDCLK_LIMIT (1 << 24)
+
+@@ -4624,6 +4627,9 @@
+ #define GEN7_ROW_CHICKEN2_GT2 0xf4f4
+ #define DOP_CLOCK_GATING_DISABLE (1<<0)
+
++#define HSW_ROW_CHICKEN3 0xe49c
++#define HSW_ROW_CHICKEN3_L3_GLOBAL_ATOMICS_DISABLE (1 << 6)
++
+ #define G4X_AUD_VID_DID (dev_priv->info->display_mmio_offset + 0x62020)
+ #define INTEL_AUDIO_DEVCL 0x808629FB
+ #define INTEL_AUDIO_DEVBLC 0x80862801
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -4699,6 +4699,11 @@ static void haswell_init_clock_gating(st
+ I915_WRITE(GEN7_L3_CHICKEN_MODE_REGISTER,
+ GEN7_WA_L3_CHICKEN_MODE);
+
++ /* L3 caching of data atomics doesn't work -- disable it. */
++ I915_WRITE(HSW_SCRATCH1, HSW_SCRATCH1_L3_DATA_ATOMICS_DISABLE);
++ I915_WRITE(HSW_ROW_CHICKEN3,
++ _MASKED_BIT_ENABLE(HSW_ROW_CHICKEN3_L3_GLOBAL_ATOMICS_DISABLE));
++
+ /* This is required by WaCatErrorRejectionIssue:hsw */
+ I915_WRITE(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG,
+ I915_READ(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG) |
--- /dev/null
+From c9976dcf55c8aaa7037427b239f15e5acfc01a3a Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Sun, 29 Sep 2013 19:15:07 +0100
+Subject: drm/i915: Only apply DPMS to the encoder if enabled
+
+From: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit c9976dcf55c8aaa7037427b239f15e5acfc01a3a upstream.
+
+The current test for an attached enabled encoder fails if we have
+multiple connectors aliased to the same encoder - both connectors
+believe they own the enabled encoder and so we attempt to both enable
+and disable DPMS on the encoder, leading to hilarity and an OOPs:
+
+[ 354.803064] WARNING: CPU: 0 PID: 482 at
+/usr/src/linux/dist/3.11.2/drivers/gpu/drm/i915/intel_display.c:3869 intel_modeset_check_state+0x764/0x770 [i915]()
+[ 354.803064] wrong connector dpms state
+[ 354.803084] Modules linked in: nfsd auth_rpcgss oid_registry exportfs nfs lockd sunrpc xt_nat iptable_nat nf_nat_ipv4 nf_nat xt_limit xt_LOG xt_tcpudp nf_conntrack_ipv4 nf_defrag_ipv4 ipt_REJECT ipv6 xt_recent xt_conntrack nf_conntrack iptable_filter ip_tables x_tables snd_hda_codec_realtek snd_hda_codec_hdmi x86_pkg_temp_thermal snd_hda_intel coretemp kvm_intel snd_hda_codec i915 kvm snd_hwdep snd_pcm_oss snd_mixer_oss crc32_pclmul snd_pcm crc32c_intel e1000e intel_agp igb ghash_clmulni_intel intel_gtt aesni_intel cfbfillrect aes_x86_64 cfbimgblt lrw cfbcopyarea drm_kms_helper ptp video thermal processor gf128mul snd_page_alloc drm snd_timer glue_helper 8250_pci snd pps_core ablk_helper agpgart cryptd sg soundcore fan i2c_algo_bit sr_mod thermal_sys 8250 i2c_i801 serial_core
+hwmon cdrom i2c_core evdev button
+[ 354.803086] CPU: 0 PID: 482 Comm: kworker/0:1 Not tainted 3.11.2 #1
+[ 354.803087] Hardware name: Supermicro X10SAE/X10SAE, BIOS 1.00 05/03/2013 [ 354.803091] Workqueue: events console_callback
+[ 354.803092] 0000000000000009 ffff88023611db48 ffffffff814048ac ffff88023611db90
+[ 354.803093] ffff88023611db80 ffffffff8103d4e3 ffff880230d82800 ffff880230f9b800
+[ 354.803094] ffff880230f99000 ffff880230f99448 ffff8802351c0e00 ffff88023611dbe0
+[ 354.803094] Call Trace:
+[ 354.803098] [<ffffffff814048ac>] dump_stack+0x54/0x8d
+[ 354.803101] [<ffffffff8103d4e3>] warn_slowpath_common+0x73/0x90
+[ 354.803103] [<ffffffff8103d547>] warn_slowpath_fmt+0x47/0x50
+[ 354.803109] [<ffffffffa089f1be>] ? intel_ddi_connector_get_hw_state+0x5e/0x110 [i915]
+[ 354.803114] [<ffffffffa0896974>] intel_modeset_check_state+0x764/0x770 [i915]
+[ 354.803117] [<ffffffffa08969bb>] intel_connector_dpms+0x3b/0x60 [i915]
+[ 354.803120] [<ffffffffa037e1d0>] drm_fb_helper_dpms.isra.11+0x120/0x160 [drm_kms_helper]
+[ 354.803122] [<ffffffffa037e24e>] drm_fb_helper_blank+0x3e/0x80 [drm_kms_helper]
+[ 354.803123] [<ffffffff812116c2>] fb_blank+0x52/0xc0
+[ 354.803125] [<ffffffff8121e04b>] fbcon_blank+0x21b/0x2d0
+[ 354.803127] [<ffffffff81062243>] ? update_rq_clock.part.74+0x13/0x30
+[ 354.803129] [<ffffffff81047486>] ? lock_timer_base.isra.30+0x26/0x50
+[ 354.803130] [<ffffffff810472b2>] ? internal_add_timer+0x12/0x40
+[ 354.803131] [<ffffffff81047f48>] ? mod_timer+0xf8/0x1c0
+[ 354.803133] [<ffffffff81266d61>] do_unblank_screen+0xa1/0x1c0
+[ 354.803134] [<ffffffff81268087>] poke_blanked_console+0xc7/0xd0
+[ 354.803136] [<ffffffff812681cf>] console_callback+0x13f/0x160
+[ 354.803137] [<ffffffff81053258>] process_one_work+0x148/0x3d0
+[ 354.803138] [<ffffffff81053f19>] worker_thread+0x119/0x3a0
+[ 354.803140] [<ffffffff81053e00>] ? manage_workers.isra.30+0x2a0/0x2a0
+[ 354.803141] [<ffffffff8105994b>] kthread+0xbb/0xc0
+[ 354.803142] [<ffffffff81059890>] ? kthread_create_on_node+0x120/0x120
+[ 354.803144] [<ffffffff8140b32c>] ret_from_fork+0x7c/0xb0
+[ 354.803145] [<ffffffff81059890>] ? kthread_create_on_node+0x120/0x120
+
+This regression goes back to the big modeset rework and the conversion
+to the new dpms helpers which started with:
+
+commit 5ab432ef4997ce32c9406721b37ef6e97e57dae1
+Author: Daniel Vetter <daniel.vetter@ffwll.ch>
+Date: Sat Jun 30 08:59:56 2012 +0200
+
+ drm/i915/hdmi: convert to encoder->disable/enable
+
+Fixes: igt/kms_flip/dpms-off-confusion
+Reported-and-tested-by: Wakko Warner <wakko@animx.eu.org>
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68030
+Link: http://lkml.kernel.org/r/20130928185023.GA21672@animx.eu.org
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+[danvet: Add regression citation, mention the igt testcase this fixes
+and slap a cc: stable on the patch.]
+Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/i915/intel_display.c | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -3890,8 +3890,6 @@ static void intel_connector_check_state(
+ * consider. */
+ void intel_connector_dpms(struct drm_connector *connector, int mode)
+ {
+- struct intel_encoder *encoder = intel_attached_encoder(connector);
+-
+ /* All the simple cases only support two dpms states. */
+ if (mode != DRM_MODE_DPMS_ON)
+ mode = DRM_MODE_DPMS_OFF;
+@@ -3902,10 +3900,8 @@ void intel_connector_dpms(struct drm_con
+ connector->dpms = mode;
+
+ /* Only need to change hw state when actually enabled */
+- if (encoder->base.crtc)
+- intel_encoder_dpms(encoder, mode);
+- else
+- WARN_ON(encoder->connectors_active != false);
++ if (connector->encoder)
++ intel_encoder_dpms(to_intel_encoder(connector->encoder), mode);
+
+ intel_modeset_check_state(connector->dev);
+ }
--- /dev/null
+From 5fd9c581862a4874c0bdaf16231d8873832bbb99 Mon Sep 17 00:00:00 2001
+From: Dan Carpenter <dan.carpenter@oracle.com>
+Date: Sat, 28 Sep 2013 12:35:31 +0300
+Subject: drm/radeon/dpm: off by one in si_set_mc_special_registers()
+
+From: Dan Carpenter <dan.carpenter@oracle.com>
+
+commit 5fd9c581862a4874c0bdaf16231d8873832bbb99 upstream.
+
+These checks should be ">=" instead of ">". j is used as an offset into
+the table->mc_reg_address[] array and that has
+SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE (16) elements.
+
+Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/si_dpm.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/si_dpm.c
++++ b/drivers/gpu/drm/radeon/si_dpm.c
+@@ -5174,7 +5174,7 @@ static int si_set_mc_special_registers(s
+ table->mc_reg_table_entry[k].mc_data[j] |= 0x100;
+ }
+ j++;
+- if (j > SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE)
++ if (j >= SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE)
+ return -EINVAL;
+
+ if (!pi->mem_gddr5) {
+@@ -5184,7 +5184,7 @@ static int si_set_mc_special_registers(s
+ table->mc_reg_table_entry[k].mc_data[j] =
+ (table->mc_reg_table_entry[k].mc_data[i] & 0xffff0000) >> 16;
+ j++;
+- if (j > SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE)
++ if (j >= SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE)
+ return -EINVAL;
+ }
+ break;
+@@ -5197,7 +5197,7 @@ static int si_set_mc_special_registers(s
+ (temp_reg & 0xffff0000) |
+ (table->mc_reg_table_entry[k].mc_data[i] & 0x0000ffff);
+ j++;
+- if (j > SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE)
++ if (j >= SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE)
+ return -EINVAL;
+ break;
+ default:
--- /dev/null
+From 50b8f5aec04ebec7dbdf2adb17220b9148c99e63 Mon Sep 17 00:00:00 2001
+From: wojciech kapuscinski <wojtask9@wp.pl>
+Date: Tue, 1 Oct 2013 19:54:33 -0400
+Subject: drm/radeon: fix hw contexts for SUMO2 asics
+
+From: wojciech kapuscinski <wojtask9@wp.pl>
+
+commit 50b8f5aec04ebec7dbdf2adb17220b9148c99e63 upstream.
+
+They have 4 rather than 8.
+
+Fixes:
+https://bugs.freedesktop.org/show_bug.cgi?id=63599
+
+Signed-off-by: wojciech kapuscinski <wojtask9@wp.pl>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/evergreen.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/radeon/evergreen.c
++++ b/drivers/gpu/drm/radeon/evergreen.c
+@@ -3126,7 +3126,7 @@ static void evergreen_gpu_init(struct ra
+ rdev->config.evergreen.sx_max_export_size = 256;
+ rdev->config.evergreen.sx_max_export_pos_size = 64;
+ rdev->config.evergreen.sx_max_export_smx_size = 192;
+- rdev->config.evergreen.max_hw_contexts = 8;
++ rdev->config.evergreen.max_hw_contexts = 4;
+ rdev->config.evergreen.sq_num_cf_insts = 2;
+
+ rdev->config.evergreen.sc_prim_fifo_size = 0x40;
--- /dev/null
+From aa3e146d04b6ae37939daeebaec060562b3db559 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Tue, 1 Oct 2013 16:40:45 -0400
+Subject: drm/radeon: fix typo in CP DMA register headers
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit aa3e146d04b6ae37939daeebaec060562b3db559 upstream.
+
+Wrong bit offset for SRC endian swapping.
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/evergreend.h | 4 ++--
+ drivers/gpu/drm/radeon/r600d.h | 2 +-
+ drivers/gpu/drm/radeon/sid.h | 4 ++--
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/evergreend.h
++++ b/drivers/gpu/drm/radeon/evergreend.h
+@@ -1494,7 +1494,7 @@
+ * 6. COMMAND [29:22] | BYTE_COUNT [20:0]
+ */
+ # define PACKET3_CP_DMA_DST_SEL(x) ((x) << 20)
+- /* 0 - SRC_ADDR
++ /* 0 - DST_ADDR
+ * 1 - GDS
+ */
+ # define PACKET3_CP_DMA_ENGINE(x) ((x) << 27)
+@@ -1509,7 +1509,7 @@
+ # define PACKET3_CP_DMA_CP_SYNC (1 << 31)
+ /* COMMAND */
+ # define PACKET3_CP_DMA_DIS_WC (1 << 21)
+-# define PACKET3_CP_DMA_CMD_SRC_SWAP(x) ((x) << 23)
++# define PACKET3_CP_DMA_CMD_SRC_SWAP(x) ((x) << 22)
+ /* 0 - none
+ * 1 - 8 in 16
+ * 2 - 8 in 32
+--- a/drivers/gpu/drm/radeon/r600d.h
++++ b/drivers/gpu/drm/radeon/r600d.h
+@@ -1487,7 +1487,7 @@
+ */
+ # define PACKET3_CP_DMA_CP_SYNC (1 << 31)
+ /* COMMAND */
+-# define PACKET3_CP_DMA_CMD_SRC_SWAP(x) ((x) << 23)
++# define PACKET3_CP_DMA_CMD_SRC_SWAP(x) ((x) << 22)
+ /* 0 - none
+ * 1 - 8 in 16
+ * 2 - 8 in 32
+--- a/drivers/gpu/drm/radeon/sid.h
++++ b/drivers/gpu/drm/radeon/sid.h
+@@ -1490,7 +1490,7 @@
+ * 6. COMMAND [30:21] | BYTE_COUNT [20:0]
+ */
+ # define PACKET3_CP_DMA_DST_SEL(x) ((x) << 20)
+- /* 0 - SRC_ADDR
++ /* 0 - DST_ADDR
+ * 1 - GDS
+ */
+ # define PACKET3_CP_DMA_ENGINE(x) ((x) << 27)
+@@ -1505,7 +1505,7 @@
+ # define PACKET3_CP_DMA_CP_SYNC (1 << 31)
+ /* COMMAND */
+ # define PACKET3_CP_DMA_DIS_WC (1 << 21)
+-# define PACKET3_CP_DMA_CMD_SRC_SWAP(x) ((x) << 23)
++# define PACKET3_CP_DMA_CMD_SRC_SWAP(x) ((x) << 22)
+ /* 0 - none
+ * 1 - 8 in 16
+ * 2 - 8 in 32
--- /dev/null
+From 89cd67b326fa95872cc2b4524cd807128db6071d Mon Sep 17 00:00:00 2001
+From: Dan Carpenter <dan.carpenter@oracle.com>
+Date: Mon, 1 Jul 2013 19:39:34 +0300
+Subject: drm/radeon: forever loop on error in radeon_do_test_moves()
+
+From: Dan Carpenter <dan.carpenter@oracle.com>
+
+commit 89cd67b326fa95872cc2b4524cd807128db6071d upstream.
+
+The error path does this:
+
+ for (--i; i >= 0; --i) {
+
+which is a forever loop because "i" is unsigned.
+
+Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/radeon_test.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/radeon_test.c
++++ b/drivers/gpu/drm/radeon/radeon_test.c
+@@ -36,8 +36,8 @@ static void radeon_do_test_moves(struct
+ struct radeon_bo *vram_obj = NULL;
+ struct radeon_bo **gtt_obj = NULL;
+ uint64_t gtt_addr, vram_addr;
+- unsigned i, n, size;
+- int r, ring;
++ unsigned n, size;
++ int i, r, ring;
+
+ switch (flag) {
+ case RADEON_TEST_COPY_DMA:
watchdog-kempld_wdt-fix-bit-mask-definition.patch
mips-stack-protector-fix-per-task-canary-switch.patch
drm-radeon-dpm-btc-off-by-one-in-btc_set_mc_special_registers.patch
+compiler-gcc4-add-quirk-for-asm-goto-miscompilation-bug.patch
+0311-ALSA-hda-Fix-mono-speakers-and-headset-mic-on-Dell-V.patch
+drm-i915-hsw-disable-l3-caching-of-atomic-memory-operations.patch
+drm-i915-only-apply-dpms-to-the-encoder-if-enabled.patch
+drm-i915-fix-rps.vlv_work-initialization.patch
+drm-radeon-dpm-off-by-one-in-si_set_mc_special_registers.patch
+drm-radeon-forever-loop-on-error-in-radeon_do_test_moves.patch
+drm-radeon-fix-typo-in-cp-dma-register-headers.patch
+drm-radeon-fix-hw-contexts-for-sumo2-asics.patch