aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWendy Liang <wendy.liang@xilinx.com>2017-04-07 14:58:36 -0700
committerMichal Simek <michal.simek@xilinx.com>2017-05-12 10:06:21 +0200
commitcbcd842816154b66adf853e5aead68c5e23267f2 (patch)
treeb5f773d7ec63a7eb04574b81fe0f40531a46891b
parent43566342673a2fac2636909a5d3f8ab7389916d6 (diff)
downloadlinux-cbcd842816154b66adf853e5aead68c5e23267f2.tar.gz
remoteproc: resource_cleanup releases DMA declared mem
Release DMA declared memory in rproc_resource_cleanup(). rproc_resource_cleanup() is used to cleanup allocated rproc resource. It will be called in firmware booting error handling. Moving release DMA declared memory there is to make sure the DMA declared memory will be released when it fails to boot the remote. Signed-off-by: Wendy Liang <jliang@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
-rw-r--r--drivers/remoteproc/remoteproc_core.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c
index fdceb45e51105e..064783cf6b32b0 100644
--- a/drivers/remoteproc/remoteproc_core.c
+++ b/drivers/remoteproc/remoteproc_core.c
@@ -868,6 +868,9 @@ static void rproc_resource_cleanup(struct rproc *rproc)
/* clean up remote vdev entries */
list_for_each_entry_safe(rvdev, rvtmp, &rproc->rvdevs, node)
rproc_remove_virtio_dev(rvdev);
+
+ /* Release DMA declared memory */
+ dma_release_declared_memory(dev->parent);
}
/*
@@ -1038,14 +1041,14 @@ static int rproc_fw_boot(struct rproc *rproc, const struct firmware *fw)
if (ret) {
dev_err(dev, "Failed to declare rproc memory resource: %d\n",
ret);
- goto clean_up;
+ goto clean_up_resources;
}
/* look for virtio devices and register them */
ret = rproc_handle_resources(rproc, tablesz, rproc_vdev_handler);
if (ret) {
dev_err(dev, "Failed to handle vdev resources: %d\n", ret);
- goto clean_up;
+ goto clean_up_resources;
}
/* handle fw resources which are required to boot rproc */
@@ -1371,8 +1374,6 @@ void rproc_shutdown(struct rproc *rproc)
dev_info(dev, "stopped remote processor %s\n", rproc->name);
- dma_release_declared_memory(dev->parent);
-
out:
mutex_unlock(&rproc->lock);
}