All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [mlankhorst:locking-rework 30/30] drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:94:1: error: conflicting types for 'i915_gem_shrink'
Date: Mon, 13 Jul 2020 09:53:20 +0800	[thread overview]
Message-ID: <202007130918.60UEunJS%lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 24334 bytes --]

tree:   git://people.freedesktop.org/~mlankhorst/linux locking-rework
head:   df835d9d9fee30c2d4584242c64c8b32eae0d0a4
commit: df835d9d9fee30c2d4584242c64c8b32eae0d0a4 [30/30] how to implement eviction
config: x86_64-randconfig-c002-20200710 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-14) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All error/warnings (new ones prefixed by >>):

   drivers/gpu/drm/i915/gem/i915_gem_lmem.c: In function 'i915_gem_object_get_pages_phys':
>> drivers/gpu/drm/i915/gem/i915_gem_lmem.c:23:1: warning: no return statement in function returning non-void [-Wreturn-type]
      23 | }
         | ^
   At top level:
   drivers/gpu/drm/i915/gem/i915_gem_lmem.c:12:12: warning: 'i915_gem_object_get_pages_phys' defined but not used [-Wunused-function]
      12 | static int i915_gem_object_get_pages_phys(struct drm_i915_gem_object *obj,
         |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
>> drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:94:1: error: conflicting types for 'i915_gem_shrink'
      94 | i915_gem_shrink(struct i915_gem_ww_ctx *ww,
         | ^~~~~~~~~~~~~~~
   In file included from drivers/gpu/drm/i915/i915_drv.h:77,
                    from drivers/gpu/drm/i915/display/intel_display_types.h:45,
                    from drivers/gpu/drm/i915/i915_trace.h:11,
                    from drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:16:
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.h:15:15: note: previous declaration of 'i915_gem_shrink' was here
      15 | unsigned long i915_gem_shrink(struct drm_i915_private *i915,
         |               ^~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c: In function 'i915_gem_shrink':
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:213:27: error: 'struct <anonymous>' has no member named 'lock'; did you mean 'blocks'?
     213 |     mutex_unlock(&obj->mm.lock);
         |                           ^~~~
         |                           blocks
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c: In function 'i915_gem_shrinker_scan':
>> drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:304:26: error: passing argument 1 of 'i915_gem_shrink' from incompatible pointer type [-Werror=incompatible-pointer-types]
     304 |  freed = i915_gem_shrink(i915,
         |                          ^~~~
         |                          |
         |                          struct drm_i915_private *
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:94:41: note: expected 'struct i915_gem_ww_ctx *' but argument is of type 'struct drm_i915_private *'
      94 | i915_gem_shrink(struct i915_gem_ww_ctx *ww,
         |                 ~~~~~~~~~~~~~~~~~~~~~~~~^~
>> drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:305:7: warning: passing argument 2 of 'i915_gem_shrink' makes pointer from integer without a cast [-Wint-conversion]
     305 |     sc->nr_to_scan,
         |     ~~^~~~~~~~~~~~
         |       |
         |       long unsigned int
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:95:28: note: expected 'struct drm_i915_private *' but argument is of type 'long unsigned int'
      95 |   struct drm_i915_private *i915,
         |   ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
>> drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:306:5: warning: passing argument 3 of 'i915_gem_shrink' makes integer from pointer without a cast [-Wint-conversion]
     306 |     &sc->nr_scanned,
         |     ^~~~~~~~~~~~~~~
         |     |
         |     long unsigned int *
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:96:17: note: expected 'long unsigned int' but argument is of type 'long unsigned int *'
      96 |   unsigned long target,
         |   ~~~~~~~~~~~~~~^~~~~~
   In file included from include/linux/bits.h:6,
                    from include/linux/bitops.h:5,
                    from include/linux/kernel.h:12,
                    from include/linux/list.h:9,
                    from include/linux/rculist.h:10,
                    from include/linux/sched/signal.h:5,
                    from include/linux/oom.h:6,
                    from drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:7:
>> include/vdso/bits.h:7:19: warning: passing argument 4 of 'i915_gem_shrink' makes pointer from integer without a cast [-Wint-conversion]
       7 | #define BIT(nr)   (UL(1) << (nr))
         |                   ^
         |                   |
         |                   long unsigned int
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.h:20:27: note: in expansion of macro 'BIT'
      20 | #define I915_SHRINK_BOUND BIT(1)
         |                           ^~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:307:5: note: in expansion of macro 'I915_SHRINK_BOUND'
     307 |     I915_SHRINK_BOUND |
         |     ^~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:97:18: note: expected 'long unsigned int *' but argument is of type 'long unsigned int'
      97 |   unsigned long *nr_scanned,
         |   ~~~~~~~~~~~~~~~^~~~~~~~~~
>> drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:304:10: error: too few arguments to function 'i915_gem_shrink'
     304 |  freed = i915_gem_shrink(i915,
         |          ^~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:94:1: note: declared here
      94 | i915_gem_shrink(struct i915_gem_ww_ctx *ww,
         | ^~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:313:29: error: passing argument 1 of 'i915_gem_shrink' from incompatible pointer type [-Werror=incompatible-pointer-types]
     313 |    freed += i915_gem_shrink(i915,
         |                             ^~~~
         |                             |
         |                             struct drm_i915_private *
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:94:41: note: expected 'struct i915_gem_ww_ctx *' but argument is of type 'struct drm_i915_private *'
      94 | i915_gem_shrink(struct i915_gem_ww_ctx *ww,
         |                 ~~~~~~~~~~~~~~~~~~~~~~~~^~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:314:23: warning: passing argument 2 of 'i915_gem_shrink' makes pointer from integer without a cast [-Wint-conversion]
     314 |        sc->nr_to_scan - sc->nr_scanned,
         |        ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
         |                       |
         |                       long unsigned int
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:95:28: note: expected 'struct drm_i915_private *' but argument is of type 'long unsigned int'
      95 |   struct drm_i915_private *i915,
         |   ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:315:8: warning: passing argument 3 of 'i915_gem_shrink' makes integer from pointer without a cast [-Wint-conversion]
     315 |        &sc->nr_scanned,
         |        ^~~~~~~~~~~~~~~
         |        |
         |        long unsigned int *
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:96:17: note: expected 'long unsigned int' but argument is of type 'long unsigned int *'
      96 |   unsigned long target,
         |   ~~~~~~~~~~~~~~^~~~~~
   In file included from include/linux/bits.h:6,
                    from include/linux/bitops.h:5,
                    from include/linux/kernel.h:12,
                    from include/linux/list.h:9,
                    from include/linux/rculist.h:10,
                    from include/linux/sched/signal.h:5,
                    from include/linux/oom.h:6,
                    from drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:7:
>> include/vdso/bits.h:7:19: warning: passing argument 4 of 'i915_gem_shrink' makes pointer from integer without a cast [-Wint-conversion]
       7 | #define BIT(nr)   (UL(1) << (nr))
         |                   ^
         |                   |
         |                   long unsigned int
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.h:21:28: note: in expansion of macro 'BIT'
      21 | #define I915_SHRINK_ACTIVE BIT(2)
         |                            ^~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:316:8: note: in expansion of macro 'I915_SHRINK_ACTIVE'
     316 |        I915_SHRINK_ACTIVE |
         |        ^~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:97:18: note: expected 'long unsigned int *' but argument is of type 'long unsigned int'
      97 |   unsigned long *nr_scanned,
         |   ~~~~~~~~~~~~~~~^~~~~~~~~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:313:13: error: too few arguments to function 'i915_gem_shrink'
     313 |    freed += i915_gem_shrink(i915,
         |             ^~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:94:1: note: declared here
      94 | i915_gem_shrink(struct i915_gem_ww_ctx *ww,
         | ^~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c: In function 'i915_gem_shrinker_oom':
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:338:34: error: passing argument 1 of 'i915_gem_shrink' from incompatible pointer type [-Werror=incompatible-pointer-types]
     338 |   freed_pages += i915_gem_shrink(i915, -1UL, NULL,
         |                                  ^~~~
         |                                  |
         |                                  struct drm_i915_private *
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:94:41: note: expected 'struct i915_gem_ww_ctx *' but argument is of type 'struct drm_i915_private *'
      94 | i915_gem_shrink(struct i915_gem_ww_ctx *ww,
         |                 ~~~~~~~~~~~~~~~~~~~~~~~~^~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:338:40: warning: passing argument 2 of 'i915_gem_shrink' makes pointer from integer without a cast [-Wint-conversion]
     338 |   freed_pages += i915_gem_shrink(i915, -1UL, NULL,
         |                                        ^~~~
         |                                        |
         |                                        long unsigned int
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:95:28: note: expected 'struct drm_i915_private *' but argument is of type 'long unsigned int'
      95 |   struct drm_i915_private *i915,
         |   ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
   In file included from include/uapi/linux/posix_types.h:5,
                    from include/uapi/linux/types.h:14,
                    from include/linux/types.h:6,
                    from include/linux/list.h:5,
                    from include/linux/rculist.h:10,
                    from include/linux/sched/signal.h:5,
                    from include/linux/oom.h:6,
                    from drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:7:
>> include/linux/stddef.h:8:14: warning: passing argument 3 of 'i915_gem_shrink' makes integer from pointer without a cast [-Wint-conversion]
       8 | #define NULL ((void *)0)
         |              ^~~~~~~~~~~
         |              |
         |              void *
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:338:46: note: in expansion of macro 'NULL'
     338 |   freed_pages += i915_gem_shrink(i915, -1UL, NULL,
         |                                              ^~~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:96:17: note: expected 'long unsigned int' but argument is of type 'void *'
      96 |   unsigned long target,
         |   ~~~~~~~~~~~~~~^~~~~~
   In file included from include/linux/bits.h:6,
                    from include/linux/bitops.h:5,
                    from include/linux/kernel.h:12,
                    from include/linux/list.h:9,
                    from include/linux/rculist.h:10,
                    from include/linux/sched/signal.h:5,
                    from include/linux/oom.h:6,
                    from drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:7:
>> include/vdso/bits.h:7:19: warning: passing argument 4 of 'i915_gem_shrink' makes pointer from integer without a cast [-Wint-conversion]
       7 | #define BIT(nr)   (UL(1) << (nr))
         |                   ^
         |                   |
         |                   long unsigned int
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.h:20:27: note: in expansion of macro 'BIT'
      20 | #define I915_SHRINK_BOUND BIT(1)
         |                           ^~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:339:13: note: in expansion of macro 'I915_SHRINK_BOUND'
     339 |             I915_SHRINK_BOUND |
         |             ^~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:97:18: note: expected 'long unsigned int *' but argument is of type 'long unsigned int'
      97 |   unsigned long *nr_scanned,
         |   ~~~~~~~~~~~~~~~^~~~~~~~~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:338:18: error: too few arguments to function 'i915_gem_shrink'
     338 |   freed_pages += i915_gem_shrink(i915, -1UL, NULL,
         |                  ^~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:94:1: note: declared here
      94 | i915_gem_shrink(struct i915_gem_ww_ctx *ww,
         | ^~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c: In function 'i915_gem_shrinker_vmap':
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:376:34: error: passing argument 1 of 'i915_gem_shrink' from incompatible pointer type [-Werror=incompatible-pointer-types]
     376 |   freed_pages += i915_gem_shrink(i915, -1UL, NULL,
         |                                  ^~~~
         |                                  |
         |                                  struct drm_i915_private *
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:94:41: note: expected 'struct i915_gem_ww_ctx *' but argument is of type 'struct drm_i915_private *'
      94 | i915_gem_shrink(struct i915_gem_ww_ctx *ww,
         |                 ~~~~~~~~~~~~~~~~~~~~~~~~^~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:376:40: warning: passing argument 2 of 'i915_gem_shrink' makes pointer from integer without a cast [-Wint-conversion]
     376 |   freed_pages += i915_gem_shrink(i915, -1UL, NULL,
         |                                        ^~~~
         |                                        |
         |                                        long unsigned int
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:95:28: note: expected 'struct drm_i915_private *' but argument is of type 'long unsigned int'
      95 |   struct drm_i915_private *i915,
         |   ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
   In file included from include/uapi/linux/posix_types.h:5,
                    from include/uapi/linux/types.h:14,
                    from include/linux/types.h:6,
                    from include/linux/list.h:5,
                    from include/linux/rculist.h:10,
                    from include/linux/sched/signal.h:5,
                    from include/linux/oom.h:6,
                    from drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:7:
>> include/linux/stddef.h:8:14: warning: passing argument 3 of 'i915_gem_shrink' makes integer from pointer without a cast [-Wint-conversion]
       8 | #define NULL ((void *)0)
         |              ^~~~~~~~~~~
         |              |
         |              void *
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:376:46: note: in expansion of macro 'NULL'
     376 |   freed_pages += i915_gem_shrink(i915, -1UL, NULL,
         |                                              ^~~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:96:17: note: expected 'long unsigned int' but argument is of type 'void *'
      96 |   unsigned long target,
         |   ~~~~~~~~~~~~~~^~~~~~
   In file included from include/linux/bits.h:6,
                    from include/linux/bitops.h:5,
                    from include/linux/kernel.h:12,
                    from include/linux/list.h:9,
                    from include/linux/rculist.h:10,
                    from include/linux/sched/signal.h:5,
                    from include/linux/oom.h:6,
                    from drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:7:
>> include/vdso/bits.h:7:19: warning: passing argument 4 of 'i915_gem_shrink' makes pointer from integer without a cast [-Wint-conversion]
       7 | #define BIT(nr)   (UL(1) << (nr))
         |                   ^
         |                   |
         |                   long unsigned int
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.h:20:27: note: in expansion of macro 'BIT'
      20 | #define I915_SHRINK_BOUND BIT(1)
         |                           ^~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:377:13: note: in expansion of macro 'I915_SHRINK_BOUND'
     377 |             I915_SHRINK_BOUND |
         |             ^~~~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:97:18: note: expected 'long unsigned int *' but argument is of type 'long unsigned int'
      97 |   unsigned long *nr_scanned,
         |   ~~~~~~~~~~~~~~~^~~~~~~~~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:376:18: error: too few arguments to function 'i915_gem_shrink'
     376 |   freed_pages += i915_gem_shrink(i915, -1UL, NULL,
         |                  ^~~~~~~~~~~~~~~
   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:94:1: note: declared here
      94 | i915_gem_shrink(struct i915_gem_ww_ctx *ww,
         | ^~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +/i915_gem_shrink +94 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c

    67	
    68	/**
    69	 * i915_gem_shrink - Shrink buffer object caches
    70	 * @i915: i915 device
    71	 * @target: amount of memory to make available, in pages
    72	 * @nr_scanned: optional output for number of pages scanned (incremental)
    73	 * @shrink: control flags for selecting cache types
    74	 *
    75	 * This function is the main interface to the shrinker. It will try to release
    76	 * up to @target pages of main memory backing storage from buffer objects.
    77	 * Selection of the specific caches can be done with @flags. This is e.g. useful
    78	 * when purgeable objects should be removed from caches preferentially.
    79	 *
    80	 * Note that it's not guaranteed that released amount is actually available as
    81	 * free system memory - the pages might still be in-used to due to other reasons
    82	 * (like cpu mmaps) or the mm core has reused them before we could grab them.
    83	 * Therefore code that needs to explicitly shrink buffer objects caches (e.g. to
    84	 * avoid deadlocks in memory reclaim) must fall back to i915_gem_shrink_all().
    85	 *
    86	 * Also note that any kind of pinning (both per-vma address space pins and
    87	 * backing storage pins@the buffer object level) result in the shrinker code
    88	 * having to skip the object.
    89	 *
    90	 * Returns:
    91	 * The number of pages of backing storage actually released.
    92	 */
    93	unsigned long
  > 94	i915_gem_shrink(struct i915_gem_ww_ctx *ww,
    95			struct drm_i915_private *i915,
    96			unsigned long target,
    97			unsigned long *nr_scanned,
    98			unsigned int shrink)
    99	{
   100		const struct {
   101			struct list_head *list;
   102			unsigned int bit;
   103		} phases[] = {
   104			{ &i915->mm.purge_list, ~0u },
   105			{
   106				&i915->mm.shrink_list,
   107				I915_SHRINK_BOUND | I915_SHRINK_UNBOUND
   108			},
   109			{ NULL, 0 },
   110		}, *phase;
   111		intel_wakeref_t wakeref = 0;
   112		unsigned long count = 0;
   113		unsigned long scanned = 0;
   114		int err;
   115	
   116		/*
   117		 * When shrinking the active list, we should also consider active
   118		 * contexts. Active contexts are pinned until they are retired, and
   119		 * so can not be simply unbound to retire and unpin their pages. To
   120		 * shrink the contexts, we must wait until the gpu is idle and
   121		 * completed its switch to the kernel context. In short, we do
   122		 * not have a good mechanism for idling a specific context.
   123		 */
   124	
   125		trace_i915_gem_shrink(i915, target, shrink);
   126	
   127		/*
   128		 * Unbinding of objects will require HW access; Let us not wake the
   129		 * device just to recover a little memory. If absolutely necessary,
   130		 * we will force the wake during oom-notifier.
   131		 */
   132		if (shrink & I915_SHRINK_BOUND) {
   133			wakeref = intel_runtime_pm_get_if_in_use(&i915->runtime_pm);
   134			if (!wakeref)
   135				shrink &= ~I915_SHRINK_BOUND;
   136		}
   137	
   138		/*
   139		 * As we may completely rewrite the (un)bound list whilst unbinding
   140		 * (due to retiring requests) we have to strictly process only
   141		 * one element of the list at the time, and recheck the list
   142		 * on every iteration.
   143		 *
   144		 * In particular, we must hold a reference whilst removing the
   145		 * object as we may end up waiting for and/or retiring the objects.
   146		 * This might release the final reference (held by the active list)
   147		 * and result in the object being freed from under us. This is
   148		 * similar to the precautions the eviction code must take whilst
   149		 * removing objects.
   150		 *
   151		 * Also note that although these lists do not hold a reference to
   152		 * the object we can safely grab one here: The final object
   153		 * unreferencing and the bound_list are both protected by the
   154		 * dev->struct_mutex and so we won't ever be able to observe an
   155		 * object on the bound_list with a reference count equals 0.
   156		 */
   157		for (phase = phases; phase->list; phase++) {
   158			struct list_head still_in_list;
   159			struct drm_i915_gem_object *obj;
   160			unsigned long flags;
   161	
   162			if ((shrink & phase->bit) == 0)
   163				continue;
   164	
   165			INIT_LIST_HEAD(&still_in_list);
   166	
   167			/*
   168			 * We serialize our access to unreferenced objects through
   169			 * the use of the struct_mutex. While the objects are not
   170			 * yet freed (due to RCU then a workqueue) we still want
   171			 * to be able to shrink their pages, so they remain on
   172			 * the unbound/bound list until actually freed.
   173			 */
   174			spin_lock_irqsave(&i915->mm.obj_lock, flags);
   175			while (count < target &&
   176			       (obj = list_first_entry_or_null(phase->list,
   177							       typeof(*obj),
   178							       mm.link))) {
   179				list_move_tail(&obj->mm.link, &still_in_list);
   180	
   181				if (shrink & I915_SHRINK_VMAPS &&
   182				    !is_vmalloc_addr(obj->mm.mapping))
   183					continue;
   184	
   185				if (!(shrink & I915_SHRINK_ACTIVE) &&
   186				    i915_gem_object_is_framebuffer(obj))
   187					continue;
   188	
   189				if (!can_release_pages(obj))
   190					continue;
   191	
   192				if (!kref_get_unless_zero(&obj->base.refcount))
   193					continue;
   194	
   195				spin_unlock_irqrestore(&i915->mm.obj_lock, flags);
   196	
   197				err = 0;
   198				if (unsafe_drop_pages(obj, shrink)) {
   199					/* May arrive from get_pages on another bo */
   200					if (!ww) {
   201						if (!i915_gem_object_trylock(obj))
   202							goto skip;
   203					} else {
   204						err = i915_gem_object_lock(obj, ww);
   205						if (err)
   206							goto skip;
   207					}
   208	
   209					if (!i915_gem_object_has_pages(obj)) {
   210						try_to_writeback(obj, shrink);
   211						count += obj->base.size >> PAGE_SHIFT;
   212					}
 > 213					mutex_unlock(&obj->mm.lock);
   214				}
   215	
   216				scanned += obj->base.size >> PAGE_SHIFT;
   217	skip:
   218				i915_gem_object_put(obj);
   219	
   220				spin_lock_irqsave(&i915->mm.obj_lock, flags);
   221				if (err)
   222					break;
   223			}
   224			list_splice_tail(&still_in_list, phase->list);
   225			spin_unlock_irqrestore(&i915->mm.obj_lock, flags);
   226			if (err)
   227				return err;
   228		}
   229	
   230		if (shrink & I915_SHRINK_BOUND)
   231			intel_runtime_pm_put(&i915->runtime_pm, wakeref);
   232	
   233		if (nr_scanned)
   234			*nr_scanned += scanned;
   235		return count;
   236	}
   237	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 38780 bytes --]

             reply	other threads:[~2020-07-13  1:53 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-13  1:53 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2020-07-11  5:49 [mlankhorst:locking-rework 30/30] drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:94:1: error: conflicting types for 'i915_gem_shrink' kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202007130918.60UEunJS%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.