-----Original Message----- From: Takashi Iwai [mailto:tiwai@suse.de] Sent: Tuesday, November 26, 2013 2:36 PM To: Lin, Mengdong
I thought that the recent workqueue is performed asynchronously as default (unless an ordered workqueue is used), so it should be enough to have a single workqueue in the bus, and flush it.
If using the single work queue in the bus, I observe that the codecs are
suspended one after one, not in parallel.
You need to increase the max active of the queue via workqueue_set_max_active(). Otherwise it's default to 1 when you created via create_workqueue(). Also, it'd be better with WQ_UNBOUND flag in this case, I guess.
Thank you! workqueue_set_max_active() works. I use max codec number 15 as the max_active. But there is no obvious improvement by using WQ_UNBOUND, so it's not used in the 2nd version patch.
Regards Mengdong