From: James Bottomley <James.Bottomley@steeleye.com>
To: David Brownell <david-b@pacbell.net>
Cc: James Bottomley <James.Bottomley@SteelEye.com>,
linux-kernel@vger.kernel.org
Subject: Re: [RFT][PATCH] generic device DMA implementation
Date: Fri, 27 Dec 2002 15:40:21 -0600 [thread overview]
Message-ID: <200212272140.gBRLeMW03698@localhost.localdomain> (raw)
In-Reply-To: Message from David Brownell <david-b@pacbell.net> of "Fri, 27 Dec 2002 12:21:54 PST." <3E0CB662.2010009@pacbell.net>
david-b@pacbell.net said:
> - Implementation-wise, I'm rather surprised that the generic
> version doesn't just add new bus driver methods rather than
> still insisting everything be PCI underneath.
You mean dma-mapping.h in asm-generic? The reason for that is to provide an
implementation that functions now for non x86 (and non-parisc) archs without
having to write specific code for them all. Since all the other arch's now
function in terms of the pci_ API, that was the only way of sliding the dma_
API in without breaking them all.
Bus driver methods have been advocated before, but it's not clear to me that
they should be exposed in the *generic* API.
> It's not clear to me how I'd make, for example, a USB device
> or interface work with dma_map_sg() ... those "generic" calls
> are going to fail (except on x86, where all memory is DMA-able)
> since USB != PCI.
Actually, they should work on parisc out of the box as well because of the way
its DMA implementation is built in terms of the generic dma_ API.
As far as implementing this generically, just adding a case for the
usb_bus_type in asm-generic/dma-mapping.h will probably get you where you need
to be. (the asm-generic is, after all, only intended as a stopgap. Fully
coherent platforms with no IOMMUs will probably take the x86 route to
implementing the dma_ API, platforms with IOMMUs will probably (eventually) do
similar things to parisc).
> (The second indirection: the usb controller hardware does the
> mapping, not the device or hcd. That's usually PCI.)
Could you clarify this a little. I tend to think of "mapping" as something
done by the IO MMU managing the bus. I think you mean that the usb controller
will mark a region of memory to be accessed by the device. If such a region
were also "mapped" by an IOMMU, it would be done outside the control of the
USB controller, correct? (the IOMMU would translate between the address the
processor sees and the address the USB controller thinks it's responding to)
Is the problem actually that the USB controller needs to be able to allocate
coherent memory in a range much more narrowly defined than the current
dma_mask allows?
> - There's no analogue to pci_pool, and there's nothing like
> "kmalloc" (likely built from N dma-coherent pools).
I didn't want to build another memory pool re-implementation. The mempool API
seems to me to be flexible enough for this, is there some reason it won't work?
I did consider wrappering mempool to make it easier, but I couldn't really
find a simplifying wrapper that wouldn't lose flexibility.
James
next prev parent reply other threads:[~2002-12-27 21:32 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-12-27 20:21 David Brownell
2002-12-27 21:40 ` James Bottomley [this message]
2002-12-28 1:29 ` David Brownell
2002-12-28 16:18 ` James Bottomley
2002-12-28 18:16 ` David Brownell
2002-12-28 1:56 ` David Brownell
2002-12-28 16:13 ` James Bottomley
2002-12-28 17:41 ` David Brownell
2002-12-30 23:11 ` [PATCH] generic device DMA (dma_pool update) David Brownell
2002-12-31 15:00 ` James Bottomley
2002-12-31 17:04 ` David Brownell
2002-12-31 17:23 ` James Bottomley
2002-12-31 18:11 ` David Brownell
2002-12-31 18:44 ` James Bottomley
2002-12-31 19:29 ` David Brownell
2002-12-31 19:50 ` James Bottomley
2002-12-31 21:17 ` David Brownell
2002-12-31 16:36 ` James Bottomley
2002-12-31 17:32 ` David Brownell
2002-12-27 21:47 ` [RFT][PATCH] generic device DMA implementation James Bottomley
2002-12-28 2:28 ` David Brownell
-- strict thread matches above, loose matches on Subject: below --
2002-12-28 22:19 Adam J. Richter
2002-12-30 23:23 ` David Brownell
2002-12-28 20:11 Adam J. Richter
2002-12-28 15:41 Adam J. Richter
2002-12-28 16:59 ` David Brownell
2002-12-28 3:39 Adam J. Richter
2002-12-30 0:45 ` Alan Cox
2002-12-28 2:48 Adam J. Richter
2002-12-28 15:05 ` David Brownell
2002-12-27 22:57 Manfred Spraul
2002-12-27 23:55 ` James Bottomley
2002-12-28 0:20 ` Manfred Spraul
2002-12-28 16:26 ` James Bottomley
2002-12-28 17:54 ` Manfred Spraul
2002-12-28 18:13 ` James Bottomley
2002-12-28 18:25 ` Manfred Spraul
2002-12-28 18:40 ` James Bottomley
2002-12-28 20:05 ` Manfred Spraul
2002-12-18 3:01 James Bottomley
2002-12-18 3:13 ` David Mosberger
2002-12-28 18:14 ` Russell King
2002-12-28 18:19 ` James Bottomley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200212272140.gBRLeMW03698@localhost.localdomain \
--to=james.bottomley@steeleye.com \
--cc=david-b@pacbell.net \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®