Hi,
For a long time now, I am trying to upstream support of remoteproc
driver for the APU (AI accelerator) found in MT8183 and MT8365.
There is a blocker that I am not able to address and I need some help to
find a solution. The blocker always related to IOMMU and device address
management.
Let's me give some context.
The APU is an xtensa processor with some instructions set that could be
used for edge AI/ML.
We want use remoteproc to load a firmware and start the processor.
The main issue is that the firmware is not relocatable so we have to
load it at specific address and the APU is behind an IOMMU.
This use case is already managed by remoteproc core.
But, the remoteproc require an unmanaged IOMMU domain to use the IOMMU
which is not supported by the MT8183 / MT8365.
To workaround it, I tried a couple of things:
- From the platform driver I passed to the core the device IOMMU domain
- I updated the platform to use the IOMMU API but this duplicates
remoteproc core
- I tried adding support of unmanaged domain IOMMU
None of these proposals were acceptable for good reasons but now I don't
have much thing to try.
The only thing I have not tried yet is adding a new function to DMA API
that would allow allocating a buffer that would be mapped at a specific
DMA address.
Currently, everything is closed source (the sources, the toolchains,
...) so there is not many thing I could do to make it relocatable.
Someday, I hope that we could use an open source toolchain and firmware
but this will take a lot of time before coming.
I hope the issue I am facing is clear and we will find a solution together.
Thanks,
Alexandre