From da9b549cd15b2f193a1c8b30f96d4106b28ddd30 Mon Sep 17 00:00:00 2001 From: Alex Waterman Date: Mon, 5 Mar 2018 19:03:32 -0800 Subject: gpu: nvgpu: Correctly plumb -EAGAIN from vidmem allocations Userspace can and should retry vidmem allocations if there are pending clears still to be executed by the GPU. But this requires the -EAGAIN to properly propagate back to userspace. Bug 200378648 Change-Id: Ib930711270439843e043d65c2e87b60612a76239 Signed-off-by: Alex Waterman Reviewed-on: https://git-master.nvidia.com/r/1669099 Reviewed-by: svc-mobile-coverity GVS: Gerrit_Virtual_Submit Reviewed-by: Konsta Holtta Reviewed-by: Vijayakumar Subbu Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/linux/vidmem.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'drivers/gpu/nvgpu/common/linux') diff --git a/drivers/gpu/nvgpu/common/linux/vidmem.c b/drivers/gpu/nvgpu/common/linux/vidmem.c index 1d9fea71..684262ba 100644 --- a/drivers/gpu/nvgpu/common/linux/vidmem.c +++ b/drivers/gpu/nvgpu/common/linux/vidmem.c @@ -173,6 +173,8 @@ int nvgpu_vidmem_export_linux(struct gk20a *g, size_t bytes) if (!gk20a_get(g)) return -ENODEV; + vidmem_dbg(g, "Allocating vidmem buf: %zu bytes", bytes); + priv = nvgpu_kzalloc(g, sizeof(*priv)); if (!priv) { err = -ENOMEM; @@ -180,8 +182,8 @@ int nvgpu_vidmem_export_linux(struct gk20a *g, size_t bytes) } buf = nvgpu_vidmem_user_alloc(g, bytes); - if (!buf) { - err = -ENOMEM; + if (IS_ERR(buf)) { + err = PTR_ERR(buf); goto fail; } -- cgit v1.2.2