drm/i915: Suppress oom warning for shmemfs object allocation failure
authorChris Wilson <chris@chris-wilson.co.uk>
Wed, 27 Jul 2022 17:40:23 +0000 (19:40 +0200)
committerMatthew Auld <matthew.auld@intel.com>
Thu, 28 Jul 2022 10:14:38 +0000 (11:14 +0100)
We report object allocation failures to userspace with ENOMEM, yet we
still show the memory warning after failing to shrink device allocated
pages. While this warning is similar to other system page allocation
failures, it is superfluous to the ENOMEM provided directly to
userspace.

v2: Add NOWARN in few more places from where we might return
    ENOMEM to userspace.

Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/4936
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Co-developed-by: Nirmoy Das <nirmoy.das@intel.com>
Signed-off-by: Nirmoy Das <nirmoy.das@intel.com>
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220727174023.16766-1-nirmoy.das@intel.com
drivers/gpu/drm/i915/gem/i915_gem_shmem.c

index 955844f191935de19d875b501dcd46a12088459c..6a80ad8097bb40e08f0a580b30b76a2081f8e7e9 100644 (file)
@@ -75,7 +75,7 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
        if (size > resource_size(&mr->region))
                return -ENOMEM;
 
-       if (sg_alloc_table(st, page_count, GFP_KERNEL))
+       if (sg_alloc_table(st, page_count, GFP_KERNEL | __GFP_NOWARN))
                return -ENOMEM;
 
        /*
@@ -137,7 +137,7 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st,
                                 * trigger the out-of-memory killer and for
                                 * this we want __GFP_RETRY_MAYFAIL.
                                 */
-                               gfp |= __GFP_RETRY_MAYFAIL;
+                               gfp |= __GFP_RETRY_MAYFAIL | __GFP_NOWARN;
                        }
                } while (1);
 
@@ -209,7 +209,7 @@ static int shmem_get_pages(struct drm_i915_gem_object *obj)
        GEM_BUG_ON(obj->write_domain & I915_GEM_GPU_DOMAINS);
 
 rebuild_st:
-       st = kmalloc(sizeof(*st), GFP_KERNEL);
+       st = kmalloc(sizeof(*st), GFP_KERNEL | __GFP_NOWARN);
        if (!st)
                return -ENOMEM;