Re: Patches still in the queue

Oliver Neukum <[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
Am Dienstag, 15. Mai 2007 16:33 schrieb Alan Stern:
> On Tue, 15 May 2007, Oliver Neukum wrote:

> > Yes, and it seems to me that persist should have its own method.
> > Those drivers that don't define it, don't support it.
> 
> It could have its own method.  The method would be nearly identical to
> post_reset(), since they have to do exactly the same thing as far as
> the device is concerned.  In fact, it probably would call post_reset().

With the additional option of running tests to make sure that the device
is indeed still the device it is supposed to be, eg reading out MAC.

> I'm not sure what you want to do with drivers that don't define a
> reset_resume method.  To say they don't support it is like saying they
> don't support regular resume; it may be true but it doesn't help.  We
> don't unbind drivers with no resume method and we don't unbind drivers
> with no post_reset method, so why should we unbind drivers with no
> reset_resume method?

Firstly, perhaps we should unbind if there's no post_reset().

Secondly, we are asking drivers to do something outside the spec. It's
not against the spec, but by no means inside. There is a way to handle
power failure in the spec, that is to reenumerate.

Thirdly, in some error cases, you _will_ need to reenumerate anyway,
eg. firmware gone, configuration cannot be restord, etc...

Fourthly, some drivers cannot do it in principal, because they cannot
restore a device's state, eg. printer, scanner, ...

> Another reason for not doing it is because there's a certain amount of
> fragility involved in unbinding drivers during a reset-resume (or
> during any kind of suspend or resume, for that matter).  These events
> can occur without the device lock being held; this happens with

You surely want to do this in single threaded manner before user space
is unfrozen, don't you?

> autosuspend and autoresume.  Hence the unbind would have to be deferred
> to a different thread -- as in that usb_rebind_interface() patch I
> wrote.  I don't like that approach; it adds too much additional 
> complexity.
> 
> On the other hand, if a driver doesn't support autosuspend then its 
> device will never be autosuspended or autoresumed.  Hence suspend, 
> resume, and reset calls will always occur with the device lock held.  
> In this case it would be safe to allow for rebinding in lieu of 
> resume, post_reset, or reset_resume.  What do you think?

I think that locking matters only for autosuspend/resume. For pre/post_reset
the caller initiating the reset should be responsible for locking the device.
I don't see your line of reasoning here. Could you elaborate?

	Regards
		Oliver

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.