ppc440spe-adma: ADMA driver for PPC440SP(e) and 64-bit physical addresses

From: John Burr <hidden>
Date: 2008-12-10 22:16:49

I am confused about the capabilities of the PPC440SPe DMA hardware.  I'm =
wondering if I can use it to transfer data between system memory and a =
PCI Express slave-only device.  To do that, the DMA scatter-gather list =
entry used by the DMA hardware would need to support addresses > 32-bits =
as the PCI Express slave memory is mapped by Linux above the 4GB line =
(i.e. 440SPe hardware uses a 36-bit physical address).
=20
The AMCC PPC440SPe User's Manual V1.27 chapter 20 on the I20/DMA core =
indicates (among other things):
=20
DMA0 features include:
* Any source PLB address to any destination address
* 64-bit addressing
=20
These items lead me to think I should be able to do this.  However, =
section 20.5.1, "Basic Command Descriptor Block Structure" indicates:
=20
"The DMA engine only supports the simple addressing Scatter/Gather List =
(SGL) format defined in I2O (v1.5).  No other SGL formats are =
supported."
=20
From what I can see from the I20 V1.5 specification, only 32-bit =
physical addresses are supported in the SGL entry. =20
=20
I looked over the recent post of the ppc440spe-adma ADMA driver and see =
the physical addresses used seem to be type dma_addr_t.  That's 32-bits =
on the PPC440SPe powerpc Linux platform.  So, this leads me to believe I =
cannot use the DMA hardware to address above the 4GB line.
=20
I don't get why the 440SPe DMA hardware goes to such lengths to support =
the placement of the CDBs anywhere in memory (these do use 64-bit =
addresses) while then limiting the SGL addresses for the data itself to =
32-bits.  I believe the completely different DMA hardware on the 440GX =
did not have this kind of "weirdness".
=20
Is there any way to use the 440SPe hardware to transfer data to a PCI =
Express slave device?  If so, are there any drivers that show how to do =
it?
=20
I realize that my PCI Express device should really be a master and do =
its own transfer.  But that's not an option in the near term.  I'm =
trying to use DMA to try to get higher-performing burst transfers on the =
PCI Express interface (as compared to the quite-slow CPU-based memcpy =
I'm using now).
=20
Thanks for your help.
=20
John Burr
=20
=20
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help