aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3272-drm-amd-display-Remove-timer-handler.patch
diff options
context:
space:
mode:
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.patch140
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
+