[Intel-gfx] How to convert drivers/gpu/drm/i915/ to use local workqueue?

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Thu Jun 30 07:46:36 UTC 2022


Hi,

On 10/06/2022 15:57, Tetsuo Handa wrote:
> Hello.
> 
> Like commit c4f135d643823a86 ("workqueue: Wrap flush_workqueue() using
> a macro") explains, we are removing flush_scheduled_work() calls. And now
> 
>    drivers/gpu/drm/i915/display/intel_display.c
>    drivers/gpu/drm/i915/gt/selftest_execlists.c
> 
> are the last flush_scheduled_work() callers which have no patch proposed.
> I want to make a patch like
> https://lkml.kernel.org/r/e9b95132-89cd-5cfc-1a09-966393c5ecb0@I-love.SAKURA.ne.jp
> but I couldn't understand how to interpret drivers/gpu/drm/i915/ part.

Could you provide some more context please? I did not immediately 
understand whether the goal is remove flush_schedule_work helper with no 
arguments, or actually stop drivers using the system work queues.

Regards,

Tvrtko

> 
> 
> 
> There are many schedule_work()/schedule_delayed_work() callers within
> drivers/gpu/drm/i915/ directory.
> 
> intel_modeset_driver_remove_noirq() in intel_display.c says
> 
>          /* flush any delayed tasks or pending work */
>          flush_scheduled_work();
> 
> but intel_display.c itself does not call schedule_delayed_work().
> Then, does this flush_scheduled_work() mean to wait all schedule_work()/schedule_delayed_work()
> calls inside drivers/gpu/drm/i915/ directory?
> 
> wait_for_reset() in selftest_execlists.c says
> 
> 	flush_scheduled_work();
> 
> but selftest_execlists.c itself does not call schedule_work()/schedule_delayed_work().
> Then, does this flush_scheduled_work() mean to wait all schedule_work()/schedule_delayed_work()
> calls inside drivers/gpu/drm/i915/ directory, by sharing a WQ created for
> intel_modeset_driver_remove_noirq() ?


More information about the Intel-gfx mailing list