aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChunming Zhou <David1.Zhou@amd.com>2016-06-16 04:54:53 -0400
committerAlex Deucher <alexander.deucher@amd.com>2016-07-07 14:54:48 -0400
commit0eaeb070ed6d22e5b42e47210c249283ddf5b08f (patch)
tree2e7d1d56f1c4fde891d236131f1cea33ff3b18f0
parent505bc983bf0e04bfd92a731ef4a89df5cfea7e48 (diff)
drm/amdgpu: add amdgpu_irq_gpu_reset_resume_helper
irq need to update when gpu reset happens. Signed-off-by: Chunming Zhou <David1.Zhou@amd.com> Reviewed-by: Christian König christian.koenig@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_device.c1
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c12
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h1
3 files changed, 14 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index b9ddb4ffc90a..307998c247f6 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -1973,6 +1973,7 @@ retry:
1973 /* bad news, how to tell it to userspace ? */ 1973 /* bad news, how to tell it to userspace ? */
1974 dev_info(adev->dev, "GPU reset failed\n"); 1974 dev_info(adev->dev, "GPU reset failed\n");
1975 } 1975 }
1976 amdgpu_irq_gpu_reset_resume_helper(adev);
1976 1977
1977 return r; 1978 return r;
1978} 1979}
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
index 835a3fa8d8df..278708f5a744 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
@@ -383,6 +383,18 @@ int amdgpu_irq_update(struct amdgpu_device *adev,
383 return r; 383 return r;
384} 384}
385 385
386void amdgpu_irq_gpu_reset_resume_helper(struct amdgpu_device *adev)
387{
388 int i, j;
389 for (i = 0; i < AMDGPU_MAX_IRQ_SRC_ID; i++) {
390 struct amdgpu_irq_src *src = adev->irq.sources[i];
391 if (!src)
392 continue;
393 for (j = 0; j < src->num_types; j++)
394 amdgpu_irq_update(adev, src, j);
395 }
396}
397
386/** 398/**
387 * amdgpu_irq_get - enable interrupt 399 * amdgpu_irq_get - enable interrupt
388 * 400 *
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h
index e124b59f39c1..7ef09352e534 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h
@@ -94,6 +94,7 @@ int amdgpu_irq_put(struct amdgpu_device *adev, struct amdgpu_irq_src *src,
94 unsigned type); 94 unsigned type);
95bool amdgpu_irq_enabled(struct amdgpu_device *adev, struct amdgpu_irq_src *src, 95bool amdgpu_irq_enabled(struct amdgpu_device *adev, struct amdgpu_irq_src *src,
96 unsigned type); 96 unsigned type);
97void amdgpu_irq_gpu_reset_resume_helper(struct amdgpu_device *adev);
97 98
98int amdgpu_irq_add_domain(struct amdgpu_device *adev); 99int amdgpu_irq_add_domain(struct amdgpu_device *adev);
99void amdgpu_irq_remove_domain(struct amdgpu_device *adev); 100void amdgpu_irq_remove_domain(struct amdgpu_device *adev);