RE: [PATCH] iwlwifi: dvm: convert create_singlethread_workqueue() to alloc_workqueue()

From: Grumbach, Emmanuel
Date: Thu Mar 17 2016 - 09:48:49 EST


> Hello,
>
> On Thu, Mar 17, 2016 at 01:43:22PM +0100, Johannes Berg wrote:
> > On Thu, 2016-03-17 at 20:37 +0800, Eva Rachel Retuya wrote:
> > > Use alloc_workqueue() to allocate the workqueue instead of
> > > create_singlethread_workqueue() since the latter is deprecated and
> > > is scheduled for removal.
> >
> > Scheduled where?
>
> They've been deprecated for years now. I should note that in the header.
>
> > >  static void iwl_setup_deferred_work(struct iwl_priv *priv)
> > >  {
> > > - priv->workqueue = create_singlethread_workqueue(DRV_NAME);
> > > + priv->workqueue = alloc_workqueue(DRV_NAME, WQ_HIGHPRI |
> > > WQ_UNBOUND |
> > > +   WQ_MEM_RECLAIM, 1);
> >
> > Seems like you should use alloc_ordered_workqueue() though? That also
> > gets you UNBOUND immediately, and the "1".
>
> Right, this one should have been alloc_ordered_workqueue().
>
> > I'm not really sure HIGHPRI is needed either.
>
> So, no WQ_MEM_RECLAIM either then, I suppose? What are the latency
> requirements here - what happens if a thermal management work gets
> delayed?
>

This worker is not supposed to free memory, so no WQ_MEM_RECLAIM needed. The latency is not critical.