diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0976-drm-amd-dal-adjust-flip-clean-up-sequence-to-the-new.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0976-drm-amd-dal-adjust-flip-clean-up-sequence-to-the-new.patch | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/common/recipes-kernel/linux/files/0976-drm-amd-dal-adjust-flip-clean-up-sequence-to-the-new.patch b/common/recipes-kernel/linux/files/0976-drm-amd-dal-adjust-flip-clean-up-sequence-to-the-new.patch deleted file mode 100644 index 6221db4d..00000000 --- a/common/recipes-kernel/linux/files/0976-drm-amd-dal-adjust-flip-clean-up-sequence-to-the-new.patch +++ /dev/null @@ -1,130 +0,0 @@ -From 3100e9cd025b2fc77dde2b6cd0cd8a7f6faf33ad Mon Sep 17 00:00:00 2001 -From: Mykola Lysenko <Mykola.Lysenko@amd.com> -Date: Tue, 15 Mar 2016 06:04:01 -0400 -Subject: [PATCH 0976/1110] drm/amd/dal: adjust flip clean-up sequence to the - new code - -- This change fixes possible intermittent kernel exceptions -during hotplug -- It also fixes a segfault while changing modes with a -DP-DVI active dongle on CZ -- It also resolves an issue when resuming from S3 with MST - -Signed-off-by: Jordan Lazare <Jordan.Lazare@amd.com> -Acked-by: Harry Wentland <harry.wentland@amd.com> -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> ---- - drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c | 42 ---------------------- - drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.h | 4 --- - .../gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c | 22 ++++-------- - 3 files changed, 6 insertions(+), 62 deletions(-) - -diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c -index 5b3edb8..5626402 100644 ---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c -+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.c -@@ -1072,48 +1072,6 @@ static u8 dm_get_backlight_level(struct amdgpu_encoder *amdgpu_encoder) - * Page Flip functions - ******************************************************************************/ - --void amdgpu_dm_flip_cleanup( -- struct amdgpu_device *adev, -- struct amdgpu_crtc *acrtc) --{ -- int r; -- unsigned long flags; -- struct amdgpu_flip_work *works = NULL; -- -- spin_lock_irqsave(&adev->ddev->event_lock, flags); -- if (acrtc->pflip_status != AMDGPU_FLIP_NONE) { -- works = acrtc->pflip_works; -- acrtc->pflip_works = NULL; -- acrtc->pflip_status = AMDGPU_FLIP_NONE; -- -- if (works && works->event) { -- drm_send_vblank_event( -- adev->ddev, -- acrtc->crtc_id, -- works->event); -- } -- spin_unlock_irqrestore(&adev->ddev->event_lock, flags); -- -- if (works) { -- r = amdgpu_bo_reserve(works->old_rbo, false); -- if (likely(r == 0)) { -- r = amdgpu_bo_unpin(works->old_rbo); -- if (unlikely(r != 0)) { -- DRM_ERROR("failed to unpin buffer after flip\n"); -- } -- amdgpu_bo_unreserve(works->old_rbo); -- } else -- DRM_ERROR("failed to reserve buffer after flip\n"); -- -- amdgpu_bo_unref(&works->old_rbo); -- kfree(works->shared); -- kfree(works); -- } -- } else { -- spin_unlock_irqrestore(&adev->ddev->event_lock, flags); -- } --} -- - /** - * dm_page_flip - called by amdgpu_flip_work_func(), which is triggered - * via DRM IOCTL, by user mode. -diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.h b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.h -index 5674a82..34f1f9f 100644 ---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.h -+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm.h -@@ -156,10 +156,6 @@ bool amdgpu_dm_release_dal_lock(struct amdgpu_display_manager *dm); - /* Register "Backlight device" accessible by user-mode. */ - void amdgpu_dm_register_backlight_device(struct amdgpu_display_manager *dm); - --void amdgpu_dm_flip_cleanup( -- struct amdgpu_device *adev, -- struct amdgpu_crtc *acrtc); -- - extern const struct amd_ip_funcs amdgpu_dm_funcs; - - void amdgpu_dm_update_connector_after_detect( -diff --git a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c -index 8e7c491..80bf0f2 100644 ---- a/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c -+++ b/drivers/gpu/drm/amd/dal/amdgpu_dm/amdgpu_dm_types.c -@@ -2071,27 +2071,17 @@ static void manage_dm_interrupts( - &adev->pageflip_irq, - irq_type); - } else { -+ while (acrtc->pflip_status != AMDGPU_FLIP_NONE) { -+ /* Spin Wait*/ -+ -+ /* Todo: Use periodic polling rather than busy wait */ -+ } -+ - amdgpu_irq_put( - adev, - &adev->pageflip_irq, - irq_type); - drm_crtc_vblank_off(&acrtc->base); -- -- /* -- * should be called here, to guarantee no works left in queue. -- * As this function sleeps it was bug to call it inside the -- * amdgpu_dm_flip_cleanup function under locked event_lock -- */ -- if (acrtc->pflip_works) { -- flush_work(&acrtc->pflip_works->flip_work); -- flush_work(&acrtc->pflip_works->unpin_work); -- } -- -- /* -- * this is the case when on reset, last pending pflip -- * interrupt did not not occur. Clean-up -- */ -- amdgpu_dm_flip_cleanup(adev, acrtc); - } - } - --- -2.7.4 - |