remoteproc: configure IOMMU only if device address requested

If there is no IOMMU associate to remote processor device,
remoteproc_core won't be able to satisfy device address requested
in firmware resource table.
Return an error as configuration won't be coherent.

Signed-off-by: Loic Pallardy <loic.pallardy@st.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
This commit is contained in:
Loic Pallardy 2018-07-27 15:14:36 +02:00 committed by Bjorn Andersson
parent bbcda30271
commit 3bc8140b15

View File

@ -657,7 +657,15 @@ static int rproc_handle_carveout(struct rproc *rproc,
* to use the iommu-based DMA API: we expect 'dma' to contain the * to use the iommu-based DMA API: we expect 'dma' to contain the
* physical address in this case. * physical address in this case.
*/ */
if (rproc->domain) {
if (rsc->da != FW_RSC_ADDR_ANY && !rproc->domain) {
dev_err(dev->parent,
"Bad carveout rsc configuration\n");
ret = -ENOMEM;
goto dma_free;
}
if (rsc->da != FW_RSC_ADDR_ANY && rproc->domain) {
mapping = kzalloc(sizeof(*mapping), GFP_KERNEL); mapping = kzalloc(sizeof(*mapping), GFP_KERNEL);
if (!mapping) { if (!mapping) {
ret = -ENOMEM; ret = -ENOMEM;