]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.0 patches
authorGreg Kroah-Hartman <gregkh@suse.de>
Mon, 15 Aug 2011 16:17:44 +0000 (09:17 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 15 Aug 2011 16:17:44 +0000 (09:17 -0700)
queue-3.0/drm-radeon-kms-don-t-enable-connectors-that-are-off-in-the.patch [new file with mode: 0644]
queue-3.0/drm-radeon-kms-don-t-try-to-be-smart-in-the-hpd-handler.patch [new file with mode: 0644]
queue-3.0/drm-radeon-kms-fix-regression-is-handling-2-heads-on.patch [new file with mode: 0644]
queue-3.0/lguest-allow-booting-guest-with-config_relocatable-y.patch [new file with mode: 0644]
queue-3.0/series

diff --git a/queue-3.0/drm-radeon-kms-don-t-enable-connectors-that-are-off-in-the.patch b/queue-3.0/drm-radeon-kms-don-t-enable-connectors-that-are-off-in-the.patch
new file mode 100644 (file)
index 0000000..3081d9d
--- /dev/null
@@ -0,0 +1,37 @@
+From 73104b5cfe3067d68f2c2de3f3d4d4964c55873e Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Tue, 9 Aug 2011 17:09:06 +0000
+Subject: drm/radeon/kms: don't enable connectors that are off in the
+ hotplug handler
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 73104b5cfe3067d68f2c2de3f3d4d4964c55873e upstream.
+
+If we get a hotplug event on an connector that is off, don't
+attempt to turn it on or off, it should already be off.
+
+Fixes:
+https://bugzilla.redhat.com/show_bug.cgi?id=728228
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/radeon/radeon_connectors.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/gpu/drm/radeon/radeon_connectors.c
++++ b/drivers/gpu/drm/radeon/radeon_connectors.c
+@@ -60,6 +60,10 @@ void radeon_connector_hotplug(struct drm
+       radeon_hpd_set_polarity(rdev, radeon_connector->hpd.hpd);
++      /* if the connector is already off, don't turn it back on */
++      if (connector->dpms != DRM_MODE_DPMS_ON)
++              return;
++
+       /* powering up/down the eDP panel generates hpd events which
+        * can interfere with modesetting.
+        */
diff --git a/queue-3.0/drm-radeon-kms-don-t-try-to-be-smart-in-the-hpd-handler.patch b/queue-3.0/drm-radeon-kms-don-t-try-to-be-smart-in-the-hpd-handler.patch
new file mode 100644 (file)
index 0000000..5f1d7ce
--- /dev/null
@@ -0,0 +1,92 @@
+From d5811e8731213f80c80d89e980505052f16aca1c Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Sat, 13 Aug 2011 13:36:13 -0400
+Subject: drm/radeon/kms: don't try to be smart in the hpd handler
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit d5811e8731213f80c80d89e980505052f16aca1c upstream.
+
+Attempting to try and turn off disconnected display hw in the
+hotput handler lead to more problems than it helped.  For
+now just register an event and only attempt the do something
+interesting with DP.  Other connectors are just too problematic:
+- Some systems have an HPD pin assigned to LVDS, but it's rarely
+if ever connected properly and we don't really care about hpd
+events on LVDS anyway since it's always connected.
+- The HPD pin is wired up correctly for eDP, but we don't really
+have to do anything since the events since it's always connected.
+- Some HPD pins fire more than once when you connect/disconnect
+- etc.
+
+Fixes:
+https://bugs.freedesktop.org/show_bug.cgi?id=39882
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/radeon/atombios_dp.c       |   12 ++++++++++++
+ drivers/gpu/drm/radeon/radeon_connectors.c |   14 ++++++--------
+ drivers/gpu/drm/radeon/radeon_mode.h       |    1 +
+ 3 files changed, 19 insertions(+), 8 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/atombios_dp.c
++++ b/drivers/gpu/drm/radeon/atombios_dp.c
+@@ -613,6 +613,18 @@ static bool radeon_dp_get_link_status(st
+       return true;
+ }
++bool radeon_dp_needs_link_train(struct radeon_connector *radeon_connector)
++{
++      u8 link_status[DP_LINK_STATUS_SIZE];
++      struct radeon_connector_atom_dig *dig = radeon_connector->con_priv;
++
++      if (!radeon_dp_get_link_status(radeon_connector, link_status))
++              return false;
++      if (dp_channel_eq_ok(link_status, dig->dp_lane_count))
++              return false;
++      return true;
++}
++
+ struct radeon_dp_link_train_info {
+       struct radeon_device *rdev;
+       struct drm_encoder *encoder;
+--- a/drivers/gpu/drm/radeon/radeon_connectors.c
++++ b/drivers/gpu/drm/radeon/radeon_connectors.c
+@@ -64,18 +64,16 @@ void radeon_connector_hotplug(struct drm
+       if (connector->dpms != DRM_MODE_DPMS_ON)
+               return;
+-      /* powering up/down the eDP panel generates hpd events which
+-       * can interfere with modesetting.
+-       */
+-      if (connector->connector_type == DRM_MODE_CONNECTOR_eDP)
+-              return;
++      /* just deal with DP (not eDP) here. */
++      if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) {
++              int saved_dpms = connector->dpms;
+-      /* pre-r600 did not always have the hpd pins mapped accurately to connectors */
+-      if (rdev->family >= CHIP_R600) {
+-              if (radeon_hpd_sense(rdev, radeon_connector->hpd.hpd))
++              if (radeon_hpd_sense(rdev, radeon_connector->hpd.hpd) &&
++                  radeon_dp_needs_link_train(radeon_connector))
+                       drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON);
+               else
+                       drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF);
++              connector->dpms = saved_dpms;
+       }
+ }
+--- a/drivers/gpu/drm/radeon/radeon_mode.h
++++ b/drivers/gpu/drm/radeon/radeon_mode.h
+@@ -476,6 +476,7 @@ extern void radeon_dp_set_link_config(st
+                                     struct drm_display_mode *mode);
+ extern void radeon_dp_link_train(struct drm_encoder *encoder,
+                                struct drm_connector *connector);
++extern bool radeon_dp_needs_link_train(struct radeon_connector *radeon_connector);
+ extern u8 radeon_dp_getsinktype(struct radeon_connector *radeon_connector);
+ extern bool radeon_dp_getdpcd(struct radeon_connector *radeon_connector);
+ extern void atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mode);
diff --git a/queue-3.0/drm-radeon-kms-fix-regression-is-handling-2-heads-on.patch b/queue-3.0/drm-radeon-kms-fix-regression-is-handling-2-heads-on.patch
new file mode 100644 (file)
index 0000000..e7ee940
--- /dev/null
@@ -0,0 +1,33 @@
+From 33ae1827d6c3c79c5957536ec29d5a8780623147 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Thu, 11 Aug 2011 14:01:03 +0000
+Subject: drm/radeon/kms: fix regression is handling >2 heads on
+ cedar/caicos
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 33ae1827d6c3c79c5957536ec29d5a8780623147 upstream.
+
+Need to add support for 4 crtcs when setting the possible crtcs
+for the encoders.
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/gpu/drm/radeon/radeon_encoders.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/gpu/drm/radeon/radeon_encoders.c
++++ b/drivers/gpu/drm/radeon/radeon_encoders.c
+@@ -2323,6 +2323,9 @@ radeon_add_atom_encoder(struct drm_devic
+       default:
+               encoder->possible_crtcs = 0x3;
+               break;
++      case 4:
++              encoder->possible_crtcs = 0xf;
++              break;
+       case 6:
+               encoder->possible_crtcs = 0x3f;
+               break;
diff --git a/queue-3.0/lguest-allow-booting-guest-with-config_relocatable-y.patch b/queue-3.0/lguest-allow-booting-guest-with-config_relocatable-y.patch
new file mode 100644 (file)
index 0000000..8bd7f7e
--- /dev/null
@@ -0,0 +1,37 @@
+From e22a539824e8ddb82c87b4f415165ede82e6ab56 Mon Sep 17 00:00:00 2001
+From: Rusty Russell <rusty@rustcorp.com.au>
+Date: Mon, 15 Aug 2011 10:15:10 +0930
+Subject: lguest: allow booting guest with CONFIG_RELOCATABLE=y
+
+From: Rusty Russell <rusty@rustcorp.com.au>
+
+commit e22a539824e8ddb82c87b4f415165ede82e6ab56 upstream.
+
+The CONFIG_RELOCATABLE code tries to align the unpack destination to
+the value of 'kernel_alignment' in the setup_hdr.  If that's 0, it
+tries to unpack to address 0, which in fact causes the gunzip code
+to call 'error("Out of memory while allocating output buffer")'.
+
+The bootloader (ie. the lguest Launcher in this case) should be doing
+setting this field; the normal bzImage is 16M, we can use the same.
+
+Reported-by: Stefanos Geraggelos <sgerag@cslab.ece.ntua.gr>
+Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ Documentation/virtual/lguest/lguest.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/Documentation/virtual/lguest/lguest.c
++++ b/Documentation/virtual/lguest/lguest.c
+@@ -2008,6 +2008,9 @@ int main(int argc, char *argv[])
+       /* We use a simple helper to copy the arguments separated by spaces. */
+       concat((char *)(boot + 1), argv+optind+2);
++      /* Set kernel alignment to 16M (CONFIG_PHYSICAL_ALIGN) */
++      boot->hdr.kernel_alignment = 0x1000000;
++
+       /* Boot protocol version: 2.07 supports the fields for lguest. */
+       boot->hdr.version = 0x207;
index b30e974554bf978699d82bbcca692546afb171a6..92dd7640f911fdc60757a2dbeed5d9c303ca0724 100644 (file)
@@ -19,3 +19,7 @@ asoc-tegra-tegra_pcm_deallocate_dma_buffer-don-t-oops.patch
 asoc-tegra-wm8903-machine-driver-allow-re-insertion-of.patch
 ath5k-fix-error-handling-in-ath5k_beacon_send.patch
 mm-fix-wrong-vmap-address-calculations-with-odd-nr_cpus.patch
+lguest-allow-booting-guest-with-config_relocatable-y.patch
+drm-radeon-kms-don-t-enable-connectors-that-are-off-in-the.patch
+drm-radeon-kms-fix-regression-is-handling-2-heads-on.patch
+drm-radeon-kms-don-t-try-to-be-smart-in-the-hpd-handler.patch