diff options
author | Christian König <christian.koenig@amd.com> | 2016-02-11 11:31:37 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2016-02-16 17:25:38 -0500 |
commit | 87d58c11ec17234c4636a588466260a95fec59cb (patch) | |
tree | 8b965b90dd6135aca7dd3558e21fcdbbe73cae25 /drivers | |
parent | c3874b758ad52708ffdbab3e7c58e70167ce5024 (diff) |
drm/amdgpu: remove page flip work queue v3
Just use the system queue now that we don't block any more.
v2: handle DAL as well.
v3: agd: split DAL changes out
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Mykola Lysenko <mykola.lysenko@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com> (v1)
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 4 |
5 files changed, 4 insertions, 13 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c index edf91593ac87..2cb53c24dec0 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | |||
@@ -39,11 +39,9 @@ static void amdgpu_flip_callback(struct fence *f, struct fence_cb *cb) | |||
39 | { | 39 | { |
40 | struct amdgpu_flip_work *work = | 40 | struct amdgpu_flip_work *work = |
41 | container_of(cb, struct amdgpu_flip_work, cb); | 41 | container_of(cb, struct amdgpu_flip_work, cb); |
42 | struct amdgpu_device *adev = work->adev; | ||
43 | struct amdgpu_crtc *amdgpu_crtc = adev->mode_info.crtcs[work->crtc_id]; | ||
44 | 42 | ||
45 | fence_put(f); | 43 | fence_put(f); |
46 | queue_work(amdgpu_crtc->pflip_queue, &work->flip_work); | 44 | schedule_work(&work->flip_work); |
47 | } | 45 | } |
48 | 46 | ||
49 | static bool amdgpu_flip_handle_fence(struct amdgpu_flip_work *work, | 47 | static bool amdgpu_flip_handle_fence(struct amdgpu_flip_work *work, |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h index fdc1be8550da..8d432e6901af 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h | |||
@@ -390,7 +390,6 @@ struct amdgpu_crtc { | |||
390 | struct drm_display_mode native_mode; | 390 | struct drm_display_mode native_mode; |
391 | u32 pll_id; | 391 | u32 pll_id; |
392 | /* page flipping */ | 392 | /* page flipping */ |
393 | struct workqueue_struct *pflip_queue; | ||
394 | struct amdgpu_flip_work *pflip_works; | 393 | struct amdgpu_flip_work *pflip_works; |
395 | enum amdgpu_flip_status pflip_status; | 394 | enum amdgpu_flip_status pflip_status; |
396 | int deferred_flip_completion; | 395 | int deferred_flip_completion; |
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c index 093599aba64b..a8ac8a34df87 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | |||
@@ -2670,7 +2670,6 @@ static void dce_v10_0_crtc_destroy(struct drm_crtc *crtc) | |||
2670 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); | 2670 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); |
2671 | 2671 | ||
2672 | drm_crtc_cleanup(crtc); | 2672 | drm_crtc_cleanup(crtc); |
2673 | destroy_workqueue(amdgpu_crtc->pflip_queue); | ||
2674 | kfree(amdgpu_crtc); | 2673 | kfree(amdgpu_crtc); |
2675 | } | 2674 | } |
2676 | 2675 | ||
@@ -2890,7 +2889,6 @@ static int dce_v10_0_crtc_init(struct amdgpu_device *adev, int index) | |||
2890 | 2889 | ||
2891 | drm_mode_crtc_set_gamma_size(&amdgpu_crtc->base, 256); | 2890 | drm_mode_crtc_set_gamma_size(&amdgpu_crtc->base, 256); |
2892 | amdgpu_crtc->crtc_id = index; | 2891 | amdgpu_crtc->crtc_id = index; |
2893 | amdgpu_crtc->pflip_queue = create_singlethread_workqueue("amdgpu-pageflip-queue"); | ||
2894 | adev->mode_info.crtcs[index] = amdgpu_crtc; | 2892 | adev->mode_info.crtcs[index] = amdgpu_crtc; |
2895 | 2893 | ||
2896 | amdgpu_crtc->max_cursor_width = 128; | 2894 | amdgpu_crtc->max_cursor_width = 128; |
@@ -3366,7 +3364,7 @@ static int dce_v10_0_pageflip_irq(struct amdgpu_device *adev, | |||
3366 | spin_unlock_irqrestore(&adev->ddev->event_lock, flags); | 3364 | spin_unlock_irqrestore(&adev->ddev->event_lock, flags); |
3367 | 3365 | ||
3368 | drm_vblank_put(adev->ddev, amdgpu_crtc->crtc_id); | 3366 | drm_vblank_put(adev->ddev, amdgpu_crtc->crtc_id); |
3369 | queue_work(amdgpu_crtc->pflip_queue, &works->unpin_work); | 3367 | schedule_work(&works->unpin_work); |
3370 | 3368 | ||
3371 | return 0; | 3369 | return 0; |
3372 | } | 3370 | } |
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c index 8e67249d4367..a7699bec270a 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | |||
@@ -2661,7 +2661,6 @@ static void dce_v11_0_crtc_destroy(struct drm_crtc *crtc) | |||
2661 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); | 2661 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); |
2662 | 2662 | ||
2663 | drm_crtc_cleanup(crtc); | 2663 | drm_crtc_cleanup(crtc); |
2664 | destroy_workqueue(amdgpu_crtc->pflip_queue); | ||
2665 | kfree(amdgpu_crtc); | 2664 | kfree(amdgpu_crtc); |
2666 | } | 2665 | } |
2667 | 2666 | ||
@@ -2881,7 +2880,6 @@ static int dce_v11_0_crtc_init(struct amdgpu_device *adev, int index) | |||
2881 | 2880 | ||
2882 | drm_mode_crtc_set_gamma_size(&amdgpu_crtc->base, 256); | 2881 | drm_mode_crtc_set_gamma_size(&amdgpu_crtc->base, 256); |
2883 | amdgpu_crtc->crtc_id = index; | 2882 | amdgpu_crtc->crtc_id = index; |
2884 | amdgpu_crtc->pflip_queue = create_singlethread_workqueue("amdgpu-pageflip-queue"); | ||
2885 | adev->mode_info.crtcs[index] = amdgpu_crtc; | 2883 | adev->mode_info.crtcs[index] = amdgpu_crtc; |
2886 | 2884 | ||
2887 | amdgpu_crtc->max_cursor_width = 128; | 2885 | amdgpu_crtc->max_cursor_width = 128; |
@@ -3361,7 +3359,7 @@ static int dce_v11_0_pageflip_irq(struct amdgpu_device *adev, | |||
3361 | spin_unlock_irqrestore(&adev->ddev->event_lock, flags); | 3359 | spin_unlock_irqrestore(&adev->ddev->event_lock, flags); |
3362 | 3360 | ||
3363 | drm_vblank_put(adev->ddev, amdgpu_crtc->crtc_id); | 3361 | drm_vblank_put(adev->ddev, amdgpu_crtc->crtc_id); |
3364 | queue_work(amdgpu_crtc->pflip_queue, &works->unpin_work); | 3362 | schedule_work(&works->unpin_work); |
3365 | 3363 | ||
3366 | return 0; | 3364 | return 0; |
3367 | } | 3365 | } |
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c index d0e128c24813..628d7b2433b9 100644 --- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | |||
@@ -2582,7 +2582,6 @@ static void dce_v8_0_crtc_destroy(struct drm_crtc *crtc) | |||
2582 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); | 2582 | struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc); |
2583 | 2583 | ||
2584 | drm_crtc_cleanup(crtc); | 2584 | drm_crtc_cleanup(crtc); |
2585 | destroy_workqueue(amdgpu_crtc->pflip_queue); | ||
2586 | kfree(amdgpu_crtc); | 2585 | kfree(amdgpu_crtc); |
2587 | } | 2586 | } |
2588 | 2587 | ||
@@ -2809,7 +2808,6 @@ static int dce_v8_0_crtc_init(struct amdgpu_device *adev, int index) | |||
2809 | 2808 | ||
2810 | drm_mode_crtc_set_gamma_size(&amdgpu_crtc->base, 256); | 2809 | drm_mode_crtc_set_gamma_size(&amdgpu_crtc->base, 256); |
2811 | amdgpu_crtc->crtc_id = index; | 2810 | amdgpu_crtc->crtc_id = index; |
2812 | amdgpu_crtc->pflip_queue = create_singlethread_workqueue("amdgpu-pageflip-queue"); | ||
2813 | adev->mode_info.crtcs[index] = amdgpu_crtc; | 2811 | adev->mode_info.crtcs[index] = amdgpu_crtc; |
2814 | 2812 | ||
2815 | amdgpu_crtc->max_cursor_width = CIK_CURSOR_WIDTH; | 2813 | amdgpu_crtc->max_cursor_width = CIK_CURSOR_WIDTH; |
@@ -3375,7 +3373,7 @@ static int dce_v8_0_pageflip_irq(struct amdgpu_device *adev, | |||
3375 | spin_unlock_irqrestore(&adev->ddev->event_lock, flags); | 3373 | spin_unlock_irqrestore(&adev->ddev->event_lock, flags); |
3376 | 3374 | ||
3377 | drm_vblank_put(adev->ddev, amdgpu_crtc->crtc_id); | 3375 | drm_vblank_put(adev->ddev, amdgpu_crtc->crtc_id); |
3378 | queue_work(amdgpu_crtc->pflip_queue, &works->unpin_work); | 3376 | schedule_work(&works->unpin_work); |
3379 | 3377 | ||
3380 | return 0; | 3378 | return 0; |
3381 | } | 3379 | } |