diff options
author | Wendy Liang <wendy.liang@xilinx.com> | 2017-04-07 14:58:36 -0700 |
---|---|---|
committer | Michal Simek <michal.simek@xilinx.com> | 2017-05-12 10:06:21 +0200 |
commit | cbcd842816154b66adf853e5aead68c5e23267f2 (patch) | |
tree | b5f773d7ec63a7eb04574b81fe0f40531a46891b | |
parent | 43566342673a2fac2636909a5d3f8ab7389916d6 (diff) | |
download | linux-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.c | 9 |
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); } |