diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3272-drm-amd-display-Remove-timer-handler.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3272-drm-amd-display-Remove-timer-handler.patch | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3272-drm-amd-display-Remove-timer-handler.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3272-drm-amd-display-Remove-timer-handler.patch new file mode 100644 index 00000000..d44f8767 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3272-drm-amd-display-Remove-timer-handler.patch @@ -0,0 +1,140 @@ +From 9a7d4b5e9bdd3ffdfdf62cc58cdd98edf290ea19 Mon Sep 17 00:00:00 2001 +From: Andrey Grodzovsky <andrey.grodzovsky@amd.com> +Date: Fri, 19 Jan 2018 16:35:06 -0500 +Subject: [PATCH 3272/4131] drm/amd/display: Remove timer handler. + +Dead code, looks obsolete. + +Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com> +Reviewed-by: Harry Wentland <harry.wentland@amd.com> +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 4 -- + .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c | 76 ---------------------- + 2 files changed, 80 deletions(-) + +diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +index c8d457e..c5c7019 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +@@ -117,10 +117,6 @@ struct amdgpu_display_manager { + /* this spin lock synchronizes access to 'irq_handler_list_table' */ + spinlock_t irq_handler_list_table_lock; + +- /* Timer-related data. */ +- struct list_head timer_handler_list; +- struct workqueue_struct *timer_workqueue; +- + struct backlight_device *backlight_dev; + + const struct dc_link *backlight_link; +diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c +index b090769..4b9ea76 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_irq.c +@@ -51,11 +51,6 @@ struct amdgpu_dm_irq_handler_data { + enum dc_irq_source irq_source; + }; + +-struct amdgpu_dm_timer_handler_data { +- struct handler_common_data hcd; +- struct delayed_work d_work; +-}; +- + #define DM_IRQ_TABLE_LOCK(adev, flags) \ + spin_lock_irqsave(&adev->dm.irq_handler_list_table_lock, flags) + +@@ -169,62 +164,6 @@ static struct list_head *remove_irq_handler(struct amdgpu_device *adev, + return hnd_list; + } + +-/* If 'handler_in == NULL' then remove ALL handlers. */ +-static void remove_timer_handler(struct amdgpu_device *adev, +- struct amdgpu_dm_timer_handler_data *handler_in) +-{ +- struct amdgpu_dm_timer_handler_data *handler_temp; +- struct list_head *handler_list; +- struct list_head *entry, *tmp; +- unsigned long irq_table_flags; +- bool handler_removed = false; +- +- DM_IRQ_TABLE_LOCK(adev, irq_table_flags); +- +- handler_list = &adev->dm.timer_handler_list; +- +- list_for_each_safe(entry, tmp, handler_list) { +- /* Note that list_for_each_safe() guarantees that +- * handler_temp is NOT null. */ +- handler_temp = list_entry(entry, +- struct amdgpu_dm_timer_handler_data, hcd.list); +- +- if (handler_in == NULL || handler_in == handler_temp) { +- list_del(&handler_temp->hcd.list); +- DM_IRQ_TABLE_UNLOCK(adev, irq_table_flags); +- +- DRM_DEBUG_KMS("DM_IRQ: removing timer handler: %p\n", +- handler_temp); +- +- if (handler_in == NULL) { +- /* Since it is still in the queue, it must +- * be cancelled. */ +- cancel_delayed_work_sync(&handler_temp->d_work); +- } +- +- kfree(handler_temp); +- handler_removed = true; +- +- DM_IRQ_TABLE_LOCK(adev, irq_table_flags); +- } +- +- /* Remove ALL handlers. */ +- if (handler_in == NULL) +- continue; +- +- /* Remove a SPECIFIC handler. +- * Found our handler - we can stop here. */ +- if (handler_in == handler_temp) +- break; +- } +- +- DM_IRQ_TABLE_UNLOCK(adev, irq_table_flags); +- +- if (handler_in != NULL && handler_removed == false) +- DRM_ERROR("DM_IRQ: handler: %p is not in the list!\n", +- handler_in); +-} +- + static bool + validate_irq_registration_params(struct dc_interrupt_params *int_params, + void (*ih)(void *)) +@@ -382,16 +321,6 @@ int amdgpu_dm_irq_init(struct amdgpu_device *adev) + INIT_LIST_HEAD(&adev->dm.irq_handler_list_high_tab[src]); + } + +- INIT_LIST_HEAD(&adev->dm.timer_handler_list); +- +- /* allocate and initialize the workqueue for DM timer */ +- adev->dm.timer_workqueue = create_singlethread_workqueue( +- "dm_timer_queue"); +- if (adev->dm.timer_workqueue == NULL) { +- DRM_ERROR("DM_IRQ: unable to create timer queue!\n"); +- return -1; +- } +- + return 0; + } + +@@ -410,11 +339,6 @@ void amdgpu_dm_irq_fini(struct amdgpu_device *adev) + lh = &adev->dm.irq_handler_list_low_tab[src]; + flush_work(&lh->work); + } +- +- /* Cancel ALL timers and release handlers (if any). */ +- remove_timer_handler(adev, NULL); +- /* Release the queue itself. */ +- destroy_workqueue(adev->dm.timer_workqueue); + } + + int amdgpu_dm_irq_suspend(struct amdgpu_device *adev) +-- +2.7.4 + |