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).
 
The AMCC PPC440SPe User's Manual V1.27 chapter 20 on the I20/DMA core indicates 
(among other things):
 
DMA0 features include:
* Any source PLB address to any destination address
* 64-bit addressing
 
These items lead me to think I should be able to do this.  However, section 
20.5.1, "Basic Command Descriptor Block Structure" indicates:
 
"The DMA engine only supports the simple addressing Scatter/Gather List (SGL) 
format defined in I2O (v1.5).  No other SGL formats are supported."
 
>From what I can see from the I20 V1.5 specification, only 32-bit physical 
>addresses are supported in the SGL entry.  
 
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.
 
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".
 
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?
 
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).
 
Thanks for your help.
 
John Burr
 
 
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to