aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSuman Anna <s-anna@ti.com>2013-07-01 10:01:56 -0400
committerOhad Ben-Cohen <ohad@wizery.com>2013-07-01 10:01:56 -0400
commitb6356a013a0933e42556c2def806f06caf459acf (patch)
tree6ebbecfc88e67ca1058e20d2a6c5c34d72db11d5
parente4760363ea14b7b707ba68ab780c8ecf98a84c15 (diff)
remoteproc: free carveout memories only after unmapping them
It is not preferable to have the allocated pages for carveout memories freed before they are unmapped. The code that deals with the cleanup of carveout memories is therefore moved after the corresponding mapping entries were cleaned up. This is mostly a no-op since the remote processors are already stopped when the cleanup function is called, but this will make the cleanup code follow the exact reverse path of allocation. Signed-off-by: Suman Anna <s-anna@ti.com> Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
-rw-r--r--drivers/remoteproc/remoteproc_core.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c
index 7e33536b5c2b..9fef20022ab4 100644
--- a/drivers/remoteproc/remoteproc_core.c
+++ b/drivers/remoteproc/remoteproc_core.c
@@ -762,13 +762,6 @@ static void rproc_resource_cleanup(struct rproc *rproc)
762 kfree(entry); 762 kfree(entry);
763 } 763 }
764 764
765 /* clean up carveout allocations */
766 list_for_each_entry_safe(entry, tmp, &rproc->carveouts, node) {
767 dma_free_coherent(dev->parent, entry->len, entry->va, entry->dma);
768 list_del(&entry->node);
769 kfree(entry);
770 }
771
772 /* clean up iommu mapping entries */ 765 /* clean up iommu mapping entries */
773 list_for_each_entry_safe(entry, tmp, &rproc->mappings, node) { 766 list_for_each_entry_safe(entry, tmp, &rproc->mappings, node) {
774 size_t unmapped; 767 size_t unmapped;
@@ -783,6 +776,13 @@ static void rproc_resource_cleanup(struct rproc *rproc)
783 list_del(&entry->node); 776 list_del(&entry->node);
784 kfree(entry); 777 kfree(entry);
785 } 778 }
779
780 /* clean up carveout allocations */
781 list_for_each_entry_safe(entry, tmp, &rproc->carveouts, node) {
782 dma_free_coherent(dev->parent, entry->len, entry->va, entry->dma);
783 list_del(&entry->node);
784 kfree(entry);
785 }
786} 786}
787 787
788/* 788/*