From a6f7525693de2c214c7f239c55cc0bcfd8224c75 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 20 Mar 2014 11:26:35 -0700 Subject: [PATCH] 3.13-stable patches 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 | 35 ++++++++++++ ...before-exiting-from-error-conditions.patch | 48 ++++++++++++++++ queue-3.13/asoc-si476x-fix-io-setup.patch | 34 +++++++++++ ...y-set-compute-ring-status-on-disable.patch | 35 ++++++++++++ ...erly-set-sdma-ring-status-on-disable.patch | 31 ++++++++++ ...-sdma-engines-in-the-enable-function.patch | 57 +++++++++++++++++++ ...m-radeon-fix-minor-typos-in-si_dpm.c.patch | 39 +++++++++++++ ...fix-runpm-disabling-on-non-px-harder.patch | 45 +++++++++++++++ ...-si-fix-typo-in-dpm-sq-ramping-setup.patch | 30 ++++++++++ queue-3.13/series | 9 +++ 10 files changed, 363 insertions(+) create mode 100644 queue-3.13/asoc-88pm860-fix-io-setup.patch create mode 100644 queue-3.13/asoc-pcm-free-path-list-before-exiting-from-error-conditions.patch create mode 100644 queue-3.13/asoc-si476x-fix-io-setup.patch create mode 100644 queue-3.13/drm-radeon-cik-properly-set-compute-ring-status-on-disable.patch create mode 100644 queue-3.13/drm-radeon-cik-properly-set-sdma-ring-status-on-disable.patch create mode 100644 queue-3.13/drm-radeon-cik-stop-the-sdma-engines-in-the-enable-function.patch create mode 100644 queue-3.13/drm-radeon-fix-minor-typos-in-si_dpm.c.patch create mode 100644 queue-3.13/drm-radeon-fix-runpm-disabling-on-non-px-harder.patch create mode 100644 queue-3.13/drm-radeon-si-fix-typo-in-dpm-sq-ramping-setup.patch 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 index 00000000000..cfd3f4eb01c --- /dev/null +++ b/queue-3.13/asoc-88pm860-fix-io-setup.patch @@ -0,0 +1,35 @@ +From 8eeb5c15131d7b5061c10423eda3ae4c68db4eaf Mon Sep 17 00:00:00 2001 +From: Lars-Peter Clausen +Date: Tue, 4 Mar 2014 09:39:24 +0100 +Subject: ASoC: 88pm860: Fix IO setup + +From: Lars-Peter Clausen + +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 +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..a33e1feb2e9 --- /dev/null +++ b/queue-3.13/asoc-pcm-free-path-list-before-exiting-from-error-conditions.patch @@ -0,0 +1,48 @@ +From e4ad1accb28d0ed8cea6f12395d58686ad344ca7 Mon Sep 17 00:00:00 2001 +From: Patrick Lai +Date: Sun, 2 Mar 2014 11:52:57 -0800 +Subject: ASoC: pcm: free path list before exiting from error conditions + +From: Patrick Lai + +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 +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..1dabb62a3b0 --- /dev/null +++ b/queue-3.13/asoc-si476x-fix-io-setup.patch @@ -0,0 +1,34 @@ +From 58d4d3c976b33784a1443c446a3d7203bf2153f0 Mon Sep 17 00:00:00 2001 +From: Lars-Peter Clausen +Date: Tue, 4 Mar 2014 09:41:53 +0100 +Subject: ASoC: si476x: Fix IO setup + +From: Lars-Peter Clausen + +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 +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..d1f450907ee --- /dev/null +++ b/queue-3.13/drm-radeon-cik-properly-set-compute-ring-status-on-disable.patch @@ -0,0 +1,35 @@ +From b2b3d8d952e4f8d6ac2ce80be96b937f29f6e42e Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Wed, 12 Mar 2014 16:20:44 -0400 +Subject: drm/radeon/cik: properly set compute ring status on disable + +From: Alex Deucher + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..8b68126594e --- /dev/null +++ b/queue-3.13/drm-radeon-cik-properly-set-sdma-ring-status-on-disable.patch @@ -0,0 +1,31 @@ +From 7b1bbe883b3ed962ca2be4daf321f318f5091340 Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Wed, 12 Mar 2014 15:15:58 -0400 +Subject: drm/radeon/cik: properly set sdma ring status on disable + +From: Alex Deucher + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..517def9614d --- /dev/null +++ b/queue-3.13/drm-radeon-cik-stop-the-sdma-engines-in-the-enable-function.patch @@ -0,0 +1,57 @@ +From 07ae78c9798b79bad3d3adf983c94ba23fde54d4 Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Wed, 12 Mar 2014 15:26:34 -0400 +Subject: drm/radeon/cik: stop the sdma engines in the enable() function + +From: Alex Deucher + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..3a899c937d8 --- /dev/null +++ b/queue-3.13/drm-radeon-fix-minor-typos-in-si_dpm.c.patch @@ -0,0 +1,39 @@ +From 407b6dfd9afa30cf963fa99bca91870e47965612 Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Fri, 17 Jan 2014 12:34:55 -0500 +Subject: drm/radeon: fix minor typos in si_dpm.c + +From: Alex Deucher + +commit 407b6dfd9afa30cf963fa99bca91870e47965612 upstream. + +Copy/paste typos from the ni code. Should not +have any functional change. + +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..e26bd11d325 --- /dev/null +++ b/queue-3.13/drm-radeon-fix-runpm-disabling-on-non-px-harder.patch @@ -0,0 +1,45 @@ +From 7848865914c6a63ead674f0f5604b77df7d3874f Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Tue, 11 Mar 2014 15:02:30 -0400 +Subject: drm/radeon: fix runpm disabling on non-PX harder + +From: Alex Deucher + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 + #include + #include ++ ++#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 index 00000000000..cf1b4716081 --- /dev/null +++ b/queue-3.13/drm-radeon-si-fix-typo-in-dpm-sq-ramping-setup.patch @@ -0,0 +1,30 @@ +From 5b43c3cd07981619dbdb1fb935ef705a3e80955f Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Tue, 18 Feb 2014 10:14:46 -0500 +Subject: drm/radeon/si: fix typo in dpm sq ramping setup + +From: Alex Deucher + +commit 5b43c3cd07981619dbdb1fb935ef705a3e80955f upstream. + +inverted logic. + +Noticed-by: Sylvain BERTRAND +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman + +--- + 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++) { diff --git a/queue-3.13/series b/queue-3.13/series index 51302a6a8e6..8af63fa6776 100644 --- a/queue-3.13/series +++ b/queue-3.13/series @@ -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 -- 2.47.3