diff options
author | Dave Airlie <airlied@redhat.com> | 2016-05-04 20:37:25 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2016-05-04 20:37:25 -0400 |
commit | 80623de03b97efef8df4c8067ab606585663e042 (patch) | |
tree | 0e9be63e05e914031b0bbdf6608d6ddd1c27d55e | |
parent | 503fe87bd0a8346ba9d8b7f49115dcd0a4185226 (diff) | |
parent | 0126d4b9a516256f2432ca0dc78ab293a8255378 (diff) |
Merge branch 'drm-fixes-4.6' of git://people.freedesktop.org/~agd5f/linux into drm-fixes
two fixes for hw lockups and one for a double free
* 'drm-fixes-4.6' of git://people.freedesktop.org/~agd5f/linux:
drm/amdgpu: make sure vertical front porch is at least 1
drm/radeon: make sure vertical front porch is at least 1
drm/amdgpu: set metadata pointer to NULL after freeing.
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/atombios_encoders.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/atombios_encoders.c | 4 |
3 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index e557fc1f17c8..7ecea83ce453 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | |||
@@ -541,6 +541,7 @@ int amdgpu_bo_set_metadata (struct amdgpu_bo *bo, void *metadata, | |||
541 | if (!metadata_size) { | 541 | if (!metadata_size) { |
542 | if (bo->metadata_size) { | 542 | if (bo->metadata_size) { |
543 | kfree(bo->metadata); | 543 | kfree(bo->metadata); |
544 | bo->metadata = NULL; | ||
544 | bo->metadata_size = 0; | 545 | bo->metadata_size = 0; |
545 | } | 546 | } |
546 | return 0; | 547 | return 0; |
diff --git a/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c b/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c index 1e0bba29e167..1cd6de575305 100644 --- a/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c +++ b/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c | |||
@@ -298,6 +298,10 @@ bool amdgpu_atombios_encoder_mode_fixup(struct drm_encoder *encoder, | |||
298 | && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2))) | 298 | && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2))) |
299 | adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2; | 299 | adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2; |
300 | 300 | ||
301 | /* vertical FP must be at least 1 */ | ||
302 | if (mode->crtc_vsync_start == mode->crtc_vdisplay) | ||
303 | adjusted_mode->crtc_vsync_start++; | ||
304 | |||
301 | /* get the native mode for scaling */ | 305 | /* get the native mode for scaling */ |
302 | if (amdgpu_encoder->active_device & (ATOM_DEVICE_LCD_SUPPORT)) | 306 | if (amdgpu_encoder->active_device & (ATOM_DEVICE_LCD_SUPPORT)) |
303 | amdgpu_panel_mode_fixup(encoder, adjusted_mode); | 307 | amdgpu_panel_mode_fixup(encoder, adjusted_mode); |
diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c index edd05cdb0cd8..587cae4e73c9 100644 --- a/drivers/gpu/drm/radeon/atombios_encoders.c +++ b/drivers/gpu/drm/radeon/atombios_encoders.c | |||
@@ -310,6 +310,10 @@ static bool radeon_atom_mode_fixup(struct drm_encoder *encoder, | |||
310 | && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2))) | 310 | && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2))) |
311 | adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2; | 311 | adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2; |
312 | 312 | ||
313 | /* vertical FP must be at least 1 */ | ||
314 | if (mode->crtc_vsync_start == mode->crtc_vdisplay) | ||
315 | adjusted_mode->crtc_vsync_start++; | ||
316 | |||
313 | /* get the native mode for scaling */ | 317 | /* get the native mode for scaling */ |
314 | if (radeon_encoder->active_device & (ATOM_DEVICE_LCD_SUPPORT)) { | 318 | if (radeon_encoder->active_device & (ATOM_DEVICE_LCD_SUPPORT)) { |
315 | radeon_panel_mode_fixup(encoder, adjusted_mode); | 319 | radeon_panel_mode_fixup(encoder, adjusted_mode); |