]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.0-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 May 2013 20:21:57 +0000 (13:21 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 May 2013 20:21:57 +0000 (13:21 -0700)
added patches:
drm-radeon-evergreen-don-t-enable-hpd-interrupts-on-edp-lvds.patch
drm-radeon-fix-endian-bugs-in-atom_allocate_fb_scratch.patch
drm-radeon-fix-possible-segfault-when-parsing-pm-tables.patch

queue-3.0/drm-radeon-evergreen-don-t-enable-hpd-interrupts-on-edp-lvds.patch [new file with mode: 0644]
queue-3.0/drm-radeon-fix-endian-bugs-in-atom_allocate_fb_scratch.patch [new file with mode: 0644]
queue-3.0/drm-radeon-fix-possible-segfault-when-parsing-pm-tables.patch [new file with mode: 0644]
queue-3.0/series

diff --git a/queue-3.0/drm-radeon-evergreen-don-t-enable-hpd-interrupts-on-edp-lvds.patch b/queue-3.0/drm-radeon-evergreen-don-t-enable-hpd-interrupts-on-edp-lvds.patch
new file mode 100644 (file)
index 0000000..50214b6
--- /dev/null
@@ -0,0 +1,40 @@
+From 2e97be73e5f74a317232740ae82eb8f95326a660 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Thu, 11 Apr 2013 12:45:34 -0400
+Subject: drm/radeon/evergreen+: don't enable HPD interrupts on eDP/LVDS
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 2e97be73e5f74a317232740ae82eb8f95326a660 upstream.
+
+Avoids potential interrupt storms when the display is disabled.
+
+May fix:
+https://bugzilla.kernel.org/show_bug.cgi?id=56041
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/evergreen.c |   10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/drivers/gpu/drm/radeon/evergreen.c
++++ b/drivers/gpu/drm/radeon/evergreen.c
+@@ -330,6 +330,16 @@ void evergreen_hpd_init(struct radeon_de
+       list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
+               struct radeon_connector *radeon_connector = to_radeon_connector(connector);
++
++              if (connector->connector_type == DRM_MODE_CONNECTOR_eDP ||
++                  connector->connector_type == DRM_MODE_CONNECTOR_LVDS) {
++                      /* don't try to enable hpd on eDP or LVDS avoid breaking the
++                       * aux dp channel on imac and help (but not completely fix)
++                       * https://bugzilla.redhat.com/show_bug.cgi?id=726143
++                       * also avoid interrupt storms during dpms.
++                       */
++                      continue;
++              }
+               switch (radeon_connector->hpd.hpd) {
+               case RADEON_HPD_1:
+                       WREG32(DC_HPD1_CONTROL, tmp);
diff --git a/queue-3.0/drm-radeon-fix-endian-bugs-in-atom_allocate_fb_scratch.patch b/queue-3.0/drm-radeon-fix-endian-bugs-in-atom_allocate_fb_scratch.patch
new file mode 100644 (file)
index 0000000..642a737
--- /dev/null
@@ -0,0 +1,33 @@
+From beb71fc61c2cad64e347f164991b8ef476529e64 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Wed, 24 Apr 2013 14:39:31 -0400
+Subject: drm/radeon: fix endian bugs in atom_allocate_fb_scratch()
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit beb71fc61c2cad64e347f164991b8ef476529e64 upstream.
+
+Reviwed-by: Michel Dänzer <michel.daenzer@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/atom.c |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/atom.c
++++ b/drivers/gpu/drm/radeon/atom.c
+@@ -1384,10 +1384,10 @@ int atom_allocate_fb_scratch(struct atom
+               firmware_usage = (struct _ATOM_VRAM_USAGE_BY_FIRMWARE *)(ctx->bios + data_offset);
+               DRM_DEBUG("atom firmware requested %08x %dkb\n",
+-                        firmware_usage->asFirmwareVramReserveInfo[0].ulStartAddrUsedByFirmware,
+-                        firmware_usage->asFirmwareVramReserveInfo[0].usFirmwareUseInKb);
++                        le32_to_cpu(firmware_usage->asFirmwareVramReserveInfo[0].ulStartAddrUsedByFirmware),
++                        le16_to_cpu(firmware_usage->asFirmwareVramReserveInfo[0].usFirmwareUseInKb));
+-              usage_bytes = firmware_usage->asFirmwareVramReserveInfo[0].usFirmwareUseInKb * 1024;
++              usage_bytes = le16_to_cpu(firmware_usage->asFirmwareVramReserveInfo[0].usFirmwareUseInKb) * 1024;
+       }
+       ctx->scratch_size_bytes = 0;
+       if (usage_bytes == 0)
diff --git a/queue-3.0/drm-radeon-fix-possible-segfault-when-parsing-pm-tables.patch b/queue-3.0/drm-radeon-fix-possible-segfault-when-parsing-pm-tables.patch
new file mode 100644 (file)
index 0000000..7be780e
--- /dev/null
@@ -0,0 +1,62 @@
+From f8e6bfc2ce162855fa4f9822a45659f4b542c960 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Thu, 25 Apr 2013 09:29:17 -0400
+Subject: drm/radeon: fix possible segfault when parsing pm tables
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit f8e6bfc2ce162855fa4f9822a45659f4b542c960 upstream.
+
+If we have a empty power table, bail early and allocate
+the default power state.
+
+Should fix:
+https://bugs.freedesktop.org/show_bug.cgi?id=63865
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/radeon_atombios.c |   10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/radeon/radeon_atombios.c
++++ b/drivers/gpu/drm/radeon/radeon_atombios.c
+@@ -2031,6 +2031,8 @@ static int radeon_atombios_parse_power_t
+       num_modes = power_info->info.ucNumOfPowerModeEntries;
+       if (num_modes > ATOM_MAX_NUMBEROF_POWER_BLOCK)
+               num_modes = ATOM_MAX_NUMBEROF_POWER_BLOCK;
++      if (num_modes == 0)
++              return state_index;
+       rdev->pm.power_state = kzalloc(sizeof(struct radeon_power_state) * num_modes, GFP_KERNEL);
+       if (!rdev->pm.power_state)
+               return state_index;
+@@ -2401,6 +2403,8 @@ static int radeon_atombios_parse_power_t
+       power_info = (union power_info *)(mode_info->atom_context->bios + data_offset);
+       radeon_atombios_add_pplib_thermal_controller(rdev, &power_info->pplib.sThermalController);
++      if (power_info->pplib.ucNumStates == 0)
++              return state_index;
+       rdev->pm.power_state = kzalloc(sizeof(struct radeon_power_state) *
+                                      power_info->pplib.ucNumStates, GFP_KERNEL);
+       if (!rdev->pm.power_state)
+@@ -2485,6 +2489,8 @@ static int radeon_atombios_parse_power_t
+       non_clock_info_array = (struct NonClockInfoArray *)
+               (mode_info->atom_context->bios + data_offset +
+                le16_to_cpu(power_info->pplib.usNonClockInfoArrayOffset));
++      if (state_array->ucNumEntries == 0)
++              return state_index;
+       rdev->pm.power_state = kzalloc(sizeof(struct radeon_power_state) *
+                                      state_array->ucNumEntries, GFP_KERNEL);
+       if (!rdev->pm.power_state)
+@@ -2561,7 +2567,9 @@ void radeon_atombios_get_power_modes(str
+               default:
+                       break;
+               }
+-      } else {
++      }
++
++      if (state_index == 0) {
+               rdev->pm.power_state = kzalloc(sizeof(struct radeon_power_state), GFP_KERNEL);
+               if (rdev->pm.power_state) {
+                       /* add the default mode */
index 4bda36ef4449f60bfd3ad00fd489741f373f9154..25f9f47d30980b180435fd836f5d0f070726f796 100644 (file)
@@ -4,3 +4,6 @@ ipvs-ip_vs_sip_fill_param-bug-bad-check-of-return-value.patch
 drm-i915-add-no-lvds-quirk-for-fujitsu-esprimo-q900.patch
 drm-i915-fall-back-to-bit-banging-mode-for-dvo-transmitter-detection.patch
 drm-radeon-don-t-use-get_engine_clock-on-apus.patch
+drm-radeon-evergreen-don-t-enable-hpd-interrupts-on-edp-lvds.patch
+drm-radeon-fix-endian-bugs-in-atom_allocate_fb_scratch.patch
+drm-radeon-fix-possible-segfault-when-parsing-pm-tables.patch