alloc_workqueue() + WQ_HIGHPRI

/drivers/gpu/drm/radeon/radeon_display.c

–       radeon_crtc->flip_queue = create_singlethread_workqueue(“radeon-crtc”);

+       radeon_crtc->flip_queue = alloc_workqueue(“radeon-crtc”, WQ_HIGHPRI, 0);

 

  • Each hardware CRTC has a single flip work queue. When a radeon_flip_work_func item is queued, it needs to be executed ASAP because even a slight delay may cause the flip to be delayed by one refresh cycle.
  • Hence, a dedicated workqueue with WQ_HIGHPRI set, has been used here since a delay can cause the outcome to miss the refresh cycle.
  • Since there are only a fixed number of work items, explicit concurrency limit is unnecessary here.

Tip..

Used for workqueues that queue work items that require high priority for execution..

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s