PCI/PCIe iATU

What is iATU?

iATU is internal address translate unit. It translates PCI address to device internal address.

For example, you have a PCI/PCIe card, and you have DDR and SoC on the card. And your card has internal address for the SoC devices and DDR.

And this internal address space if different to the address of PCI domain. the address of PCI domain is assigned by the host when scan your card.

If host want to directly access your card DDR, it needs the iATU on your card to translate the PCI address to your internal address.

PCI address == the address of PCI domain

iATU mapping directions:

iATU can do inbound and outbound mapping.

Inbound mapping is PCI address to internal address.

Outbound mapping is internal address to PCI address.

iATU mapping modes:

On device, iATU supports two mapping modes, address match mode and BAR match mode.

For address match mode: 

PCI address ------mapping------- internal address

For BAR match mode:

BAR number ------mapping------ internal address

Generally speaking, if your card has SoC, the FW on the SoC will configure the iATU mapping with BAR match mode. And don't let host side driver to configure it.

你可能感兴趣的:(linux,PCI,iATU)