Greg KH wrote:
On Tue, Dec 13, 2005 at 11:01:01AM -0800, David Brownell wrote:
It's way better to just insist that all I/O buffers (in all
generic APIs) be DMA-safe. AFAICT that's a pretty standard
rule everywhere in Linux.
I agree.
Well, why then David doesn't insist on that in his own code?
His synchronous transfer functions are allocating transfer buffers on
stack which is not DMA-safe.
Then he starts messing with allocate-or-use-preallocated stuff etc. etc.
Why isn't he just kmalloc'ing/kfree'ing buffers each time these
functions are called (as he proposes for upper layer drivers to do)?
That's a significant inconsistency. Is it also the thing you agree with?
And they way he does it implies redundant memcpy's and kmalloc's:
suppose we have two controller drivers working in two threads and
calling write_then_read in such a way that the one called later has to
allocate a new buffer. Suppose also that both controller drivers are
working in *PIO* mode. In this situation you have one redundant kmalloc
and two redundant memcpy's, not speaking about overhead brought up by
mutexes.
The thing is that only controller driver is aware whether DMA is needed
or not, so it's controller driver that should work it out.
Requesting all the buffers to be DMA-safe will make a significant
performance drop on all small transfers!
Vitaly
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]