[OPAE] IOMMU in Xeon+FPGA and the perception of memory by OPAE apps

Furkan Turan <Furkan.Turan at esat.kuleuven.be> Fri, 16 Feb 2018 16:12:22 +0100
Newsgroups dev.linux.lists.opae
Message-ID <[email protected]>
--===============8852988726349757895==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable

Hello Dears,

I would like to consult on you about the memory view of AFUs.

In OPAE, fpgaGetIOAddress is declared to get IO address, which is =

returned as updating the ioaddr parameter passed to it. A variable for =

this parameter in one example code is name as buf_pa, as it will return =

the IO address for the buffer and that will be the physical address =

"pa". However, in some other examples, e.g. hello_fpga.c, the same =

variable is names as iova which basically stands for IO virtual address.

As far as I remember the presentation in FPL2017, it was mentioned that =

there is no IOMMU right now; therefore, iova and physical address should =

be same things. However, the opae.github.io explains the functions =

referring to IOMMU, so maybe Intel has already introduced it. In that =

case, AFUs should not work with physical addresses, but indeed have =

virtual addresses which will be translated to physical by the IOMMU.

I would like to consult on you about this:
* Is IOMMU available or not?
* If there is IOMMU, then how the page tables are maintained: by OS, or =

by OPAE drivers?
* Can this provide the same virtual addresses on both SW and HW side in =

the future, making the fpgaGetIOAddress function obsolete?
* May the IOMMU allow getting rid of the contagious memory space =

allocation requirement for the buffers in the future?

Kind Regards,

Furkan Turan

--===============8852988726349757895==--