How to correctly program inbound address translation unit?

Hey everyone,
I have an FPGA connected from PCIe to a Xavier NX. NX is the host, the other device is the endpoint. The scenario is, FPGA initiates a transaction to NX, and I want what is written via PCIe in my memory.

My question is: How to effectively&correctly program iATU, and is this enough for me to achieve my goal? I guess I need to reserve a memory block from device tree, since I want this space not malloc’ed by another process. How to do that? Any leads are appreciated.

At the moment, FPGA burst writes to PCIe memory, and I got lots of SMMU errors on my terminal.
Thanks for your time.

There is no need to touch iATU here. What is needed here is a device driver for the FPGA endpoint. Please have a device driver and that would take care of allocating memory in the host system which can be given to the FPGA endpoint to dump the data into. Since this memory is allocated by the device driver, rest of the system wouldn’t use it.