From a8d4d71c41ff0158c2026cac5981e39702167da9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Thu, 7 Apr 2016 21:25:10 +0200 Subject: brcm2708: update to latest version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As usual these patches were extracted from the raspberry pi repo: https://github.com/raspberrypi/linux/commits/rpi-4.4.y Signed-off-by: Álvaro Fernández Rojas --- ...urn-an-ERR_PTR-from-BO-creation-instead-o.patch | 137 +++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 target/linux/brcm2708/patches-4.4/0197-drm-vc4-Return-an-ERR_PTR-from-BO-creation-instead-o.patch (limited to 'target/linux/brcm2708/patches-4.4/0197-drm-vc4-Return-an-ERR_PTR-from-BO-creation-instead-o.patch') diff --git a/target/linux/brcm2708/patches-4.4/0197-drm-vc4-Return-an-ERR_PTR-from-BO-creation-instead-o.patch b/target/linux/brcm2708/patches-4.4/0197-drm-vc4-Return-an-ERR_PTR-from-BO-creation-instead-o.patch new file mode 100644 index 0000000000..9043036868 --- /dev/null +++ b/target/linux/brcm2708/patches-4.4/0197-drm-vc4-Return-an-ERR_PTR-from-BO-creation-instead-o.patch @@ -0,0 +1,137 @@ +From d6211c47e6671faf74389dbcbe29454c5997defb Mon Sep 17 00:00:00 2001 +From: Eric Anholt +Date: Mon, 25 Jan 2016 14:13:12 -0800 +Subject: [PATCH 197/232] drm/vc4: Return an ERR_PTR from BO creation instead + of NULL. + +Fixes igt vc4_create_bo/create-bo-0 by returning -EINVAL from the +ioctl instead of -ENOMEM. + +Signed-off-by: Eric Anholt +--- + drivers/gpu/drm/vc4/vc4_bo.c | 23 +++++++++++++---------- + drivers/gpu/drm/vc4/vc4_gem.c | 4 ++-- + drivers/gpu/drm/vc4/vc4_irq.c | 2 +- + drivers/gpu/drm/vc4/vc4_render_cl.c | 4 ++-- + drivers/gpu/drm/vc4/vc4_validate.c | 4 ++-- + 5 files changed, 20 insertions(+), 17 deletions(-) + +--- a/drivers/gpu/drm/vc4/vc4_bo.c ++++ b/drivers/gpu/drm/vc4/vc4_bo.c +@@ -213,10 +213,10 @@ struct vc4_bo *vc4_bo_create(struct drm_ + size_t size = roundup(unaligned_size, PAGE_SIZE); + struct vc4_dev *vc4 = to_vc4_dev(dev); + struct drm_gem_cma_object *cma_obj; +- int pass; ++ int pass, ret; + + if (size == 0) +- return NULL; ++ return ERR_PTR(-EINVAL); + + /* First, try to get a vc4_bo from the kernel BO cache. */ + if (from_cache) { +@@ -247,14 +247,17 @@ struct vc4_bo *vc4_bo_create(struct drm_ + * unreferenced BOs to the cache, and then + * free the cache. + */ +- vc4_wait_for_seqno(dev, vc4->emit_seqno, ~0ull, true); ++ ret = vc4_wait_for_seqno(dev, vc4->emit_seqno, ~0ull, ++ true); ++ if (ret) ++ return ERR_PTR(ret); + vc4_job_handle_completed(vc4); + vc4_bo_cache_purge(dev); + break; + case 3: + DRM_ERROR("Failed to allocate from CMA:\n"); + vc4_bo_stats_dump(vc4); +- return NULL; ++ return ERR_PTR(-ENOMEM); + } + } + +@@ -276,8 +279,8 @@ int vc4_dumb_create(struct drm_file *fil + args->size = args->pitch * args->height; + + bo = vc4_bo_create(dev, args->size, false); +- if (!bo) +- return -ENOMEM; ++ if (IS_ERR(bo)) ++ return PTR_ERR(bo); + + ret = drm_gem_handle_create(file_priv, &bo->base.base, &args->handle); + drm_gem_object_unreference_unlocked(&bo->base.base); +@@ -460,8 +463,8 @@ int vc4_create_bo_ioctl(struct drm_devic + * get zeroed, and that might leak data between users. + */ + bo = vc4_bo_create(dev, args->size, false); +- if (!bo) +- return -ENOMEM; ++ if (IS_ERR(bo)) ++ return PTR_ERR(bo); + + ret = drm_gem_handle_create(file_priv, &bo->base.base, &args->handle); + drm_gem_object_unreference_unlocked(&bo->base.base); +@@ -513,8 +516,8 @@ vc4_create_shader_bo_ioctl(struct drm_de + } + + bo = vc4_bo_create(dev, args->size, true); +- if (!bo) +- return -ENOMEM; ++ if (IS_ERR(bo)) ++ return PTR_ERR(bo); + + ret = copy_from_user(bo->base.vaddr, + (void __user *)(uintptr_t)args->data, +--- a/drivers/gpu/drm/vc4/vc4_gem.c ++++ b/drivers/gpu/drm/vc4/vc4_gem.c +@@ -593,9 +593,9 @@ vc4_get_bcl(struct drm_device *dev, stru + } + + bo = vc4_bo_create(dev, exec_size, true); +- if (!bo) { ++ if (IS_ERR(bo)) { + DRM_ERROR("Couldn't allocate BO for binning\n"); +- ret = PTR_ERR(exec->exec_bo); ++ ret = PTR_ERR(bo); + goto fail; + } + exec->exec_bo = &bo->base; +--- a/drivers/gpu/drm/vc4/vc4_irq.c ++++ b/drivers/gpu/drm/vc4/vc4_irq.c +@@ -57,7 +57,7 @@ vc4_overflow_mem_work(struct work_struct + struct vc4_bo *bo; + + bo = vc4_bo_create(dev, 256 * 1024, true); +- if (!bo) { ++ if (IS_ERR(bo)) { + DRM_ERROR("Couldn't allocate binner overflow mem\n"); + return; + } +--- a/drivers/gpu/drm/vc4/vc4_render_cl.c ++++ b/drivers/gpu/drm/vc4/vc4_render_cl.c +@@ -316,8 +316,8 @@ static int vc4_create_rcl_bo(struct drm_ + size += xtiles * ytiles * loop_body_size; + + setup->rcl = &vc4_bo_create(dev, size, true)->base; +- if (!setup->rcl) +- return -ENOMEM; ++ if (IS_ERR(setup->rcl)) ++ return PTR_ERR(setup->rcl); + list_add_tail(&to_vc4_bo(&setup->rcl->base)->unref_head, + &exec->unref_list); + +--- a/drivers/gpu/drm/vc4/vc4_validate.c ++++ b/drivers/gpu/drm/vc4/vc4_validate.c +@@ -401,8 +401,8 @@ validate_tile_binning_config(VALIDATE_AR + tile_bo = vc4_bo_create(dev, exec->tile_alloc_offset + tile_alloc_size, + true); + exec->tile_bo = &tile_bo->base; +- if (!exec->tile_bo) +- return -ENOMEM; ++ if (IS_ERR(exec->tile_bo)) ++ return PTR_ERR(exec->tile_bo); + list_add_tail(&tile_bo->unref_head, &exec->unref_list); + + /* tile alloc address. */ -- cgit v1.2.3