svn commit: r192535 - head/sys/kern
Scott Long
scottl at samsco.org
Fri May 22 15:34:29 UTC 2009
M. Warner Losh wrote:
> In message: <4A16AC32.2040507 at samsco.org>
> Scott Long <scottl at samsco.org> writes:
> : John Baldwin wrote:
> : > On Thursday 21 May 2009 6:11:02 pm Attilio Rao wrote:
> : >> At this point I wonder what's the purpose of maintaining the sleeping
> : >> version for such functions?
> : >
> : > Actually, I still very much do not like using M_NOWAIT needlessly. I would
> : > much rather the solution for make_dev() be that the 1 or 2 places that need
> : > to do it with a mutex held instead queue a task to do the actual make_dev()
> : > in a taskqueue when no locks are held. This is basically what
> : > destroy_dev_sched() is doing. Perhaps a make_dev_sched() with a similar
> : > callback to be called on completion would be better. Having a device driver
> : > do all the work to setup the hardware only to fail to create a node in /dev
> : > so that userland can actually use it is pretty rediculous and useless.
> : >
> :
> : It's a lot easier for me to handle a failure of make_dev in CAM than it
> : is to decouple the call to it. Please don't dictate policy.
>
> On the other hand, we do dictate policy in things like busdma where
> one has to do things in callbacks rather than inline. This is for
> fairly good reasons, and I'm having trouble seeing why the reasons
> presented here for make_dev_sched() are any worse...
>
> Warner
Busdma isn't a good example anymore. I've tried to be very responsive
and accommodating to requests for change; see the
bus_dmamap_load_mbuf_sg() routine for example. It also lets you break
the "normal" semantics without penalty via BUS_DMA_NOWAIT. About the
only thing left in busdma that is cumbersome without an alternative is
allocating static memory. Even then, I provided an alternative for a
number of years, and not a single person used it, so it eventually got
removed.
Scott
More information about the svn-src-all
mailing list