I guess we should just ask Tejun :-)

Tejun, the problem was a report that a WQ_MEM_RECLAIM workqueue is
flushing another that isn't, and it turns out that lots of wireless
drivers are using WQ_MEM_RECLAIM for some reason.

Arend said:
> >  > > Maybe a hint in the documentation, that a work item on a WQ_MEM_RECLAIM
> >  > > queue must not call flush of an !WQ_MEM_RECLAIM queue would be nice.
> >  > > Maybe it's kind of obvious, but there is also a reminder not to forget
> >  > > that flag, if a queue may have work items that reclaim memory
> >  >
> >  > Yeah, honestly, I'm not really sure either. Clearly we can't set it,
> >  > but other drivers also set it...
> > 
> > That triggered something in my memory. So indeed we use it in brcmfmac
> > as well. We used create_singlethread_workqueue(), but I wanted to avoid
> > snprintf and specify the name format so switched to using
> > alloc_ordered_workqueue() keeping WQ_MEM_RECLAIM as per the macro
> > definition.
> 
> #define create_singlethread_workqueue(name)                           \
>       alloc_ordered_workqueue("%s", __WQ_LEGACY | WQ_MEM_RECLAIM, name)
> 
> > Don't recall why I dropped the __WQ_LEGACY flag though.

johannes

Reply via email to