On Wed, Mar 13, 2002 at 11:55:35AM +0530, V Ganesh wrote:
> > On Tue, Mar 12, 2002 at 06:39:52PM +0530, V Ganesh wrote:
> > > I'm halfway through. this is the approach I'm using, please comment:
> > > 1. all *_callback() functions must use GFP_ATOMIC.
> >
> > Good.
> >
> > > 2. anything inside a spinlock must use GFP_ATOMIC.
> >
> > No, we should not be calling usb_submit_urb() with a spinlock held.
> > Which usb-serial driver is doing this?
>
> ipaq. mea culpa, I'll fix it.
Thanks.
> also digi_accelport.c where practically all urbs are submitted holding a
> spinlock.
I haven't looked in depth at the digi_accelport driver in quite some
time. This should probably be changed in the 2.4 and 2.2 versions of
the driver at the least.
> > > 4. *_write(), *_unthrottle() can be called from user context as well as
> > > bottom half context. so I define a macro in usb-serial.h
> > > #define ALLOC_FLAGS (in_interrupt() ? GFP_ATOMIC : GFP_KERNEL)
> > > and use it in these functions. the alternative is to always do a
> > > GFP_ATOMIC.
> >
> > What would cause it to be called from a bottom half? The pppd driver?
> > For some reason I thought this had been changed.
>
> I don't know much about ppp, but strace of pppd shows it completely
> idle and waiting on a select() throughout the entire session (except the lcp
> bits). I thought this implied all packets were sent/received in bh/irq context.
> in any case, I don't think it's right for a low-level driver to constrain
> what the ldisc may do. e.g. an ldisc might echo characters, and this would
> happen immediately in the read_callback() context because many drivers call
> tty_flip_buffer_push().
>
> so the only question seems to be to use GFP_ATOMIC or ALLOC_FLAGS.
GFP_ATOMIC sounds good to me, anyone else with an opinion?
This will also "solve"[1] the problem of people with a swap partition
mounted on a NFS partition over ppp through a usb-serial connection.
thanks,
greg k-h
[1] people doing this need more than this simple solution for their
problems :)
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel