summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2015-06-17 15:05:57 -0700
committerEric Anholt <eric@anholt.net>2015-06-17 16:53:22 -0700
commit8d102f7a302db39539ce780875f88ea62270818b (patch)
tree4ffe9abc21dfa17aec2910dedeee3727e416837d
parent71a3914556983a1ee9184c1ebccf062ca9c0c416 (diff)
downloadlinux-8d102f7a302db39539ce780875f88ea62270818b.tar.gz
drm/vc4: Allocate the correct size for our bin BO.
The 256k was left over from early bringup. Signed-off-by: Eric Anholt <eric@anholt.net>
-rw-r--r--drivers/gpu/drm/vc4/vc4_bo.c6
-rw-r--r--drivers/gpu/drm/vc4/vc4_gem.c2
2 files changed, 6 insertions, 2 deletions
diff --git a/drivers/gpu/drm/vc4/vc4_bo.c b/drivers/gpu/drm/vc4/vc4_bo.c
index 62e8a0c27a39..26817bfe71b4 100644
--- a/drivers/gpu/drm/vc4/vc4_bo.c
+++ b/drivers/gpu/drm/vc4/vc4_bo.c
@@ -119,13 +119,17 @@ vc4_bo_cache_purge(struct drm_device *dev)
}
struct vc4_bo *
-vc4_bo_create(struct drm_device *dev, size_t size)
+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)
+ return NULL;
+
/* 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])) {
diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c
index bedf53e02e8e..7bb446cc1f40 100644
--- a/drivers/gpu/drm/vc4/vc4_gem.c
+++ b/drivers/gpu/drm/vc4/vc4_gem.c
@@ -407,7 +407,7 @@ vc4_cl_validate(struct drm_device *dev, struct vc4_exec_info *exec)
goto fail;
}
- bo = vc4_bo_create(dev, 256 * 1024);
+ bo = vc4_bo_create(dev, exec_size);
if (!bo) {
DRM_ERROR("Couldn't allocate BO for exec\n");
ret = PTR_ERR(exec->exec_bo);