Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 80623de0 authored by Dave Airlie's avatar Dave Airlie
Browse files

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.
parents 503fe87b 0126d4b9
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -541,6 +541,7 @@ int amdgpu_bo_set_metadata (struct amdgpu_bo *bo, void *metadata,
	if (!metadata_size) {
	if (!metadata_size) {
		if (bo->metadata_size) {
		if (bo->metadata_size) {
			kfree(bo->metadata);
			kfree(bo->metadata);
			bo->metadata = NULL;
			bo->metadata_size = 0;
			bo->metadata_size = 0;
		}
		}
		return 0;
		return 0;
+4 −0
Original line number Original line Diff line number Diff line
@@ -298,6 +298,10 @@ bool amdgpu_atombios_encoder_mode_fixup(struct drm_encoder *encoder,
	    && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2)))
	    && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2)))
		adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2;
		adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2;


	/* vertical FP must be at least 1 */
	if (mode->crtc_vsync_start == mode->crtc_vdisplay)
		adjusted_mode->crtc_vsync_start++;

	/* get the native mode for scaling */
	/* get the native mode for scaling */
	if (amdgpu_encoder->active_device & (ATOM_DEVICE_LCD_SUPPORT))
	if (amdgpu_encoder->active_device & (ATOM_DEVICE_LCD_SUPPORT))
		amdgpu_panel_mode_fixup(encoder, adjusted_mode);
		amdgpu_panel_mode_fixup(encoder, adjusted_mode);
+4 −0
Original line number Original line Diff line number Diff line
@@ -310,6 +310,10 @@ static bool radeon_atom_mode_fixup(struct drm_encoder *encoder,
	    && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2)))
	    && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2)))
		adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2;
		adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2;


	/* vertical FP must be at least 1 */
	if (mode->crtc_vsync_start == mode->crtc_vdisplay)
		adjusted_mode->crtc_vsync_start++;

	/* get the native mode for scaling */
	/* get the native mode for scaling */
	if (radeon_encoder->active_device & (ATOM_DEVICE_LCD_SUPPORT)) {
	if (radeon_encoder->active_device & (ATOM_DEVICE_LCD_SUPPORT)) {
		radeon_panel_mode_fixup(encoder, adjusted_mode);
		radeon_panel_mode_fixup(encoder, adjusted_mode);