aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2018-11-18 20:07:52 -0500
committerDave Airlie <airlied@redhat.com>2018-11-18 20:07:52 -0500
commit9235dd441af43599b9cdcce599a3da4083fcad3c (patch)
tree5f8a79cc2d378f05e807c6c5e388394b8e86319d /drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
parentd7563c55ef9fc1fd2301b8708b3c1f53509d6745 (diff)
parent36b486bc682114a2f1001cbf1a87f21ae381bfc1 (diff)
Merge branch 'drm-next-4.21' of git://people.freedesktop.org/~agd5f/linux into drm-next
New features for 4.21: amdgpu: - Support for SDMA paging queue on vega - Put compute EOP buffers into vram for better performance - Share more code with amdkfd - Support for scanout with DCC on gfx9 - Initial kerneldoc for DC - Updated SMU firmware support for gfx8 chips - Rework CSA handling for eventual support for preemption - XGMI PSP support - Clean up RLC handling - Enable GPU reset by default on VI, SOC15 dGPUs - Ring and IB test cleanups amdkfd: - Share more code with amdgpu ttm: - Move global init out of the drivers scheduler: - Track if schedulers are ready for work - Timeout/fault handling changes to facilitate GPU recovery Signed-off-by: Dave Airlie <airlied@redhat.com> From: Alex Deucher <alexdeucher@gmail.com> Link: https://patchwork.freedesktop.org/patch/msgid/20181114165113.3751-1-alexander.deucher@amd.com
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c21
1 files changed, 0 insertions, 21 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
index 52c17f6219a7..6b6524f04ce0 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
@@ -94,23 +94,6 @@ static void amdgpu_hotplug_work_func(struct work_struct *work)
94} 94}
95 95
96/** 96/**
97 * amdgpu_irq_reset_work_func - execute GPU reset
98 *
99 * @work: work struct pointer
100 *
101 * Execute scheduled GPU reset (Cayman+).
102 * This function is called when the IRQ handler thinks we need a GPU reset.
103 */
104static void amdgpu_irq_reset_work_func(struct work_struct *work)
105{
106 struct amdgpu_device *adev = container_of(work, struct amdgpu_device,
107 reset_work);
108
109 if (!amdgpu_sriov_vf(adev) && amdgpu_device_should_recover_gpu(adev))
110 amdgpu_device_gpu_recover(adev, NULL);
111}
112
113/**
114 * amdgpu_irq_disable_all - disable *all* interrupts 97 * amdgpu_irq_disable_all - disable *all* interrupts
115 * 98 *
116 * @adev: amdgpu device pointer 99 * @adev: amdgpu device pointer
@@ -262,15 +245,12 @@ int amdgpu_irq_init(struct amdgpu_device *adev)
262 amdgpu_hotplug_work_func); 245 amdgpu_hotplug_work_func);
263 } 246 }
264 247
265 INIT_WORK(&adev->reset_work, amdgpu_irq_reset_work_func);
266
267 adev->irq.installed = true; 248 adev->irq.installed = true;
268 r = drm_irq_install(adev->ddev, adev->ddev->pdev->irq); 249 r = drm_irq_install(adev->ddev, adev->ddev->pdev->irq);
269 if (r) { 250 if (r) {
270 adev->irq.installed = false; 251 adev->irq.installed = false;
271 if (!amdgpu_device_has_dc_support(adev)) 252 if (!amdgpu_device_has_dc_support(adev))
272 flush_work(&adev->hotplug_work); 253 flush_work(&adev->hotplug_work);
273 cancel_work_sync(&adev->reset_work);
274 return r; 254 return r;
275 } 255 }
276 adev->ddev->max_vblank_count = 0x00ffffff; 256 adev->ddev->max_vblank_count = 0x00ffffff;
@@ -299,7 +279,6 @@ void amdgpu_irq_fini(struct amdgpu_device *adev)
299 pci_disable_msi(adev->pdev); 279 pci_disable_msi(adev->pdev);
300 if (!amdgpu_device_has_dc_support(adev)) 280 if (!amdgpu_device_has_dc_support(adev))
301 flush_work(&adev->hotplug_work); 281 flush_work(&adev->hotplug_work);
302 cancel_work_sync(&adev->reset_work);
303 } 282 }
304 283
305 for (i = 0; i < AMDGPU_IRQ_CLIENTID_MAX; ++i) { 284 for (i = 0; i < AMDGPU_IRQ_CLIENTID_MAX; ++i) {