From c0fb4ee62b14eef293f85b45b38b77bed2962c23 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 15 Oct 2013 11:49:25 -0700 Subject: [PATCH] 3.11-stable patches added patches: 0311-ALSA-hda-Fix-mono-speakers-and-headset-mic-on-Dell-V.patch compiler-gcc4-add-quirk-for-asm-goto-miscompilation-bug.patch drm-i915-fix-rps.vlv_work-initialization.patch drm-i915-hsw-disable-l3-caching-of-atomic-memory-operations.patch drm-i915-only-apply-dpms-to-the-encoder-if-enabled.patch drm-radeon-dpm-off-by-one-in-si_set_mc_special_registers.patch drm-radeon-fix-hw-contexts-for-sumo2-asics.patch drm-radeon-fix-typo-in-cp-dma-register-headers.patch drm-radeon-forever-loop-on-error-in-radeon_do_test_moves.patch --- ...o-speakers-and-headset-mic-on-Dell-V.patch | 89 ++++++++++ ...uirk-for-asm-goto-miscompilation-bug.patch | 158 ++++++++++++++++++ ...i915-fix-rps.vlv_work-initialization.patch | 65 +++++++ ...-caching-of-atomic-memory-operations.patch | 62 +++++++ ...apply-dpms-to-the-encoder-if-enabled.patch | 97 +++++++++++ ...y-one-in-si_set_mc_special_registers.patch | 50 ++++++ ...deon-fix-hw-contexts-for-sumo2-asics.patch | 33 ++++ ...-fix-typo-in-cp-dma-register-headers.patch | 71 ++++++++ ...oop-on-error-in-radeon_do_test_moves.patch | 36 ++++ queue-3.11/series | 9 + 10 files changed, 670 insertions(+) create mode 100644 queue-3.11/0311-ALSA-hda-Fix-mono-speakers-and-headset-mic-on-Dell-V.patch create mode 100644 queue-3.11/compiler-gcc4-add-quirk-for-asm-goto-miscompilation-bug.patch create mode 100644 queue-3.11/drm-i915-fix-rps.vlv_work-initialization.patch create mode 100644 queue-3.11/drm-i915-hsw-disable-l3-caching-of-atomic-memory-operations.patch create mode 100644 queue-3.11/drm-i915-only-apply-dpms-to-the-encoder-if-enabled.patch create mode 100644 queue-3.11/drm-radeon-dpm-off-by-one-in-si_set_mc_special_registers.patch create mode 100644 queue-3.11/drm-radeon-fix-hw-contexts-for-sumo2-asics.patch create mode 100644 queue-3.11/drm-radeon-fix-typo-in-cp-dma-register-headers.patch create mode 100644 queue-3.11/drm-radeon-forever-loop-on-error-in-radeon_do_test_moves.patch diff --git a/queue-3.11/0311-ALSA-hda-Fix-mono-speakers-and-headset-mic-on-Dell-V.patch b/queue-3.11/0311-ALSA-hda-Fix-mono-speakers-and-headset-mic-on-Dell-V.patch new file mode 100644 index 00000000000..6a573ed7da4 --- /dev/null +++ b/queue-3.11/0311-ALSA-hda-Fix-mono-speakers-and-headset-mic-on-Dell-V.patch @@ -0,0 +1,89 @@ +From 15c446e077c9f961528aa2bca781ce60ca12bd35 Mon Sep 17 00:00:00 2001 +From: David Henningsson +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 + +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 +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + 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), diff --git a/queue-3.11/compiler-gcc4-add-quirk-for-asm-goto-miscompilation-bug.patch b/queue-3.11/compiler-gcc4-add-quirk-for-asm-goto-miscompilation-bug.patch new file mode 100644 index 00000000000..6ec4e8aa1b2 --- /dev/null +++ b/queue-3.11/compiler-gcc4-add-quirk-for-asm-goto-miscompilation-bug.patch @@ -0,0 +1,158 @@ +From 3f0116c3238a96bc18ad4b4acefe4e7be32fa861 Mon Sep 17 00:00:00 2001 +From: Ingo Molnar +Date: Thu, 10 Oct 2013 10:16:30 +0200 +Subject: compiler/gcc4: Add quirk for 'asm goto' miscompilation bug + +From: Ingo Molnar + +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 +Reported-by: Oleg Nesterov +Reported-by: Peter Zijlstra +Suggested-by: Jakub Jelinek +Reviewed-by: Richard Henderson +Cc: Linus Torvalds +Cc: Andrew Morton +Link: http://lkml.kernel.org/r/20131015062351.GA4666@gmail.com +Signed-off-by: Ingo Molnar +Signed-off-by: Greg Kroah-Hartman + +--- + 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 diff --git a/queue-3.11/drm-i915-fix-rps.vlv_work-initialization.patch b/queue-3.11/drm-i915-fix-rps.vlv_work-initialization.patch new file mode 100644 index 00000000000..1b860fc557a --- /dev/null +++ b/queue-3.11/drm-i915-fix-rps.vlv_work-initialization.patch @@ -0,0 +1,65 @@ +From 671952a2a290a90017c64e75b7dd0343b0d005b4 Mon Sep 17 00:00:00 2001 +From: Imre Deak +Date: Tue, 1 Oct 2013 18:11:26 +0300 +Subject: drm/i915: fix rps.vlv_work initialization + +From: Imre Deak + +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 +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 +Signed-off-by: Imre Deak +Signed-off-by: Daniel Vetter +Signed-off-by: Greg Kroah-Hartman + +--- + 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) diff --git a/queue-3.11/drm-i915-hsw-disable-l3-caching-of-atomic-memory-operations.patch b/queue-3.11/drm-i915-hsw-disable-l3-caching-of-atomic-memory-operations.patch new file mode 100644 index 00000000000..3f8f069e181 --- /dev/null +++ b/queue-3.11/drm-i915-hsw-disable-l3-caching-of-atomic-memory-operations.patch @@ -0,0 +1,62 @@ +From f3fc4884ebe6ae649d3723be14b219230d3b7fd2 Mon Sep 17 00:00:00 2001 +From: Francisco Jerez +Date: Wed, 2 Oct 2013 15:53:16 -0700 +Subject: drm/i915/hsw: Disable L3 caching of atomic memory operations. + +From: Francisco Jerez + +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 +Reviewed-by: Ben Widawsky +Cc: Daniel Vetter +[danvet: Fix checkpatch fail.] +Signed-off-by: Daniel Vetter +Signed-off-by: Greg Kroah-Hartman + +--- + 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) | diff --git a/queue-3.11/drm-i915-only-apply-dpms-to-the-encoder-if-enabled.patch b/queue-3.11/drm-i915-only-apply-dpms-to-the-encoder-if-enabled.patch new file mode 100644 index 00000000000..e7c74f3a118 --- /dev/null +++ b/queue-3.11/drm-i915-only-apply-dpms-to-the-encoder-if-enabled.patch @@ -0,0 +1,97 @@ +From c9976dcf55c8aaa7037427b239f15e5acfc01a3a Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Sun, 29 Sep 2013 19:15:07 +0100 +Subject: drm/i915: Only apply DPMS to the encoder if enabled + +From: Chris Wilson + +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] [] dump_stack+0x54/0x8d +[ 354.803101] [] warn_slowpath_common+0x73/0x90 +[ 354.803103] [] warn_slowpath_fmt+0x47/0x50 +[ 354.803109] [] ? intel_ddi_connector_get_hw_state+0x5e/0x110 [i915] +[ 354.803114] [] intel_modeset_check_state+0x764/0x770 [i915] +[ 354.803117] [] intel_connector_dpms+0x3b/0x60 [i915] +[ 354.803120] [] drm_fb_helper_dpms.isra.11+0x120/0x160 [drm_kms_helper] +[ 354.803122] [] drm_fb_helper_blank+0x3e/0x80 [drm_kms_helper] +[ 354.803123] [] fb_blank+0x52/0xc0 +[ 354.803125] [] fbcon_blank+0x21b/0x2d0 +[ 354.803127] [] ? update_rq_clock.part.74+0x13/0x30 +[ 354.803129] [] ? lock_timer_base.isra.30+0x26/0x50 +[ 354.803130] [] ? internal_add_timer+0x12/0x40 +[ 354.803131] [] ? mod_timer+0xf8/0x1c0 +[ 354.803133] [] do_unblank_screen+0xa1/0x1c0 +[ 354.803134] [] poke_blanked_console+0xc7/0xd0 +[ 354.803136] [] console_callback+0x13f/0x160 +[ 354.803137] [] process_one_work+0x148/0x3d0 +[ 354.803138] [] worker_thread+0x119/0x3a0 +[ 354.803140] [] ? manage_workers.isra.30+0x2a0/0x2a0 +[ 354.803141] [] kthread+0xbb/0xc0 +[ 354.803142] [] ? kthread_create_on_node+0x120/0x120 +[ 354.803144] [] ret_from_fork+0x7c/0xb0 +[ 354.803145] [] ? 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 +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 +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 +[danvet: Add regression citation, mention the igt testcase this fixes +and slap a cc: stable on the patch.] +Signed-off-by: Daniel Vetter +Signed-off-by: Greg Kroah-Hartman + +--- + 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); + } diff --git a/queue-3.11/drm-radeon-dpm-off-by-one-in-si_set_mc_special_registers.patch b/queue-3.11/drm-radeon-dpm-off-by-one-in-si_set_mc_special_registers.patch new file mode 100644 index 00000000000..375663a82be --- /dev/null +++ b/queue-3.11/drm-radeon-dpm-off-by-one-in-si_set_mc_special_registers.patch @@ -0,0 +1,50 @@ +From 5fd9c581862a4874c0bdaf16231d8873832bbb99 Mon Sep 17 00:00:00 2001 +From: Dan Carpenter +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 + +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 +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman + +--- + 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: diff --git a/queue-3.11/drm-radeon-fix-hw-contexts-for-sumo2-asics.patch b/queue-3.11/drm-radeon-fix-hw-contexts-for-sumo2-asics.patch new file mode 100644 index 00000000000..8a1b31cdc0c --- /dev/null +++ b/queue-3.11/drm-radeon-fix-hw-contexts-for-sumo2-asics.patch @@ -0,0 +1,33 @@ +From 50b8f5aec04ebec7dbdf2adb17220b9148c99e63 Mon Sep 17 00:00:00 2001 +From: wojciech kapuscinski +Date: Tue, 1 Oct 2013 19:54:33 -0400 +Subject: drm/radeon: fix hw contexts for SUMO2 asics + +From: wojciech kapuscinski + +commit 50b8f5aec04ebec7dbdf2adb17220b9148c99e63 upstream. + +They have 4 rather than 8. + +Fixes: +https://bugs.freedesktop.org/show_bug.cgi?id=63599 + +Signed-off-by: wojciech kapuscinski +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman + +--- + 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; diff --git a/queue-3.11/drm-radeon-fix-typo-in-cp-dma-register-headers.patch b/queue-3.11/drm-radeon-fix-typo-in-cp-dma-register-headers.patch new file mode 100644 index 00000000000..15466f8285d --- /dev/null +++ b/queue-3.11/drm-radeon-fix-typo-in-cp-dma-register-headers.patch @@ -0,0 +1,71 @@ +From aa3e146d04b6ae37939daeebaec060562b3db559 Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Tue, 1 Oct 2013 16:40:45 -0400 +Subject: drm/radeon: fix typo in CP DMA register headers + +From: Alex Deucher + +commit aa3e146d04b6ae37939daeebaec060562b3db559 upstream. + +Wrong bit offset for SRC endian swapping. + +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman + +--- + 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 diff --git a/queue-3.11/drm-radeon-forever-loop-on-error-in-radeon_do_test_moves.patch b/queue-3.11/drm-radeon-forever-loop-on-error-in-radeon_do_test_moves.patch new file mode 100644 index 00000000000..6256b6d8fb1 --- /dev/null +++ b/queue-3.11/drm-radeon-forever-loop-on-error-in-radeon_do_test_moves.patch @@ -0,0 +1,36 @@ +From 89cd67b326fa95872cc2b4524cd807128db6071d Mon Sep 17 00:00:00 2001 +From: Dan Carpenter +Date: Mon, 1 Jul 2013 19:39:34 +0300 +Subject: drm/radeon: forever loop on error in radeon_do_test_moves() + +From: Dan Carpenter + +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 +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman + +--- + 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: diff --git a/queue-3.11/series b/queue-3.11/series index 8f76e3e6d48..56c3201fe74 100644 --- a/queue-3.11/series +++ b/queue-3.11/series @@ -20,3 +20,12 @@ watchdog-ts72xx_wdt-locking-bug-in-ioctl.patch 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 -- 2.47.2