[PATCH 2/2] drm/amd/display: Remove timer handler.

Harry Wentland harry.wentland at amd.com
Tue Jan 23 15:29:42 UTC 2018


On 2018-01-19 04:35 PM, Andrey Grodzovsky wrote:
> Dead code, looks obsolete.
> 
> Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky at amd.com>

Good cleanup. Thanks.

Series is
Reviewed-by: Harry Wentland <harry.wentland at amd.com>

Harry

> ---
>  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 55ac296..9902132 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 1874b6c..0ee425b 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)
> 


More information about the amd-gfx mailing list