Mesa (master): panfrost: Keep cached BOs mmap'd
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu May 21 20:05:36 UTC 2020
Module: Mesa
Branch: master
Commit: 794c239a990e08b5a42d42607e9c5e5b0921390c
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=794c239a990e08b5a42d42607e9c5e5b0921390c
Author: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Date: Tue May 19 15:06:52 2020 -0400
panfrost: Keep cached BOs mmap'd
It doesn't make sense to munmap/mmap repeatedly; they're mapped GPU-side
anyway. So just munmap on free, which will happen in low-mem regardless.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5124>
---
src/panfrost/encoder/pan_bo.c | 22 +++++-----------------
1 file changed, 5 insertions(+), 17 deletions(-)
diff --git a/src/panfrost/encoder/pan_bo.c b/src/panfrost/encoder/pan_bo.c
index 32fc84e1363..a663d35d5b8 100644
--- a/src/panfrost/encoder/pan_bo.c
+++ b/src/panfrost/encoder/pan_bo.c
@@ -90,6 +90,11 @@ panfrost_bo_free(struct panfrost_bo *bo)
struct drm_gem_close gem_close = { .handle = bo->gem_handle };
int ret;
+ if (bo->cpu && os_munmap((void *) (uintptr_t)bo->cpu, bo->size)) {
+ perror("munmap");
+ abort();
+ }
+
ret = drmIoctl(bo->dev->fd, DRM_IOCTL_GEM_CLOSE, &gem_close);
if (ret) {
fprintf(stderr, "DRM_IOCTL_GEM_CLOSE failed: %m\n");
@@ -344,20 +349,6 @@ panfrost_bo_mmap(struct panfrost_bo *bo)
}
}
-static void
-panfrost_bo_munmap(struct panfrost_bo *bo)
-{
- if (!bo->cpu)
- return;
-
- if (os_munmap((void *) (uintptr_t)bo->cpu, bo->size)) {
- perror("munmap");
- abort();
- }
-
- bo->cpu = NULL;
-}
-
struct panfrost_bo *
panfrost_bo_create(struct panfrost_device *dev, size_t size,
uint32_t flags)
@@ -436,9 +427,6 @@ panfrost_bo_unreference(struct panfrost_bo *bo)
if (p_atomic_read(&bo->refcnt) == 0) {
_mesa_set_remove_key(bo->dev->active_bos, bo);
- /* When the reference count goes to zero, we need to cleanup */
- panfrost_bo_munmap(bo);
-
/* Rather than freeing the BO now, we'll cache the BO for later
* allocations if we're allowed to.
*/
More information about the mesa-commit
mailing list