]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.13-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 20 Mar 2014 18:26:35 +0000 (11:26 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 20 Mar 2014 18:26:35 +0000 (11:26 -0700)
added patches:
asoc-88pm860-fix-io-setup.patch
asoc-pcm-free-path-list-before-exiting-from-error-conditions.patch
asoc-si476x-fix-io-setup.patch
drm-radeon-cik-properly-set-compute-ring-status-on-disable.patch
drm-radeon-cik-properly-set-sdma-ring-status-on-disable.patch
drm-radeon-cik-stop-the-sdma-engines-in-the-enable-function.patch
drm-radeon-fix-minor-typos-in-si_dpm.c.patch
drm-radeon-fix-runpm-disabling-on-non-px-harder.patch
drm-radeon-si-fix-typo-in-dpm-sq-ramping-setup.patch

queue-3.13/asoc-88pm860-fix-io-setup.patch [new file with mode: 0644]
queue-3.13/asoc-pcm-free-path-list-before-exiting-from-error-conditions.patch [new file with mode: 0644]
queue-3.13/asoc-si476x-fix-io-setup.patch [new file with mode: 0644]
queue-3.13/drm-radeon-cik-properly-set-compute-ring-status-on-disable.patch [new file with mode: 0644]
queue-3.13/drm-radeon-cik-properly-set-sdma-ring-status-on-disable.patch [new file with mode: 0644]
queue-3.13/drm-radeon-cik-stop-the-sdma-engines-in-the-enable-function.patch [new file with mode: 0644]
queue-3.13/drm-radeon-fix-minor-typos-in-si_dpm.c.patch [new file with mode: 0644]
queue-3.13/drm-radeon-fix-runpm-disabling-on-non-px-harder.patch [new file with mode: 0644]
queue-3.13/drm-radeon-si-fix-typo-in-dpm-sq-ramping-setup.patch [new file with mode: 0644]
queue-3.13/series

diff --git a/queue-3.13/asoc-88pm860-fix-io-setup.patch b/queue-3.13/asoc-88pm860-fix-io-setup.patch
new file mode 100644 (file)
index 0000000..cfd3f4e
--- /dev/null
@@ -0,0 +1,35 @@
+From 8eeb5c15131d7b5061c10423eda3ae4c68db4eaf Mon Sep 17 00:00:00 2001
+From: Lars-Peter Clausen <lars@metafoo.de>
+Date: Tue, 4 Mar 2014 09:39:24 +0100
+Subject: ASoC: 88pm860: Fix IO setup
+
+From: Lars-Peter Clausen <lars@metafoo.de>
+
+commit 8eeb5c15131d7b5061c10423eda3ae4c68db4eaf upstream.
+
+The 88pm860 is a MFD device and the CODEC driver is using the regmap struct of
+the parent device, hence automatic IO setup will not work and we need to
+manually call snd_soc_codec_set_cache_io(). The issue was introduced in commit
+f9ded3b2e7 ("ASoC: 88pm860x: Use regmap for I/O").
+
+Fixes: f9ded3b2e7 ("ASoC: 88pm860x: Use regmap for I/O").
+Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/codecs/88pm860x-codec.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/sound/soc/codecs/88pm860x-codec.c
++++ b/sound/soc/codecs/88pm860x-codec.c
+@@ -1328,6 +1328,9 @@ static int pm860x_probe(struct snd_soc_c
+       pm860x->codec = codec;
+       codec->control_data = pm860x->regmap;
++      ret = snd_soc_codec_set_cache_io(codec, 0, 0, SND_SOC_REGMAP);
++      if (ret)
++              return ret;
+       for (i = 0; i < 4; i++) {
+               ret = request_threaded_irq(pm860x->irq[i], NULL,
diff --git a/queue-3.13/asoc-pcm-free-path-list-before-exiting-from-error-conditions.patch b/queue-3.13/asoc-pcm-free-path-list-before-exiting-from-error-conditions.patch
new file mode 100644 (file)
index 0000000..a33e1fe
--- /dev/null
@@ -0,0 +1,48 @@
+From e4ad1accb28d0ed8cea6f12395d58686ad344ca7 Mon Sep 17 00:00:00 2001
+From: Patrick Lai <plai@codeaurora.org>
+Date: Sun, 2 Mar 2014 11:52:57 -0800
+Subject: ASoC: pcm: free path list before exiting from error conditions
+
+From: Patrick Lai <plai@codeaurora.org>
+
+commit e4ad1accb28d0ed8cea6f12395d58686ad344ca7 upstream.
+
+dpcm_path_get() allocates dynamic memory to hold path list.
+Corresponding dpcm_path_put() must be called to free the memory.
+dpcm_path_put() is not called under several error conditions.
+This leads to memory leak.
+
+Signed-off-by: Patrick Lai <plai@codeaurora.org>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/soc-pcm.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/sound/soc/soc-pcm.c
++++ b/sound/soc/soc-pcm.c
+@@ -1886,6 +1886,7 @@ int soc_dpcm_runtime_update(struct snd_s
+               paths = dpcm_path_get(fe, SNDRV_PCM_STREAM_PLAYBACK, &list);
+               if (paths < 0) {
++                      dpcm_path_put(&list);
+                       dev_warn(fe->dev, "ASoC: %s no valid %s path\n",
+                                       fe->dai_link->name,  "playback");
+                       mutex_unlock(&card->mutex);
+@@ -1915,6 +1916,7 @@ capture:
+               paths = dpcm_path_get(fe, SNDRV_PCM_STREAM_CAPTURE, &list);
+               if (paths < 0) {
++                      dpcm_path_put(&list);
+                       dev_warn(fe->dev, "ASoC: %s no valid %s path\n",
+                                       fe->dai_link->name,  "capture");
+                       mutex_unlock(&card->mutex);
+@@ -1979,6 +1981,7 @@ static int dpcm_fe_dai_open(struct snd_p
+       fe->dpcm[stream].runtime = fe_substream->runtime;
+       if (dpcm_path_get(fe, stream, &list) <= 0) {
++              dpcm_path_put(&list);
+               dev_dbg(fe->dev, "ASoC: %s no valid %s route\n",
+                       fe->dai_link->name, stream ? "capture" : "playback");
+       }
diff --git a/queue-3.13/asoc-si476x-fix-io-setup.patch b/queue-3.13/asoc-si476x-fix-io-setup.patch
new file mode 100644 (file)
index 0000000..1dabb62
--- /dev/null
@@ -0,0 +1,34 @@
+From 58d4d3c976b33784a1443c446a3d7203bf2153f0 Mon Sep 17 00:00:00 2001
+From: Lars-Peter Clausen <lars@metafoo.de>
+Date: Tue, 4 Mar 2014 09:41:53 +0100
+Subject: ASoC: si476x: Fix IO setup
+
+From: Lars-Peter Clausen <lars@metafoo.de>
+
+commit 58d4d3c976b33784a1443c446a3d7203bf2153f0 upstream.
+
+The si476x is a MFD device and the CODEC driver is using the regmap struct of
+the parent device, hence automatic IO setup will not work and we need to
+manually call snd_soc_codec_set_cache_io(). The issue was introduced commit
+d6173df35f ("ASoC: si476x: Remove custom register I/O implementation")
+
+Fixes: d6173df35f ("ASoC: si476x: Remove custom register I/O implementation")
+Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
+Signed-off-by: Mark Brown <broonie@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/soc/codecs/si476x.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/sound/soc/codecs/si476x.c
++++ b/sound/soc/codecs/si476x.c
+@@ -210,7 +210,7 @@ out:
+ static int si476x_codec_probe(struct snd_soc_codec *codec)
+ {
+       codec->control_data = dev_get_regmap(codec->dev->parent, NULL);
+-      return 0;
++      return snd_soc_codec_set_cache_io(codec, 0, 0, SND_SOC_REGMAP);
+ }
+ static struct snd_soc_dai_ops si476x_dai_ops = {
diff --git a/queue-3.13/drm-radeon-cik-properly-set-compute-ring-status-on-disable.patch b/queue-3.13/drm-radeon-cik-properly-set-compute-ring-status-on-disable.patch
new file mode 100644 (file)
index 0000000..d1f4509
--- /dev/null
@@ -0,0 +1,35 @@
+From b2b3d8d952e4f8d6ac2ce80be96b937f29f6e42e Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Wed, 12 Mar 2014 16:20:44 -0400
+Subject: drm/radeon/cik: properly set compute ring status on disable
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit b2b3d8d952e4f8d6ac2ce80be96b937f29f6e42e upstream.
+
+When we disable the rings, set the status properly.  If
+not other code pathes may try and use the rings which are
+not functional at this point.
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/cik.c |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/radeon/cik.c
++++ b/drivers/gpu/drm/radeon/cik.c
+@@ -4069,8 +4069,11 @@ static void cik_cp_compute_enable(struct
+ {
+       if (enable)
+               WREG32(CP_MEC_CNTL, 0);
+-      else
++      else {
+               WREG32(CP_MEC_CNTL, (MEC_ME1_HALT | MEC_ME2_HALT));
++              rdev->ring[CAYMAN_RING_TYPE_CP1_INDEX].ready = false;
++              rdev->ring[CAYMAN_RING_TYPE_CP2_INDEX].ready = false;
++      }
+       udelay(50);
+ }
diff --git a/queue-3.13/drm-radeon-cik-properly-set-sdma-ring-status-on-disable.patch b/queue-3.13/drm-radeon-cik-properly-set-sdma-ring-status-on-disable.patch
new file mode 100644 (file)
index 0000000..8b68126
--- /dev/null
@@ -0,0 +1,31 @@
+From 7b1bbe883b3ed962ca2be4daf321f318f5091340 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Wed, 12 Mar 2014 15:15:58 -0400
+Subject: drm/radeon/cik: properly set sdma ring status on disable
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 7b1bbe883b3ed962ca2be4daf321f318f5091340 upstream.
+
+When we disable the rings, set the status properly.  If
+not other code pathes may try and use the rings which are
+not functional at this point.
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/cik_sdma.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/gpu/drm/radeon/cik_sdma.c
++++ b/drivers/gpu/drm/radeon/cik_sdma.c
+@@ -193,6 +193,8 @@ static void cik_sdma_gfx_stop(struct rad
+               WREG32(SDMA0_GFX_RB_CNTL + reg_offset, rb_cntl);
+               WREG32(SDMA0_GFX_IB_CNTL + reg_offset, 0);
+       }
++      rdev->ring[R600_RING_TYPE_DMA_INDEX].ready = false;
++      rdev->ring[CAYMAN_RING_TYPE_DMA1_INDEX].ready = false;
+ }
+ /**
diff --git a/queue-3.13/drm-radeon-cik-stop-the-sdma-engines-in-the-enable-function.patch b/queue-3.13/drm-radeon-cik-stop-the-sdma-engines-in-the-enable-function.patch
new file mode 100644 (file)
index 0000000..517def9
--- /dev/null
@@ -0,0 +1,57 @@
+From 07ae78c9798b79bad3d3adf983c94ba23fde54d4 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Wed, 12 Mar 2014 15:26:34 -0400
+Subject: drm/radeon/cik: stop the sdma engines in the enable() function
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 07ae78c9798b79bad3d3adf983c94ba23fde54d4 upstream.
+
+We always stop the rings when disabling the engines so just
+call the stop functions directly from the sdma enable function.
+This way the rings' status is set correctly on suspend so
+there are no problems on resume.  Fixes resume failures that
+result in acceleration getting disabled.
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/cik_sdma.c |   12 +++++-------
+ 1 file changed, 5 insertions(+), 7 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/cik_sdma.c
++++ b/drivers/gpu/drm/radeon/cik_sdma.c
+@@ -222,6 +222,11 @@ void cik_sdma_enable(struct radeon_devic
+       u32 me_cntl, reg_offset;
+       int i;
++      if (enable == false) {
++              cik_sdma_gfx_stop(rdev);
++              cik_sdma_rlc_stop(rdev);
++      }
++
+       for (i = 0; i < 2; i++) {
+               if (i == 0)
+                       reg_offset = SDMA0_REGISTER_OFFSET;
+@@ -349,10 +354,6 @@ static int cik_sdma_load_microcode(struc
+       if (!rdev->sdma_fw)
+               return -EINVAL;
+-      /* stop the gfx rings and rlc compute queues */
+-      cik_sdma_gfx_stop(rdev);
+-      cik_sdma_rlc_stop(rdev);
+-
+       /* halt the MEs */
+       cik_sdma_enable(rdev, false);
+@@ -421,9 +422,6 @@ int cik_sdma_resume(struct radeon_device
+  */
+ void cik_sdma_fini(struct radeon_device *rdev)
+ {
+-      /* stop the gfx rings and rlc compute queues */
+-      cik_sdma_gfx_stop(rdev);
+-      cik_sdma_rlc_stop(rdev);
+       /* halt the MEs */
+       cik_sdma_enable(rdev, false);
+       radeon_ring_fini(rdev, &rdev->ring[R600_RING_TYPE_DMA_INDEX]);
diff --git a/queue-3.13/drm-radeon-fix-minor-typos-in-si_dpm.c.patch b/queue-3.13/drm-radeon-fix-minor-typos-in-si_dpm.c.patch
new file mode 100644 (file)
index 0000000..3a899c9
--- /dev/null
@@ -0,0 +1,39 @@
+From 407b6dfd9afa30cf963fa99bca91870e47965612 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Fri, 17 Jan 2014 12:34:55 -0500
+Subject: drm/radeon: fix minor typos in si_dpm.c
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 407b6dfd9afa30cf963fa99bca91870e47965612 upstream.
+
+Copy/paste typos from the ni code. Should not
+have any functional change.
+
+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 |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/si_dpm.c
++++ b/drivers/gpu/drm/radeon/si_dpm.c
+@@ -2396,7 +2396,7 @@ static int si_populate_sq_ramping_values
+       if (SISLANDS_DPM2_SQ_RAMP_STI_SIZE > (STI_SIZE_MASK >> STI_SIZE_SHIFT))
+               enable_sq_ramping = false;
+-      if (NISLANDS_DPM2_SQ_RAMP_LTI_RATIO <= (LTI_RATIO_MASK >> LTI_RATIO_SHIFT))
++      if (SISLANDS_DPM2_SQ_RAMP_LTI_RATIO <= (LTI_RATIO_MASK >> LTI_RATIO_SHIFT))
+               enable_sq_ramping = false;
+       for (i = 0; i < state->performance_level_count; i++) {
+@@ -5413,7 +5413,7 @@ static void si_populate_mc_reg_addresses
+       for (i = 0, j = 0; j < si_pi->mc_reg_table.last; j++) {
+               if (si_pi->mc_reg_table.valid_flag & (1 << j)) {
+-                      if (i >= SMC_NISLANDS_MC_REGISTER_ARRAY_SIZE)
++                      if (i >= SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE)
+                               break;
+                       mc_reg_table->address[i].s0 =
+                               cpu_to_be16(si_pi->mc_reg_table.mc_reg_address[j].s0);
diff --git a/queue-3.13/drm-radeon-fix-runpm-disabling-on-non-px-harder.patch b/queue-3.13/drm-radeon-fix-runpm-disabling-on-non-px-harder.patch
new file mode 100644 (file)
index 0000000..e26bd11
--- /dev/null
@@ -0,0 +1,45 @@
+From 7848865914c6a63ead674f0f5604b77df7d3874f Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Tue, 11 Mar 2014 15:02:30 -0400
+Subject: drm/radeon: fix runpm disabling on non-PX harder
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 7848865914c6a63ead674f0f5604b77df7d3874f upstream.
+
+Make sure runtime pm is disabled on non-PX hardware.
+Should fix powerdown problems without displays attached.
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/radeon_kms.c |   10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/radeon/radeon_kms.c
++++ b/drivers/gpu/drm/radeon/radeon_kms.c
+@@ -33,6 +33,13 @@
+ #include <linux/vga_switcheroo.h>
+ #include <linux/slab.h>
+ #include <linux/pm_runtime.h>
++
++#if defined(CONFIG_VGA_SWITCHEROO)
++bool radeon_is_px(void);
++#else
++static inline bool radeon_is_px(void) { return false; }
++#endif
++
+ /**
+  * radeon_driver_unload_kms - Main unload function for KMS.
+  *
+@@ -130,7 +137,8 @@ int radeon_driver_load_kms(struct drm_de
+                               "Error during ACPI methods call\n");
+       }
+-      if (radeon_runtime_pm != 0) {
++      if ((radeon_runtime_pm == 1) ||
++          ((radeon_runtime_pm == -1) && radeon_is_px())) {
+               pm_runtime_use_autosuspend(dev->dev);
+               pm_runtime_set_autosuspend_delay(dev->dev, 5000);
+               pm_runtime_set_active(dev->dev);
diff --git a/queue-3.13/drm-radeon-si-fix-typo-in-dpm-sq-ramping-setup.patch b/queue-3.13/drm-radeon-si-fix-typo-in-dpm-sq-ramping-setup.patch
new file mode 100644 (file)
index 0000000..cf1b471
--- /dev/null
@@ -0,0 +1,30 @@
+From 5b43c3cd07981619dbdb1fb935ef705a3e80955f Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Tue, 18 Feb 2014 10:14:46 -0500
+Subject: drm/radeon/si: fix typo in dpm sq ramping setup
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 5b43c3cd07981619dbdb1fb935ef705a3e80955f upstream.
+
+inverted logic.
+
+Noticed-by: Sylvain BERTRAND <sylware@legeek.net>
+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 |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/radeon/si_dpm.c
++++ b/drivers/gpu/drm/radeon/si_dpm.c
+@@ -2396,7 +2396,7 @@ static int si_populate_sq_ramping_values
+       if (SISLANDS_DPM2_SQ_RAMP_STI_SIZE > (STI_SIZE_MASK >> STI_SIZE_SHIFT))
+               enable_sq_ramping = false;
+-      if (SISLANDS_DPM2_SQ_RAMP_LTI_RATIO <= (LTI_RATIO_MASK >> LTI_RATIO_SHIFT))
++      if (SISLANDS_DPM2_SQ_RAMP_LTI_RATIO > (LTI_RATIO_MASK >> LTI_RATIO_SHIFT))
+               enable_sq_ramping = false;
+       for (i = 0; i < state->performance_level_count; i++) {
index 51302a6a8e6b546ec41871413dea22cd111ee5df..8af63fa67768a84169fdf6800d67f2d2c97c40ef 100644 (file)
@@ -101,3 +101,12 @@ drm-radeon-dpm-fix-typo-in-evergreen_smc_firmware_header_softregisters.patch
 drm-i915-fix-pch-pci-device-enumeration.patch
 drm-i915-reject-165mhz-modes-w-dvi-monitors.patch
 drm-radeon-re-order-firmware-loading-in-preparation-for-dpm-rework.patch
+drm-radeon-fix-runpm-disabling-on-non-px-harder.patch
+drm-radeon-cik-properly-set-sdma-ring-status-on-disable.patch
+drm-radeon-cik-stop-the-sdma-engines-in-the-enable-function.patch
+drm-radeon-cik-properly-set-compute-ring-status-on-disable.patch
+drm-radeon-fix-minor-typos-in-si_dpm.c.patch
+drm-radeon-si-fix-typo-in-dpm-sq-ramping-setup.patch
+asoc-pcm-free-path-list-before-exiting-from-error-conditions.patch
+asoc-88pm860-fix-io-setup.patch
+asoc-si476x-fix-io-setup.patch