Thread (19 messages) 19 messages, 3 authors, 2009-06-15

Re: [PATCH 1/6] rapidio: add common mapping APIs for RapidIO memory access

From: Li Yang <hidden>
Date: 2009-06-15 10:39:10
Also in: lkml, netdev

On Fri, Jun 12, 2009 at 9:58 PM, Kumar Gala[off-list ref] wrot=
e:
On Jun 12, 2009, at 8:27 AM, Li Yang wrote:
quoted
On Thu, Jun 11, 2009 at 9:32 PM, Kumar Gala[off-list ref]
wrote:
quoted
On Jun 11, 2009, at 4:47 AM, Li Yang-R58472 wrote:
quoted
quoted
On May 12, 2009, at 3:35 AM, Li Yang wrote:
quoted
Add the mapping functions used to support direct IO memory access of
rapidIO.

Signed-off-by: Zhang Wei <zw@zh-kernel.org>
Signed-off-by: Li Yang <redacted>
Use inbnd/outbnd instead of inb/outb which make one think of
byte level io accessors.

As I look at this I don't think this is the correct API. =C2=A0I
think we should be using the DMA mapping API to hide these
details. =C2=A0The concept of mapping like this seems to be more a
function of FSL's Address translation/mapping unit (ATMU) than
anything specific to the RIO bus standard.
This is a separate RIO block level ATMU. =C2=A0Although it looks like =
the
quoted
quoted
quoted
system level ATMU, system ATMU doesn't have the knowledge of rapidIO
target device ID. =C2=A0The mapping need to be dynamic, as it's easy t=
o have
quoted
quoted
quoted
more RIO devices than the outbound windows.
I understand that. =C2=A0What I'm saying is the RIO block level ATMU is=
 a
quoted
quoted
Freescale specific detail and not part of any standard RIO bus
programming
model. =C2=A0We have mapping APIs that we can connect to for this via t=
he DMA
quoted
quoted
API
layer.
Ok, I see your point now. Do you mean dma_map_*() for DMA API layer?
But in my understanding the current dma_map_*() APIs are preparing
local memory for device to access which is similar to the inbound
case. =C2=A0Is it suitable to also use them for mapping device's space f=
or
quoted
CPU access? =C2=A0Can you give an example of using this API for Address
Translation and Mapping purpose?
Yes, I meant the dma_map_*() API. =C2=A0Any system with a true IOMMU uses=
 the
dma_map_ layer as the way to do address translation.
IOMMU case is not very similar to the RapidIO scenario.  RapidIO
mapping is more like PCI address space mapping.

To be specific, the DMA API return dma_addr_t not the rapidIO address
type.  And they can only handle inbound mapping not both ways.  I
don't think the DMA API is competent enough to be used here for RIO
mapping.  Unless we have a more universal mapping API, it can be
justified to create its own API.

- Leo
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help