[PATCH v3] drm/i915/gem: Make i915_gem_shrinker multi-gt aware

kernel test robot lkp at intel.com
Tue Sep 26 03:47:28 UTC 2023


Hi Nirmoy,

kernel test robot noticed the following build errors:

[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on drm-intel/for-linux-next-fixes drm-tip/drm-tip drm/drm-next drm-exynos/exynos-drm-next drm-misc/drm-misc-next linus/master v6.6-rc3 next-20230925]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Nirmoy-Das/drm-i915-gem-Make-i915_gem_shrinker-multi-gt-aware/20230926-020533
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
patch link:    https://lore.kernel.org/r/20230925171048.19245-1-nirmoy.das%40intel.com
patch subject: [PATCH v3] drm/i915/gem: Make i915_gem_shrinker multi-gt aware
config: i386-randconfig-016-20230926 (https://download.01.org/0day-ci/archive/20230926/202309261109.t06eiy08-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-12) 11.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230926/202309261109.t06eiy08-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309261109.t06eiy08-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/gpu/drm/i915/gem/i915_gem_shrinker.c: In function 'i915_gem_shrink':
>> drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:152:12: error: suggest explicit braces to avoid ambiguous 'else' [-Werror=dangling-else]
     152 |         if (shrink & I915_SHRINK_ACTIVE)
         |            ^
   cc1: all warnings being treated as errors


vim +/else +152 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c

2d6692e642e7ca drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2019-04-20   75  
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   76  /**
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   77   * i915_gem_shrink - Shrink buffer object caches
772f7bb75dffd4 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-04-21   78   * @ww: i915 gem ww acquire ctx, or NULL
56fa4bf2b2f084 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-11-23   79   * @i915: i915 device
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   80   * @target: amount of memory to make available, in pages
912d572d63b8cd drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-09-06   81   * @nr_scanned: optional output for number of pages scanned (incremental)
70972f51819a22 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-12   82   * @shrink: control flags for selecting cache types
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   83   *
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   84   * This function is the main interface to the shrinker. It will try to release
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   85   * up to @target pages of main memory backing storage from buffer objects.
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   86   * Selection of the specific caches can be done with @flags. This is e.g. useful
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   87   * when purgeable objects should be removed from caches preferentially.
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   88   *
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   89   * Note that it's not guaranteed that released amount is actually available as
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   90   * free system memory - the pages might still be in-used to due to other reasons
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   91   * (like cpu mmaps) or the mm core has reused them before we could grab them.
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   92   * Therefore code that needs to explicitly shrink buffer objects caches (e.g. to
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   93   * avoid deadlocks in memory reclaim) must fall back to i915_gem_shrink_all().
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   94   *
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   95   * Also note that any kind of pinning (both per-vma address space pins and
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   96   * backing storage pins at the buffer object level) result in the shrinker code
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   97   * having to skip the object.
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   98   *
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18   99   * Returns:
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  100   * The number of pages of backing storage actually released.
eb0b44adc08c0b drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  101   */
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  102  unsigned long
cf41a8f1dc1e47 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-03-23  103  i915_gem_shrink(struct i915_gem_ww_ctx *ww,
cf41a8f1dc1e47 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-03-23  104  		struct drm_i915_private *i915,
912d572d63b8cd drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-09-06  105  		unsigned long target,
912d572d63b8cd drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-09-06  106  		unsigned long *nr_scanned,
a8cff4c8283af3 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-10  107  		unsigned int shrink)
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  108  {
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  109  	const struct {
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  110  		struct list_head *list;
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  111  		unsigned int bit;
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  112  	} phases[] = {
3b4fa9640ccded drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-05-30  113  		{ &i915->mm.purge_list, ~0u },
ecab9be174d98f drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-12  114  		{
ecab9be174d98f drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-12  115  			&i915->mm.shrink_list,
ecab9be174d98f drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-12  116  			I915_SHRINK_BOUND | I915_SHRINK_UNBOUND
ecab9be174d98f drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-12  117  		},
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  118  		{ NULL, 0 },
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  119  	}, *phase;
538ef96b9dae7f drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2019-01-14  120  	intel_wakeref_t wakeref = 0;
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  121  	unsigned long count = 0;
912d572d63b8cd drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-09-06  122  	unsigned long scanned = 0;
3f9a0aec85874f drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Jonathan Cavitt        2023-09-25  123  	int err = 0, i = 0;
3f9a0aec85874f drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Jonathan Cavitt        2023-09-25  124  	struct intel_gt *gt;
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  125  
bc6f80cce9ae7c drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-04-26  126  	/* CHV + VTD workaround use stop_machine(); need to trylock vm->mutex */
bc6f80cce9ae7c drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-04-26  127  	bool trylock_vm = !ww && intel_vm_no_concurrent_access_wa(i915);
bc6f80cce9ae7c drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-04-26  128  
a8cff4c8283af3 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-10  129  	trace_i915_gem_shrink(i915, target, shrink);
3abafa539d2c17 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2015-10-01  130  
178a30c90ac74e drivers/gpu/drm/i915/i915_gem_shrinker.c     Praveen Paneri         2016-05-02  131  	/*
178a30c90ac74e drivers/gpu/drm/i915/i915_gem_shrinker.c     Praveen Paneri         2016-05-02  132  	 * Unbinding of objects will require HW access; Let us not wake the
178a30c90ac74e drivers/gpu/drm/i915/i915_gem_shrinker.c     Praveen Paneri         2016-05-02  133  	 * device just to recover a little memory. If absolutely necessary,
178a30c90ac74e drivers/gpu/drm/i915/i915_gem_shrinker.c     Praveen Paneri         2016-05-02  134  	 * we will force the wake during oom-notifier.
178a30c90ac74e drivers/gpu/drm/i915/i915_gem_shrinker.c     Praveen Paneri         2016-05-02  135  	 */
a8cff4c8283af3 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-10  136  	if (shrink & I915_SHRINK_BOUND) {
d858d5695f3897 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Daniele Ceraolo Spurio 2019-06-13  137  		wakeref = intel_runtime_pm_get_if_in_use(&i915->runtime_pm);
538ef96b9dae7f drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2019-01-14  138  		if (!wakeref)
a8cff4c8283af3 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-10  139  			shrink &= ~I915_SHRINK_BOUND;
538ef96b9dae7f drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2019-01-14  140  	}
178a30c90ac74e drivers/gpu/drm/i915/i915_gem_shrinker.c     Praveen Paneri         2016-05-02  141  
09137e94543761 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2020-07-08  142  	/*
09137e94543761 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2020-07-08  143  	 * When shrinking the active list, we should also consider active
09137e94543761 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2020-07-08  144  	 * contexts. Active contexts are pinned until they are retired, and
09137e94543761 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2020-07-08  145  	 * so can not be simply unbound to retire and unpin their pages. To
09137e94543761 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2020-07-08  146  	 * shrink the contexts, we must wait until the gpu is idle and
09137e94543761 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2020-07-08  147  	 * completed its switch to the kernel context. In short, we do
09137e94543761 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2020-07-08  148  	 * not have a good mechanism for idling a specific context, but
09137e94543761 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2020-07-08  149  	 * what we can do is give them a kick so that we do not keep idle
09137e94543761 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2020-07-08  150  	 * contexts around longer than is necessary.
09137e94543761 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2020-07-08  151  	 */
09137e94543761 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2020-07-08 @152  	if (shrink & I915_SHRINK_ACTIVE)
3f9a0aec85874f drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Jonathan Cavitt        2023-09-25  153  		for_each_gt(gt, i915, i)
09137e94543761 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2020-07-08  154  			/* Retire requests to unpin all idle contexts */
3f9a0aec85874f drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Jonathan Cavitt        2023-09-25  155  			intel_gt_retire_requests(gt);
09137e94543761 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2020-07-08  156  
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  157  	/*
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  158  	 * As we may completely rewrite the (un)bound list whilst unbinding
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  159  	 * (due to retiring requests) we have to strictly process only
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  160  	 * one element of the list at the time, and recheck the list
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  161  	 * on every iteration.
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  162  	 *
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  163  	 * In particular, we must hold a reference whilst removing the
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  164  	 * object as we may end up waiting for and/or retiring the objects.
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  165  	 * This might release the final reference (held by the active list)
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  166  	 * and result in the object being freed from under us. This is
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  167  	 * similar to the precautions the eviction code must take whilst
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  168  	 * removing objects.
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  169  	 *
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  170  	 * Also note that although these lists do not hold a reference to
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  171  	 * the object we can safely grab one here: The final object
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  172  	 * unreferencing and the bound_list are both protected by the
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  173  	 * dev->struct_mutex and so we won't ever be able to observe an
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  174  	 * object on the bound_list with a reference count equals 0.
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  175  	 */
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  176  	for (phase = phases; phase->list; phase++) {
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  177  		struct list_head still_in_list;
2a1d775201081c drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2016-07-26  178  		struct drm_i915_gem_object *obj;
a8cff4c8283af3 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-10  179  		unsigned long flags;
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  180  
a8cff4c8283af3 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-10  181  		if ((shrink & phase->bit) == 0)
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  182  			continue;
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  183  
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  184  		INIT_LIST_HEAD(&still_in_list);
f2123818ffad03 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-10-16  185  
f2123818ffad03 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-10-16  186  		/*
f2123818ffad03 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-10-16  187  		 * We serialize our access to unreferenced objects through
f2123818ffad03 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-10-16  188  		 * the use of the struct_mutex. While the objects are not
f2123818ffad03 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-10-16  189  		 * yet freed (due to RCU then a workqueue) we still want
f2123818ffad03 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-10-16  190  		 * to be able to shrink their pages, so they remain on
f2123818ffad03 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-10-16  191  		 * the unbound/bound list until actually freed.
f2123818ffad03 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-10-16  192  		 */
a8cff4c8283af3 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-10  193  		spin_lock_irqsave(&i915->mm.obj_lock, flags);
2a1d775201081c drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2016-07-26  194  		while (count < target &&
2a1d775201081c drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2016-07-26  195  		       (obj = list_first_entry_or_null(phase->list,
2a1d775201081c drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2016-07-26  196  						       typeof(*obj),
f2123818ffad03 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-10-16  197  						       mm.link))) {
f2123818ffad03 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-10-16  198  			list_move_tail(&obj->mm.link, &still_in_list);
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  199  
a8cff4c8283af3 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-10  200  			if (shrink & I915_SHRINK_VMAPS &&
a4f5ea64f0a818 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2016-10-28  201  			    !is_vmalloc_addr(obj->mm.mapping))
eae2c43b1233f8 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2016-04-08  202  				continue;
eae2c43b1233f8 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2016-04-08  203  
a8cff4c8283af3 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-10  204  			if (!(shrink & I915_SHRINK_ACTIVE) &&
c03467ba40f783 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-07-03  205  			    i915_gem_object_is_framebuffer(obj))
5763ff04dc4ebd drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2015-10-01  206  				continue;
5763ff04dc4ebd drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2015-10-01  207  
c1a415e261aad0 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2015-12-04  208  			if (!can_release_pages(obj))
c1a415e261aad0 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2015-12-04  209  				continue;
c1a415e261aad0 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2015-12-04  210  
0bd6cb6b58f733 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-18  211  			if (!kref_get_unless_zero(&obj->base.refcount))
0bd6cb6b58f733 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-18  212  				continue;
0bd6cb6b58f733 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-18  213  
a8cff4c8283af3 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-10  214  			spin_unlock_irqrestore(&i915->mm.obj_lock, flags);
f2123818ffad03 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-10-16  215  
7b7a119e8546e2 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2016-10-31  216  			/* May arrive from get_pages on another bo */
cf41a8f1dc1e47 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-03-23  217  			if (!ww) {
d8be1357edc891 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-12-16  218  				if (!i915_gem_object_trylock(obj, NULL))
cf41a8f1dc1e47 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-03-23  219  					goto skip;
cf41a8f1dc1e47 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-03-23  220  			} else {
cf41a8f1dc1e47 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-03-23  221  				err = i915_gem_object_lock(obj, ww);
cf41a8f1dc1e47 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-03-23  222  				if (err)
cf41a8f1dc1e47 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-03-23  223  					goto skip;
cf41a8f1dc1e47 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-03-23  224  			}
cf41a8f1dc1e47 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-03-23  225  
e4e80625300390 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-12-16  226  			if (drop_pages(obj, shrink, trylock_vm) &&
e4e80625300390 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-12-16  227  			    !__i915_gem_object_put_pages(obj) &&
e4e80625300390 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-12-16  228  			    !try_to_writeback(obj, shrink))
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  229  				count += obj->base.size >> PAGE_SHIFT;
e4e80625300390 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-12-16  230  
cf41a8f1dc1e47 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-03-23  231  			if (!ww)
cf41a8f1dc1e47 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-03-23  232  				i915_gem_object_unlock(obj);
0bd6cb6b58f733 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-18  233  
4e773c3a8a693e drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-10-13  234  			scanned += obj->base.size >> PAGE_SHIFT;
cf41a8f1dc1e47 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-03-23  235  skip:
0bd6cb6b58f733 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-18  236  			i915_gem_object_put(obj);
f2123818ffad03 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-10-16  237  
a8cff4c8283af3 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-10  238  			spin_lock_irqsave(&i915->mm.obj_lock, flags);
cf41a8f1dc1e47 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-03-23  239  			if (err)
cf41a8f1dc1e47 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-03-23  240  				break;
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  241  		}
535972771d8c99 drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2016-11-01  242  		list_splice_tail(&still_in_list, phase->list);
a8cff4c8283af3 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-10  243  		spin_unlock_irqrestore(&i915->mm.obj_lock, flags);
cf41a8f1dc1e47 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-03-23  244  		if (err)
239f3c2ee18376 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-07-28  245  			break;
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  246  	}
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  247  
a8cff4c8283af3 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Chris Wilson           2019-06-10  248  	if (shrink & I915_SHRINK_BOUND)
d858d5695f3897 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Daniele Ceraolo Spurio 2019-06-13  249  		intel_runtime_pm_put(&i915->runtime_pm, wakeref);
178a30c90ac74e drivers/gpu/drm/i915/i915_gem_shrinker.c     Praveen Paneri         2016-05-02  250  
239f3c2ee18376 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-07-28  251  	if (err)
239f3c2ee18376 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-07-28  252  		return err;
239f3c2ee18376 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c Maarten Lankhorst      2021-07-28  253  
912d572d63b8cd drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-09-06  254  	if (nr_scanned)
912d572d63b8cd drivers/gpu/drm/i915/i915_gem_shrinker.c     Chris Wilson           2017-09-06  255  		*nr_scanned += scanned;
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  256  	return count;
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  257  }
be6a0376950475 drivers/gpu/drm/i915/i915_gem_shrinker.c     Daniel Vetter          2015-03-18  258  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


More information about the dri-devel mailing list