How to support 3GB pci address?

Trent Piepho tpiepho at freescale.com
Fri Dec 12 20:04:11 EST 2008


On Thu, 11 Dec 2008, Kumar Gala wrote:
> On Dec 11, 2008, at 10:07 PM, Trent Piepho wrote:
>> On Thu, 11 Dec 2008, Kumar Gala wrote:
>> > On Dec 11, 2008, at 6:04 AM, maillist.kernel wrote:
>> > > In the system, the total PCI address needed is about 3GB, so I want to 
>> > > know
>> > > how to support it in linux. mpc8548 has 36-bit real address, and can
>> > > support 32GB PCIE address space, but in linux, there is only 1GB kernel
>> > > space, how to map the 3GB pci address to kernel? Is the  36-bit real
>> > > address only used to support large memory(>4GB) for muti-threads?
>> > 
>> > The 36-bit support is current (in tree) in complete.  Work is in progress 
>> > to
>> > add swiotlb support to PPC which will generically enable what you want to
>> > accomplish.
>> 
>> Don't the ATMU windows in the pcie controller serve as a IOMMU, making 
>> swiotlb
>> unnecessary and wasteful?
>
> Nope.  You have no way to tell when to switch a window as you have no idea 
> when a device might DMA data.

Isn't that what dma_alloc_coherent() and dma_map_single() are for?

It sounded like the original poster was talking about having 3GB of PCI
BARs.  How does swiotlb even enter the picture for that?

>From what I've read about swiotlb, it is a hack that allows one to do DMA
with 32-bit PCI devices on 64-bit systems that lack an IOMMU.  It reserves
a large block of RAM under 32-bits (technically it uses GFP_DMA) and doles
this out to drivers that allocate DMA memory.



More information about the Linuxppc-dev mailing list