On Dec 12, 2008, at 3:04 AM, Trent Piepho wrote:

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?

Nope.  How would manipulate the PCI ATMU?

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

It wasn't clear how much system memory they wanted. If they can fit their entire memory map for PCI addresses in 4G of address space (this includes all of system DRAM) than they don't need anything special.

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.

correct. It bounce buffers the DMAs to a 32-bit dma'ble region and copies to/from the >32-bit address.

- k
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to