Re: [RFC] New Driver Model for 2.5

Benjamin Herrenschmidt
2001-10-23T20:45:06Z

>"Stop accepting new requests" is nontrivial as well, in the general
>case. New requests that can't be discarded need to be queued
>somewhere. Whose responsibility is that? Ideally at some point where
>a queue already exists, possibly in the requester.

Some driver already handle queues. In the case of network driver, just
stop your network queue and stop accepting incoming packets. If your
driver is too simple to have queues, a simple semaphore on entry points
can often be enough. You shouldn't deadlock as you are not supposed to
re-enter a sleeping driver in step 2.

The above, is ensured by the tree layout which does the dependency
ordering. You might have slightly off-tree dependencies, like I have
in a couple of case on macs. But I figured that all of them could be
handled as special case in some parent nodes without beeing that
dirty (in most case, those are Apple specific ASICs containing devices
with inter-deps, and the workaround is to move some devices sleep code
to the node of the ASIC itself).

Ben.