Re: [PATCH/RFC] SPI: add DMAUNSAFE analog to David Brownell's core



On Fri, Dec 16, 2005 at 01:23:32AM +0300, Vitaly Wool wrote:
> Greg KH wrote:
>
> >On Thu, Dec 15, 2005 at 09:47:42AM +0300, Vitaly Wool wrote:
> >
> >
> >>David Brownell wrote:
> >>
> >>
> >>
> >>>No, "stupid drivers will suffer"; nothing new. Just observe
> >>>how the ads7846 touchscreen driver does small async transfers.
> >>>
> >>>
> >>>
> >>>
> >>One cannot allocate memory in interrupt context, so the way to go is
> >>allocating it on stack, thus the buffer is not DMA-safe.
> >>Making it DMA-safe in thread that does the very message processing is a
> >>good way of overcoming this.
> >>Using preallocated buffer is not a good way, since it may well be
> >>already used by another interrupt or not yet processed by the worker
> >>thread (or tasklet, or whatever).
> >>
> >>
> >
> >Yes it is a good way. That's the way USB currently works in the kernel,
> >and it works just fine. It keeps the rules simple and everyone knows
> >what needs to be done.
> >
> >
> Looking at my usbnet stuff, I can't share that opinion :-/
> Are you really ready to lower the performance and quality of service
> just for approach uniformity?

What performance issues? As an example, USB has this rule, and we can
saturate a 480Mbit line with a _userspace_ driver (loads of memcopy
calles involved there.)

> And, can you please point me out the examples of devices behind USB bus
> that need to write registers from an interrupt context?

usb to serial drivers need to allocate buffers for their write functions
as they can be called in irq context from a tty line dicipline, which
causes a USB packet to be dynamically created and sent to the USB core.
I also think the USB network and ATM drivers have these requirements
too, just search for GFP_ATOMIC in the drivers/usb/ directory to find
these instances.

Anyway, this is my last response about this issue. Please consider it
over.

thanks,

greg k-h
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: [spi-devel-general] Re: [PATCH/RFC] SPI: add DMAUNSAFE analog
    ... > One cannot allocate memory in interrupt context, so the way to go is ... is the way to allocate memory in irq context. ... but it's particularly relevant since both USB and SPI ... We would call those "driver bugs" and expect patches. ...
    (Linux-Kernel)
  • Re: [PATCH/RFC] SPI: add DMAUNSAFE analog to David Brownells core
    ... how the ads7846 touchscreen driver does small async transfers. ... One cannot allocate memory in interrupt context, so the way to go is allocating it on stack, thus the buffer is not DMA-safe. ... causes a USB packet to be dynamically created and sent to the USB core. ...
    (Linux-Kernel)
  • Re: [spi-devel-general] Re: [PATCH/RFC] SPI: add DMAUNSAFE analog
    ... allocating it on stack, thus the buffer is not DMA-safe. ... so allocationg it in interrupt context is buggy. ... but it's particularly relevant since both USB and SPI ...
    (Linux-Kernel)
  • [PATCH 07/12 v2] gigaset: improve error recovery
    ... When the Gigaset base stops responding, try resetting the USB ... Impact: error handling improvement ... hang up any existing connection because of an unrecoverable error ... called by the USB subsystem in interrupt context ...
    (Linux-Kernel)
  • [PATCH 07/12] gigaset: improve error recovery (v2)
    ... When the Gigaset base stops responding, try resetting the USB ... Impact: error handling improvement ... hang up any existing connection because of an unrecoverable error ... called by the USB subsystem in interrupt context ...
    (Linux-Kernel)