diff options
author | Chunming Zhou <David1.Zhou@amd.com> | 2016-06-16 04:54:53 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2016-07-07 14:54:48 -0400 |
commit | 0eaeb070ed6d22e5b42e47210c249283ddf5b08f (patch) | |
tree | 2e7d1d56f1c4fde891d236131f1cea33ff3b18f0 | |
parent | 505bc983bf0e04bfd92a731ef4a89df5cfea7e48 (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.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 12 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h | 1 |
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 | ||
386 | void 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); |
95 | bool amdgpu_irq_enabled(struct amdgpu_device *adev, struct amdgpu_irq_src *src, | 95 | bool amdgpu_irq_enabled(struct amdgpu_device *adev, struct amdgpu_irq_src *src, |
96 | unsigned type); | 96 | unsigned type); |
97 | void amdgpu_irq_gpu_reset_resume_helper(struct amdgpu_device *adev); | ||
97 | 98 | ||
98 | int amdgpu_irq_add_domain(struct amdgpu_device *adev); | 99 | int amdgpu_irq_add_domain(struct amdgpu_device *adev); |
99 | void amdgpu_irq_remove_domain(struct amdgpu_device *adev); | 100 | void amdgpu_irq_remove_domain(struct amdgpu_device *adev); |