summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2015-06-17 15:37:54 -0700
committerEric Anholt <eric@anholt.net>2015-06-17 17:20:26 -0700
commitd2240a43f12494484b893eda8d607b036448a3fb (patch)
treeb5834c0f4a23ff5f33e88694de6ed81d84eeed71
parentfefaa64b6faf8bd7bac610758cefe3c405962fe1 (diff)
downloadlinux-d2240a43f12494484b893eda8d607b036448a3fb.tar.gz
drm/vc4: Clean up BO allocation from the cache a bit.
Signed-off-by: Eric Anholt <eric@anholt.net>
-rw-r--r--drivers/gpu/drm/vc4/vc4_bo.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/gpu/drm/vc4/vc4_bo.c b/drivers/gpu/drm/vc4/vc4_bo.c
index 26817bfe71b4..b6169d3a93c1 100644
--- a/drivers/gpu/drm/vc4/vc4_bo.c
+++ b/drivers/gpu/drm/vc4/vc4_bo.c
@@ -124,7 +124,6 @@ vc4_bo_create(struct drm_device *dev, size_t unaligned_size)
struct vc4_dev *vc4 = to_vc4_dev(dev);
uint32_t size = roundup(unaligned_size, PAGE_SIZE);
uint32_t page_index = bo_page_index(size);
- struct vc4_bo *bo = NULL;
struct drm_gem_cma_object *cma_obj;
if (size == 0)
@@ -133,15 +132,14 @@ vc4_bo_create(struct drm_device *dev, size_t unaligned_size)
/* First, try to get a vc4_bo from the kernel BO cache. */
if (vc4->bo_cache.size_list_size > page_index) {
if (!list_empty(&vc4->bo_cache.size_list[page_index])) {
- bo = list_first_entry(&vc4->bo_cache.size_list[page_index],
- struct vc4_bo, size_head);
+ struct vc4_bo *bo =
+ list_first_entry(&vc4->bo_cache.size_list[page_index],
+ struct vc4_bo, size_head);
vc4_bo_remove_from_cache(bo);
+ kref_init(&bo->base.base.refcount);
+ return bo;
}
}
- if (bo) {
- kref_init(&bo->base.base.refcount);
- return bo;
- }
/* Otherwise, make a new BO. */
cma_obj = drm_gem_cma_create(dev, size);