diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2011-08-15 09:17:44 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-08-15 09:17:44 -0700 |
commit | c0f7b4424cb6729de40b9f929bdd133d46d1ff64 (patch) | |
tree | c7f79ef0c3de1ae08ea5ab993f7cf30c8c0523f4 | |
parent | c825e992acf06e5eab8a6cb5254f3316d3053028 (diff) | |
download | stable-queue-c0f7b4424cb6729de40b9f929bdd133d46d1ff64.tar.gz |
3.0 patches
5 files changed, 203 insertions, 0 deletions
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 index 0000000000..3081d9d3b6 --- /dev/null +++ b/queue-3.0/drm-radeon-kms-don-t-enable-connectors-that-are-off-in-the.patch @@ -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 index 0000000000..5f1d7ce222 --- /dev/null +++ b/queue-3.0/drm-radeon-kms-don-t-try-to-be-smart-in-the-hpd-handler.patch @@ -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 index 0000000000..e7ee9405a9 --- /dev/null +++ b/queue-3.0/drm-radeon-kms-fix-regression-is-handling-2-heads-on.patch @@ -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 index 0000000000..8bd7f7e100 --- /dev/null +++ b/queue-3.0/lguest-allow-booting-guest-with-config_relocatable-y.patch @@ -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; + diff --git a/queue-3.0/series b/queue-3.0/series index b30e974554..92dd7640f9 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -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 |