diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0420-drm-amd-powerplay-fix-segment-fault-issue-in-multi-d.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0420-drm-amd-powerplay-fix-segment-fault-issue-in-multi-d.patch | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0420-drm-amd-powerplay-fix-segment-fault-issue-in-multi-d.patch b/common/recipes-kernel/linux/files/0420-drm-amd-powerplay-fix-segment-fault-issue-in-multi-d.patch new file mode 100644 index 00000000..73dff28b --- /dev/null +++ b/common/recipes-kernel/linux/files/0420-drm-amd-powerplay-fix-segment-fault-issue-in-multi-d.patch @@ -0,0 +1,59 @@ +From 3aa26a86682b97b5fe9f1438f556650f864d6951 Mon Sep 17 00:00:00 2001 +From: Rex Zhu <Rex.Zhu@amd.com> +Date: Tue, 29 Mar 2016 13:21:59 +0800 +Subject: [PATCH 0420/1110] drm/amd/powerplay: fix segment fault issue in + multi-display case. + +Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> +Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +Cc: stable@vger.kernel.org +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c +index 7a4b101..75cb5b9 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c +@@ -816,10 +816,13 @@ static int amdgpu_cgs_get_active_displays_info(void *cgs_device, + struct drm_device *ddev = adev->ddev; + struct drm_crtc *crtc; + uint32_t line_time_us, vblank_lines; ++ struct cgs_mode_info *mode_info; + + if (info == NULL) + return -EINVAL; + ++ mode_info = info->mode_info; ++ + if (adev->mode_info.num_crtc && adev->mode_info.mode_config_initialized) { + list_for_each_entry(crtc, + &ddev->mode_config.crtc_list, head) { +@@ -828,7 +831,7 @@ static int amdgpu_cgs_get_active_displays_info(void *cgs_device, + info->active_display_mask |= (1 << amdgpu_crtc->crtc_id); + info->display_count++; + } +- if (info->mode_info != NULL && ++ if (mode_info != NULL && + crtc->enabled && amdgpu_crtc->enabled && + amdgpu_crtc->hw_mode.clock) { + line_time_us = (amdgpu_crtc->hw_mode.crtc_htotal * 1000) / +@@ -836,10 +839,10 @@ static int amdgpu_cgs_get_active_displays_info(void *cgs_device, + vblank_lines = amdgpu_crtc->hw_mode.crtc_vblank_end - + amdgpu_crtc->hw_mode.crtc_vdisplay + + (amdgpu_crtc->v_border * 2); +- info->mode_info->vblank_time_us = vblank_lines * line_time_us; +- info->mode_info->refresh_rate = drm_mode_vrefresh(&amdgpu_crtc->hw_mode); +- info->mode_info->ref_clock = adev->clock.spll.reference_freq; +- info->mode_info++; ++ mode_info->vblank_time_us = vblank_lines * line_time_us; ++ mode_info->refresh_rate = drm_mode_vrefresh(&amdgpu_crtc->hw_mode); ++ mode_info->ref_clock = adev->clock.spll.reference_freq; ++ mode_info = NULL; + } + } + } +-- +2.7.4 + |