Commit 124e8b19 authored by Victor Zhao's avatar Victor Zhao Committed by Alex Deucher
Browse files

drm/amdgpu: Extend full access wait time in guest



- Extend wait time and add retry, currently 6s * 2times
- Change timing algorithm

Signed-off-by: default avatarVictor Zhao <Victor.Zhao@amd.com>
Signed-off-by: default avatarPeng Ju Zhou <PengJu.Zhou@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent a43e2a0e
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -96,7 +96,11 @@ static int xgpu_nv_poll_ack(struct amdgpu_device *adev)

static int xgpu_nv_poll_msg(struct amdgpu_device *adev, enum idh_event event)
{
	int r, timeout = NV_MAILBOX_POLL_MSG_TIMEDOUT;
	int r;
	uint64_t timeout, now;

	now = (uint64_t)ktime_to_ms(ktime_get());
	timeout = now + NV_MAILBOX_POLL_MSG_TIMEDOUT;

	do {
		r = xgpu_nv_mailbox_rcv_msg(adev, event);
@@ -104,8 +108,8 @@ static int xgpu_nv_poll_msg(struct amdgpu_device *adev, enum idh_event event)
			return 0;

		msleep(10);
		timeout -= 10;
	} while (timeout > 1);
		now = (uint64_t)ktime_to_ms(ktime_get());
	} while (timeout > now);


	return -ETIME;
@@ -149,9 +153,10 @@ static void xgpu_nv_mailbox_trans_msg (struct amdgpu_device *adev,
static int xgpu_nv_send_access_requests(struct amdgpu_device *adev,
					enum idh_request req)
{
	int r;
	int r, retry = 1;
	enum idh_event event = -1;

send_request:
	xgpu_nv_mailbox_trans_msg(adev, req, 0, 0, 0);

	switch (req) {
@@ -170,6 +175,9 @@ static int xgpu_nv_send_access_requests(struct amdgpu_device *adev,
	if (event != -1) {
		r = xgpu_nv_poll_msg(adev, event);
		if (r) {
			if (retry++ < 2)
				goto send_request;

			if (req != IDH_REQ_GPU_INIT_DATA) {
				pr_err("Doesn't get msg:%d from pf, error=%d\n", event, r);
				return r;