1 Reply Latest reply on Oct 13, 2008 8:41 PM by devcentral

    IOMMU for PCIe mapping across different processor

    arv
      IOMMU for PCIe mapping across different processors

      Hi, I am new to this forum and am not sure if this is the correct place for this question, so please let me know. I have a question about the potential use of the IOMMU to map addresses in memory mapped PCIe regions. The scenarion that I have is that we have a custom board, which connects 2 PCs over a PCIe bridge, which need to share a common PCIe device. What I would like to do is to map the address memory of one of the machines into the other using the IOMMU. So that the address that is generated by one of the PCIe cards can be mapped into the memory space of the other processor. So from the device's point of view it generates a read/write request to access memory using the (virtual) address of the other PC. Is it possible to map this address to an other address to another memory mapped address on the local machine, which needs to go back out on the PCIe bridge. PCIe Device -->IOMMU--> PCIe Bridge. Basially, if the translated address from the IOMMU is mapped to some memory mapped space, will the IOMMU pass the request to the appropriate device/memory? Thanks.
        • IOMMU for PCIe mapping across different processor
          Hi arv,

          Here's the response from one of our engineers:

          I am not sure I understand your setup. In particular, it is not clear what you meant by "custom board, which connects 2 PCs over a PCIe bridge, which need to share a common PCIe device."

          If you are thinking of building a system that forwards memory accesses from one node (PC) to another then IOMMU really doesn't add much conceptually, it just allows for more flexibility and possibly improves performance. It is only in play on the receiving end, when your PCI packet is about to enter HyperTransport "domain." All IOMMU does is it remaps (physical) memory address that the PCI packet originally had to another address. In principle, if you programmed your PCI device appropriately, you wouldn't need IOMMU.

          I am simplifying a bit here but this is a general idea.

          Thanks.