Commit d47703d4 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge branch 'drm-fixes-5.1' of git://people.freedesktop.org/~agd5f/linux into drm-fixes



A few fixes for 5.1:
- Cursor fixes
- Add missing picasso pci id to KFD
- XGMI fix
- Shadow buffer handling fix for GPU reset

Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
From: Alex Deucher <alexdeucher@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190410183031.3710-1-alexander.deucher@amd.com
parents 86dc6612 bd13b2b8
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -3173,11 +3173,16 @@ static int amdgpu_device_recover_vram(struct amdgpu_device *adev)
			break;

		if (fence) {
			r = dma_fence_wait_timeout(fence, false, tmo);
			tmo = dma_fence_wait_timeout(fence, false, tmo);
			dma_fence_put(fence);
			fence = next;
			if (r <= 0)
			if (tmo == 0) {
				r = -ETIMEDOUT;
				break;
			} else if (tmo < 0) {
				r = tmo;
				break;
			}
		} else {
			fence = next;
		}
@@ -3188,8 +3193,8 @@ static int amdgpu_device_recover_vram(struct amdgpu_device *adev)
		tmo = dma_fence_wait_timeout(fence, false, tmo);
	dma_fence_put(fence);

	if (r <= 0 || tmo <= 0) {
		DRM_ERROR("recover vram bo from shadow failed\n");
	if (r < 0 || tmo <= 0) {
		DRM_ERROR("recover vram bo from shadow failed, r is %ld, tmo is %ld\n", r, tmo);
		return -EIO;
	}

+3 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@
#include "amdgpu_trace.h"

#define AMDGPU_IB_TEST_TIMEOUT	msecs_to_jiffies(1000)
#define AMDGPU_IB_TEST_GFX_XGMI_TIMEOUT	msecs_to_jiffies(2000)

/*
 * IB
@@ -344,6 +345,8 @@ int amdgpu_ib_ring_tests(struct amdgpu_device *adev)
		 * cost waiting for it coming back under RUNTIME only
		*/
		tmo_gfx = 8 * AMDGPU_IB_TEST_TIMEOUT;
	} else if (adev->gmc.xgmi.hive_id) {
		tmo_gfx = AMDGPU_IB_TEST_GFX_XGMI_TIMEOUT;
	}

	for (i = 0; i < adev->num_rings; ++i) {
+1 −0
Original line number Diff line number Diff line
@@ -320,6 +320,7 @@ static const struct kfd_deviceid supported_devices[] = {
	{ 0x9876, &carrizo_device_info },	/* Carrizo */
	{ 0x9877, &carrizo_device_info },	/* Carrizo */
	{ 0x15DD, &raven_device_info },		/* Raven */
	{ 0x15D8, &raven_device_info },		/* Raven */
#endif
	{ 0x67A0, &hawaii_device_info },	/* Hawaii */
	{ 0x67A1, &hawaii_device_info },	/* Hawaii */
+1 −0
Original line number Diff line number Diff line
@@ -4533,6 +4533,7 @@ static void handle_cursor_update(struct drm_plane *plane,
	amdgpu_crtc->cursor_width = plane->state->crtc_w;
	amdgpu_crtc->cursor_height = plane->state->crtc_h;

	memset(&attributes, 0, sizeof(attributes));
	attributes.address.high_part = upper_32_bits(address);
	attributes.address.low_part  = lower_32_bits(address);
	attributes.width             = plane->state->crtc_w;
+2 −21
Original line number Diff line number Diff line
@@ -1150,28 +1150,9 @@ void hubp1_cursor_set_position(
	REG_UPDATE(CURSOR_CONTROL,
			CURSOR_ENABLE, cur_en);

	//account for cases where we see negative offset relative to overlay plane
	if (src_x_offset < 0 && src_y_offset < 0) {
		REG_SET_2(CURSOR_POSITION, 0,
			CURSOR_X_POSITION, 0,
			CURSOR_Y_POSITION, 0);
		x_hotspot -= src_x_offset;
		y_hotspot -= src_y_offset;
	} else if (src_x_offset < 0) {
		REG_SET_2(CURSOR_POSITION, 0,
			CURSOR_X_POSITION, 0,
			CURSOR_Y_POSITION, pos->y);
		x_hotspot -= src_x_offset;
	} else if (src_y_offset < 0) {
		REG_SET_2(CURSOR_POSITION, 0,
			CURSOR_X_POSITION, pos->x,
			CURSOR_Y_POSITION, 0);
		y_hotspot -= src_y_offset;
	} else {
	REG_SET_2(CURSOR_POSITION, 0,
			CURSOR_X_POSITION, pos->x,
			CURSOR_Y_POSITION, pos->y);
	}

	REG_SET_2(CURSOR_HOT_SPOT, 0,
			CURSOR_HOT_SPOT_X, x_hotspot,