]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 3 Oct 2013 02:31:53 +0000 (19:31 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 3 Oct 2013 02:31:53 +0000 (19:31 -0700)
added patches:
drm-radeon-add-missing-hdmi-callbacks-for-rv6xx.patch
drm-radeon-avoid-uvd-corruption-on-agp-cards-using-gpu-gart.patch
drm-radeon-disable-tests-benchmarks-if-accel-is-disabled.patch
drm-radeon-fix-hdmi-audio-on-dce3.0-3.1-asics.patch
drm-radeon-make-r100_cp_ring_info-and-radeon_ring_gfx-safe-v2.patch

queue-3.10/drm-radeon-add-missing-hdmi-callbacks-for-rv6xx.patch [new file with mode: 0644]
queue-3.10/drm-radeon-avoid-uvd-corruption-on-agp-cards-using-gpu-gart.patch [new file with mode: 0644]
queue-3.10/drm-radeon-disable-tests-benchmarks-if-accel-is-disabled.patch [new file with mode: 0644]
queue-3.10/drm-radeon-fix-hdmi-audio-on-dce3.0-3.1-asics.patch [new file with mode: 0644]
queue-3.10/drm-radeon-make-r100_cp_ring_info-and-radeon_ring_gfx-safe-v2.patch [new file with mode: 0644]
queue-3.10/series

diff --git a/queue-3.10/drm-radeon-add-missing-hdmi-callbacks-for-rv6xx.patch b/queue-3.10/drm-radeon-add-missing-hdmi-callbacks-for-rv6xx.patch
new file mode 100644 (file)
index 0000000..34fe439
--- /dev/null
@@ -0,0 +1,36 @@
+From 99d79aa2f3b7729e7290e8bda5d0dd8b0240ec62 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Mon, 23 Sep 2013 15:47:08 -0400
+Subject: drm/radeon: add missing hdmi callbacks for rv6xx
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 99d79aa2f3b7729e7290e8bda5d0dd8b0240ec62 upstream.
+
+When dpm was merged, I added a new asic struct for
+rv6xx, but it never got properly updated when the
+hdmi callbacks were added due to the two patch sets
+being developed in parallel.
+
+Fixes:
+https://bugs.freedesktop.org/show_bug.cgi?id=69729
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Reviewed-by: Christian König <christian.koenig@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/radeon_asic.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/gpu/drm/radeon/radeon_asic.c
++++ b/drivers/gpu/drm/radeon/radeon_asic.c
+@@ -892,6 +892,8 @@ static struct radeon_asic r520_asic = {
+               .wait_for_vblank = &avivo_wait_for_vblank,
+               .set_backlight_level = &atombios_set_backlight_level,
+               .get_backlight_level = &atombios_get_backlight_level,
++              .hdmi_enable = &r600_hdmi_enable,
++              .hdmi_setmode = &r600_hdmi_setmode,
+       },
+       .copy = {
+               .blit = &r100_copy_blit,
diff --git a/queue-3.10/drm-radeon-avoid-uvd-corruption-on-agp-cards-using-gpu-gart.patch b/queue-3.10/drm-radeon-avoid-uvd-corruption-on-agp-cards-using-gpu-gart.patch
new file mode 100644 (file)
index 0000000..8a37b8e
--- /dev/null
@@ -0,0 +1,33 @@
+From 4ca5a6cba53e13b8fd153b0762b4128fab6a3cfb Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Sun, 15 Sep 2013 23:23:07 -0400
+Subject: drm/radeon: avoid UVD corruption on AGP cards using GPU gart
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 4ca5a6cba53e13b8fd153b0762b4128fab6a3cfb upstream.
+
+If the user has forced the driver to use the internal GPU gart
+rather than AGP on an AGP card, force the buffers to vram
+as well.
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Reviewed-by: Christian König <christian.koenig@amd.com>
+Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/radeon_cs.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/radeon/radeon_cs.c
++++ b/drivers/gpu/drm/radeon/radeon_cs.c
+@@ -84,7 +84,7 @@ static int radeon_cs_parser_relocs(struc
+                  VRAM, also but everything into VRAM on AGP cards to avoid
+                  image corruptions */
+               if (p->ring == R600_RING_TYPE_UVD_INDEX &&
+-                  (i == 0 || p->rdev->flags & RADEON_IS_AGP)) {
++                  (i == 0 || drm_pci_device_is_agp(p->rdev->ddev))) {
+                       /* TODO: is this still needed for NI+ ? */
+                       p->relocs[i].lobj.domain =
+                               RADEON_GEM_DOMAIN_VRAM;
diff --git a/queue-3.10/drm-radeon-disable-tests-benchmarks-if-accel-is-disabled.patch b/queue-3.10/drm-radeon-disable-tests-benchmarks-if-accel-is-disabled.patch
new file mode 100644 (file)
index 0000000..ea33444
--- /dev/null
@@ -0,0 +1,49 @@
+From 4a1132a023eb48cf10522d84c5908d43b612c041 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Mon, 23 Sep 2013 10:38:26 -0400
+Subject: drm/radeon: disable tests/benchmarks if accel is disabled
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 4a1132a023eb48cf10522d84c5908d43b612c041 upstream.
+
+The tests are only usable if the acceleration engines have
+been successfully initialized.
+
+Based on an initial patch from: Alex Ivanov <gnidorah@p0n4ik.tk>
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/radeon_device.c |   15 ++++++++++++---
+ 1 file changed, 12 insertions(+), 3 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/radeon_device.c
++++ b/drivers/gpu/drm/radeon/radeon_device.c
+@@ -1196,13 +1196,22 @@ int radeon_device_init(struct radeon_dev
+                       return r;
+       }
+       if ((radeon_testing & 1)) {
+-              radeon_test_moves(rdev);
++              if (rdev->accel_working)
++                      radeon_test_moves(rdev);
++              else
++                      DRM_INFO("radeon: acceleration disabled, skipping move tests\n");
+       }
+       if ((radeon_testing & 2)) {
+-              radeon_test_syncing(rdev);
++              if (rdev->accel_working)
++                      radeon_test_syncing(rdev);
++              else
++                      DRM_INFO("radeon: acceleration disabled, skipping sync tests\n");
+       }
+       if (radeon_benchmarking) {
+-              radeon_benchmark(rdev, radeon_benchmarking);
++              if (rdev->accel_working)
++                      radeon_benchmark(rdev, radeon_benchmarking);
++              else
++                      DRM_INFO("radeon: acceleration disabled, skipping benchmarks\n");
+       }
+       return 0;
+ }
diff --git a/queue-3.10/drm-radeon-fix-hdmi-audio-on-dce3.0-3.1-asics.patch b/queue-3.10/drm-radeon-fix-hdmi-audio-on-dce3.0-3.1-asics.patch
new file mode 100644 (file)
index 0000000..ebf32d1
--- /dev/null
@@ -0,0 +1,57 @@
+From 58d327da9721f7a0f6e46c8dfa5cc5546fd7078a Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Wed, 25 Sep 2013 12:04:37 -0400
+Subject: drm/radeon: fix hdmi audio on DCE3.0/3.1 asics
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 58d327da9721f7a0f6e46c8dfa5cc5546fd7078a upstream.
+
+These asics seem to use a mix of the DCE2.x and
+DCE3.2 audio interfaces despite what the register spec
+says.
+
+Fixes:
+https://bugs.freedesktop.org/show_bug.cgi?id=69729
+https://bugs.freedesktop.org/show_bug.cgi?id=69671
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/r600_hdmi.c |   16 +++++++++++++---
+ 1 file changed, 13 insertions(+), 3 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/r600_hdmi.c
++++ b/drivers/gpu/drm/radeon/r600_hdmi.c
+@@ -238,9 +238,19 @@ void r600_audio_set_dto(struct drm_encod
+        * number (coefficient of two integer numbers.  DCCG_AUDIO_DTOx_PHASE
+        * is the numerator, DCCG_AUDIO_DTOx_MODULE is the denominator
+        */
+-      if (ASIC_IS_DCE3(rdev)) {
++      if (ASIC_IS_DCE32(rdev)) {
++              if (dig->dig_encoder == 0) {
++                      WREG32(DCCG_AUDIO_DTO0_PHASE, base_rate * 100);
++                      WREG32(DCCG_AUDIO_DTO0_MODULE, clock * 100);
++                      WREG32(DCCG_AUDIO_DTO_SELECT, 0); /* select DTO0 */
++              } else {
++                      WREG32(DCCG_AUDIO_DTO1_PHASE, base_rate * 100);
++                      WREG32(DCCG_AUDIO_DTO1_MODULE, clock * 100);
++                      WREG32(DCCG_AUDIO_DTO_SELECT, 1); /* select DTO1 */
++              }
++      } else if (ASIC_IS_DCE3(rdev)) {
+               /* according to the reg specs, this should DCE3.2 only, but in
+-               * practice it seems to cover DCE3.0 as well.
++               * practice it seems to cover DCE3.0/3.1 as well.
+                */
+               if (dig->dig_encoder == 0) {
+                       WREG32(DCCG_AUDIO_DTO0_PHASE, base_rate * 100);
+@@ -252,7 +262,7 @@ void r600_audio_set_dto(struct drm_encod
+                       WREG32(DCCG_AUDIO_DTO_SELECT, 1); /* select DTO1 */
+               }
+       } else {
+-              /* according to the reg specs, this should be DCE2.0 and DCE3.0 */
++              /* according to the reg specs, this should be DCE2.0 and DCE3.0/3.1 */
+               WREG32(AUDIO_DTO, AUDIO_DTO_PHASE(base_rate / 10) |
+                      AUDIO_DTO_MODULE(clock / 10));
+       }
diff --git a/queue-3.10/drm-radeon-make-r100_cp_ring_info-and-radeon_ring_gfx-safe-v2.patch b/queue-3.10/drm-radeon-make-r100_cp_ring_info-and-radeon_ring_gfx-safe-v2.patch
new file mode 100644 (file)
index 0000000..27c6425
--- /dev/null
@@ -0,0 +1,59 @@
+From 0eb3448aa6b31fbf24c31756aba7940cac5ad6b8 Mon Sep 17 00:00:00 2001
+From: Alex Ivanov <gnidorah@p0n4ik.tk>
+Date: Fri, 20 Sep 2013 17:36:06 +0400
+Subject: drm/radeon: Make r100_cp_ring_info() and radeon_ring_gfx() safe (v2)
+
+From: Alex Ivanov <gnidorah@p0n4ik.tk>
+
+commit 0eb3448aa6b31fbf24c31756aba7940cac5ad6b8 upstream.
+
+Prevent NULL pointer dereference in case when radeon_ring_fini() did it's job.
+
+Reading of r100_cp_ring_info and radeon_ring_gfx debugfs entries will lead to a KP if ring buffer was deallocated, e.g. on failed ring test.
+Seen on PA-RISC machine having "radeon: ring test failed (scratch(0x8504)=0xCAFEDEAD)" issue.
+
+v2: agd5f: add some parens around ring->ready check
+
+Signed-off-by: Alex Ivanov <gnidorah@p0n4ik.tk>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/r100.c        |    8 +++++---
+ drivers/gpu/drm/radeon/radeon_ring.c |    8 +++++---
+ 2 files changed, 10 insertions(+), 6 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/r100.c
++++ b/drivers/gpu/drm/radeon/r100.c
+@@ -2935,9 +2935,11 @@ static int r100_debugfs_cp_ring_info(str
+       seq_printf(m, "CP_RB_RPTR 0x%08x\n", rdp);
+       seq_printf(m, "%u free dwords in ring\n", ring->ring_free_dw);
+       seq_printf(m, "%u dwords in ring\n", count);
+-      for (j = 0; j <= count; j++) {
+-              i = (rdp + j) & ring->ptr_mask;
+-              seq_printf(m, "r[%04d]=0x%08x\n", i, ring->ring[i]);
++      if (ring->ready) {
++              for (j = 0; j <= count; j++) {
++                      i = (rdp + j) & ring->ptr_mask;
++                      seq_printf(m, "r[%04d]=0x%08x\n", i, ring->ring[i]);
++              }
+       }
+       return 0;
+ }
+--- a/drivers/gpu/drm/radeon/radeon_ring.c
++++ b/drivers/gpu/drm/radeon/radeon_ring.c
+@@ -823,9 +823,11 @@ static int radeon_debugfs_ring_info(stru
+        * packet that is the root issue
+        */
+       i = (ring->rptr + ring->ptr_mask + 1 - 32) & ring->ptr_mask;
+-      for (j = 0; j <= (count + 32); j++) {
+-              seq_printf(m, "r[%5d]=0x%08x\n", i, ring->ring[i]);
+-              i = (i + 1) & ring->ptr_mask;
++      if (ring->ready) {
++              for (j = 0; j <= (count + 32); j++) {
++                      seq_printf(m, "r[%5d]=0x%08x\n", i, ring->ring[i]);
++                      i = (i + 1) & ring->ptr_mask;
++              }
+       }
+       return 0;
+ }
index afd0a7749dd64c6afbb32add93d358199c91f047..0b2d38870ccdb81d49871f9a1cd179daedbe174f 100644 (file)
@@ -41,3 +41,8 @@ dm-mpath-disable-write-same-if-it-fails.patch
 dm-raid-silence-compiler-warning-on-rebuilds_per_group.patch
 drm-i915-preserve-pipe-a-quirk-in-i9xx_set_pipeconf.patch
 drm-i915-dp-increase-i2c-over-aux-retry-interval-on-aux-defer.patch
+drm-radeon-avoid-uvd-corruption-on-agp-cards-using-gpu-gart.patch
+drm-radeon-make-r100_cp_ring_info-and-radeon_ring_gfx-safe-v2.patch
+drm-radeon-disable-tests-benchmarks-if-accel-is-disabled.patch
+drm-radeon-add-missing-hdmi-callbacks-for-rv6xx.patch
+drm-radeon-fix-hdmi-audio-on-dce3.0-3.1-asics.patch