All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: cros-kernel-buildreports@googlegroups.com
Cc: oe-kbuild-all@lists.linux.dev
Subject: [android-common:android13-5.10 1/1] drivers/gpu/drm/ttm/ttm_page_alloc.c:230: warning: bad line:                 pool_index = 0x0;
Date: Sat, 19 Sep 2026 00:30:39 +0800	[thread overview]
Message-ID: <202609190010.DfvE5eyR-lkp@intel.com> (raw)

Hi Lingfeng,

First bad commit (maybe != root cause):

tree:   https://android.googlesource.com/kernel/common android13-5.10
head:   f107467f23d029ae469a0e8acada4336424274ca
commit: 51c9ed876ce194f1f3c6bd778b7bb46a8deb1dd9 [1/1] ANDROID: GKI: Add DRM_TTM config to GKI
config: i386-randconfig-r1307-20260917 (https://download.01.org/0day-ci/archive/20260919/202609190010.DfvE5eyR-lkp@intel.com/config)
compiler: gcc-13 (Debian 13.3.0-16) 13.3.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260919/202609190010.DfvE5eyR-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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202609190010.DfvE5eyR-lkp@intel.com/

All warnings (new ones prefixed by >>):

   drivers/gpu/drm/ttm/ttm_page_alloc.c:79: warning: Function parameter or member 'name' not described in 'ttm_page_pool'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:79: warning: Function parameter or member 'nfrees' not described in 'ttm_page_pool'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:79: warning: Function parameter or member 'nrefills' not described in 'ttm_page_pool'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:79: warning: Function parameter or member 'order' not described in 'ttm_page_pool'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:87: warning: cannot understand function prototype: 'struct ttm_pool_opts '
   drivers/gpu/drm/ttm/ttm_page_alloc.c:124: warning: Function parameter or member 'kobj' not described in 'ttm_pool_manager'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:124: warning: Function parameter or member 'mm_shrink' not described in 'ttm_pool_manager'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:124: warning: Function parameter or member 'options' not described in 'ttm_pool_manager'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:124: warning: Function parameter or member 'wc_pool' not described in 'ttm_pool_manager'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:124: warning: Function parameter or member 'uc_pool' not described in 'ttm_pool_manager'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:124: warning: Function parameter or member 'wc_pool_dma32' not described in 'ttm_pool_manager'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:124: warning: Function parameter or member 'uc_pool_dma32' not described in 'ttm_pool_manager'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:124: warning: Function parameter or member 'wc_pool_huge' not described in 'ttm_pool_manager'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:124: warning: Function parameter or member 'uc_pool_huge' not described in 'ttm_pool_manager'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:222: warning: bad line:                                           enum ttm_caching_state cstate)
   drivers/gpu/drm/ttm/ttm_page_alloc.c:223: warning: bad line: {
   drivers/gpu/drm/ttm/ttm_page_alloc.c:224: warning: bad line:         int pool_index;
   drivers/gpu/drm/ttm/ttm_page_alloc.c:225: warning: bad line: 
   drivers/gpu/drm/ttm/ttm_page_alloc.c:226: warning: bad line:         if (cstate == tt_cached)
   drivers/gpu/drm/ttm/ttm_page_alloc.c:227: warning: bad line:                 return NULL;
   drivers/gpu/drm/ttm/ttm_page_alloc.c:228: warning: bad line: 
   drivers/gpu/drm/ttm/ttm_page_alloc.c:229: warning: bad line:         if (cstate == tt_wc)
>> drivers/gpu/drm/ttm/ttm_page_alloc.c:230: warning: bad line:                 pool_index = 0x0;
   drivers/gpu/drm/ttm/ttm_page_alloc.c:231: warning: bad line:         else
   drivers/gpu/drm/ttm/ttm_page_alloc.c:232: warning: bad line:                 pool_index = 0x1;
   drivers/gpu/drm/ttm/ttm_page_alloc.c:233: warning: bad line: 
   drivers/gpu/drm/ttm/ttm_page_alloc.c:234: warning: bad line:         if (flags & TTM_PAGE_FLAG_DMA32) {
   drivers/gpu/drm/ttm/ttm_page_alloc.c:235: warning: bad line:                 if (huge)
   drivers/gpu/drm/ttm/ttm_page_alloc.c:236: warning: bad line:                         return NULL;
   drivers/gpu/drm/ttm/ttm_page_alloc.c:237: warning: bad line:                 pool_index |= 0x2;
   drivers/gpu/drm/ttm/ttm_page_alloc.c:238: warning: bad line: 
   drivers/gpu/drm/ttm/ttm_page_alloc.c:239: warning: bad line:         } else if (huge) {
   drivers/gpu/drm/ttm/ttm_page_alloc.c:240: warning: bad line:                 pool_index |= 0x4;
   drivers/gpu/drm/ttm/ttm_page_alloc.c:241: warning: bad line:         }
   drivers/gpu/drm/ttm/ttm_page_alloc.c:242: warning: bad line: 
   drivers/gpu/drm/ttm/ttm_page_alloc.c:243: warning: bad line:         return &_manager->pools[pool_index];
   drivers/gpu/drm/ttm/ttm_page_alloc.c:244: warning: bad line: }
   drivers/gpu/drm/ttm/ttm_page_alloc.c:245: warning: bad line: 
   drivers/gpu/drm/ttm/ttm_page_alloc.c:249: warning: Function parameter or member 'pages' not described in 'ttm_pages_put'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:249: warning: Function parameter or member 'npages' not described in 'ttm_pages_put'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:249: warning: Function parameter or member 'order' not described in 'ttm_pages_put'
>> drivers/gpu/drm/ttm/ttm_page_alloc.c:285: warning: Function parameter or member 'nr_free' not described in 'ttm_page_pool_free'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:285: warning: Excess function parameter 'free_all' description in 'ttm_page_pool_free'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:378: warning: Function parameter or member 'shrink' not described in 'ttm_pool_shrink_scan'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:378: warning: Function parameter or member 'sc' not described in 'ttm_pool_shrink_scan'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:472: warning: Function parameter or member 'pages' not described in 'ttm_handle_caching_state_failure'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:472: warning: Function parameter or member 'ttm_flags' not described in 'ttm_handle_caching_state_failure'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:472: warning: Function parameter or member 'cstate' not described in 'ttm_handle_caching_state_failure'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:472: warning: Function parameter or member 'failed_pages' not described in 'ttm_handle_caching_state_failure'
>> drivers/gpu/drm/ttm/ttm_page_alloc.c:472: warning: Function parameter or member 'cpages' not described in 'ttm_handle_caching_state_failure'
>> drivers/gpu/drm/ttm/ttm_page_alloc.c:490: warning: Function parameter or member 'pages' not described in 'ttm_alloc_new_pages'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:490: warning: Function parameter or member 'gfp_flags' not described in 'ttm_alloc_new_pages'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:490: warning: Function parameter or member 'ttm_flags' not described in 'ttm_alloc_new_pages'
>> drivers/gpu/drm/ttm/ttm_page_alloc.c:490: warning: Function parameter or member 'cstate' not described in 'ttm_alloc_new_pages'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:490: warning: Function parameter or member 'count' not described in 'ttm_alloc_new_pages'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:490: warning: Function parameter or member 'order' not described in 'ttm_alloc_new_pages'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:574: warning: Function parameter or member 'pool' not described in 'ttm_page_pool_fill_locked'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:574: warning: Function parameter or member 'ttm_flags' not described in 'ttm_page_pool_fill_locked'
>> drivers/gpu/drm/ttm/ttm_page_alloc.c:574: warning: Function parameter or member 'cstate' not described in 'ttm_page_pool_fill_locked'
>> drivers/gpu/drm/ttm/ttm_page_alloc.c:574: warning: Function parameter or member 'count' not described in 'ttm_page_pool_fill_locked'
>> drivers/gpu/drm/ttm/ttm_page_alloc.c:574: warning: Function parameter or member 'irq_flags' not described in 'ttm_page_pool_fill_locked'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:634: warning: Function parameter or member 'pool' not described in 'ttm_page_pool_get_pages'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:634: warning: Function parameter or member 'pages' not described in 'ttm_page_pool_get_pages'
>> drivers/gpu/drm/ttm/ttm_page_alloc.c:634: warning: Function parameter or member 'ttm_flags' not described in 'ttm_page_pool_get_pages'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:634: warning: Function parameter or member 'cstate' not described in 'ttm_page_pool_get_pages'
   drivers/gpu/drm/ttm/ttm_page_alloc.c:634: warning: Function parameter or member 'count' not described in 'ttm_page_pool_get_pages'
>> drivers/gpu/drm/ttm/ttm_page_alloc.c:634: warning: Function parameter or member 'order' not described in 'ttm_page_pool_get_pages'
--
   drivers/gpu/drm/ttm/ttm_bo.c:51: warning: Function parameter or member 'ttm_global_mutex' not described in 'DEFINE_MUTEX'
   drivers/gpu/drm/ttm/ttm_bo.c:374: warning: Function parameter or member 'bo' not described in 'ttm_bo_cleanup_memtype_use'
   drivers/gpu/drm/ttm/ttm_bo.c:448: warning: Function parameter or member 'bo' not described in 'ttm_bo_cleanup_refs'
>> drivers/gpu/drm/ttm/ttm_bo.c:448: warning: Function parameter or member 'interruptible' not described in 'ttm_bo_cleanup_refs'
   drivers/gpu/drm/ttm/ttm_bo.c:448: warning: Function parameter or member 'no_wait_gpu' not described in 'ttm_bo_cleanup_refs'
   drivers/gpu/drm/ttm/ttm_bo.c:448: warning: Function parameter or member 'unlock_resv' not described in 'ttm_bo_cleanup_refs'
   drivers/gpu/drm/ttm/ttm_bo.c:513: warning: Function parameter or member 'bdev' not described in 'ttm_bo_delayed_delete'
>> drivers/gpu/drm/ttm/ttm_bo.c:513: warning: Function parameter or member 'remove_all' not described in 'ttm_bo_delayed_delete'
   drivers/gpu/drm/ttm/ttm_bo.c:729: warning: Function parameter or member 'bo' not described in 'ttm_bo_evict_swapout_allowable'
   drivers/gpu/drm/ttm/ttm_bo.c:729: warning: Function parameter or member 'ctx' not described in 'ttm_bo_evict_swapout_allowable'
>> drivers/gpu/drm/ttm/ttm_bo.c:729: warning: Function parameter or member 'locked' not described in 'ttm_bo_evict_swapout_allowable'
   drivers/gpu/drm/ttm/ttm_bo.c:729: warning: Function parameter or member 'busy' not described in 'ttm_bo_evict_swapout_allowable'
>> drivers/gpu/drm/ttm/ttm_bo.c:873: warning: Function parameter or member 'bo' not described in 'ttm_bo_add_move_fence'
   drivers/gpu/drm/ttm/ttm_bo.c:873: warning: Function parameter or member 'man' not described in 'ttm_bo_add_move_fence'
   drivers/gpu/drm/ttm/ttm_bo.c:873: warning: Function parameter or member 'mem' not described in 'ttm_bo_add_move_fence'
   drivers/gpu/drm/ttm/ttm_bo.c:873: warning: Function parameter or member 'no_wait_gpu' not described in 'ttm_bo_add_move_fence'
   drivers/gpu/drm/ttm/ttm_bo.c:908: warning: Function parameter or member 'bo' not described in 'ttm_bo_mem_force_space'
   drivers/gpu/drm/ttm/ttm_bo.c:908: warning: Function parameter or member 'place' not described in 'ttm_bo_mem_force_space'
   drivers/gpu/drm/ttm/ttm_bo.c:908: warning: Function parameter or member 'mem' not described in 'ttm_bo_mem_force_space'
   drivers/gpu/drm/ttm/ttm_bo.c:908: warning: Function parameter or member 'ctx' not described in 'ttm_bo_mem_force_space'
   drivers/gpu/drm/ttm/ttm_bo.c:1037: warning: Function parameter or member 'bo' not described in 'ttm_bo_mem_space'
   drivers/gpu/drm/ttm/ttm_bo.c:1037: warning: Function parameter or member 'placement' not described in 'ttm_bo_mem_space'
   drivers/gpu/drm/ttm/ttm_bo.c:1037: warning: Function parameter or member 'mem' not described in 'ttm_bo_mem_space'
   drivers/gpu/drm/ttm/ttm_bo.c:1037: warning: Function parameter or member 'ctx' not described in 'ttm_bo_mem_space'
   drivers/gpu/drm/ttm/ttm_bo.c:1787: warning: Function parameter or member 'glob' not described in 'ttm_bo_swapout'
   drivers/gpu/drm/ttm/ttm_bo.c:1787: warning: Function parameter or member 'ctx' not described in 'ttm_bo_swapout'

Kconfig warnings: (for reference only)
   WARNING: unmet direct dependencies detected for SND_VMASTER
   Depends on [n]: SOUND [=m] && !UML && SND [=n]
   Selected by [y]:
   - GKI_HIDDEN_SND_CONFIGS [=y]
   WARNING: unmet direct dependencies detected for SND_PCM_IEC958
   Depends on [n]: SOUND [=m] && !UML && SND [=n]
   Selected by [y]:
   - GKI_HIDDEN_SND_SOC_CONFIGS [=y]
   WARNING: unmet direct dependencies detected for SND_JACK
   Depends on [n]: SOUND [=m] && !UML && SND [=n]
   Selected by [y]:
   - GKI_HIDDEN_SND_CONFIGS [=y]
   WARNING: unmet direct dependencies detected for SND_JACK_INPUT_DEV
   Depends on [n]: SOUND [=m] && !UML && SND [=n] && SND_JACK [=y]
   Selected by [y]:
   - GKI_HIDDEN_SND_CONFIGS [=y]
   WARNING: unmet direct dependencies detected for SND_PCM_ELD
   Depends on [n]: SOUND [=m] && !UML && SND [=n]
   Selected by [y]:
   - GKI_HIDDEN_SND_CONFIGS [=y]
   WARNING: unmet direct dependencies detected for SND_INTEL_NHLT
   Depends on [n]: SOUND [=m] && !UML && SND [=n]
   Selected by [y]:
   - GKI_HIDDEN_SND_CONFIGS [=y] && ACPI [=y]


vim +230 drivers/gpu/drm/ttm/ttm_page_alloc.c

1403b1a38e8b19 Pauli Nieminen        2010-04-01  218  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  219  /**
1403b1a38e8b19 Pauli Nieminen        2010-04-01  220   * Select the right pool or requested caching state and ttm flags. */
6ed4e2e673d348 Christian König       2017-10-05  221  static struct ttm_page_pool *ttm_get_pool(int flags, bool huge,
1403b1a38e8b19 Pauli Nieminen        2010-04-01  222  					  enum ttm_caching_state cstate)
1403b1a38e8b19 Pauli Nieminen        2010-04-01  223  {
1403b1a38e8b19 Pauli Nieminen        2010-04-01  224  	int pool_index;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  225  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  226  	if (cstate == tt_cached)
1403b1a38e8b19 Pauli Nieminen        2010-04-01  227  		return NULL;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  228  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  229  	if (cstate == tt_wc)
1403b1a38e8b19 Pauli Nieminen        2010-04-01 @230  		pool_index = 0x0;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  231  	else
1403b1a38e8b19 Pauli Nieminen        2010-04-01  232  		pool_index = 0x1;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  233  
6ed4e2e673d348 Christian König       2017-10-05  234  	if (flags & TTM_PAGE_FLAG_DMA32) {
6ed4e2e673d348 Christian König       2017-10-05  235  		if (huge)
6ed4e2e673d348 Christian König       2017-10-05  236  			return NULL;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  237  		pool_index |= 0x2;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  238  
6ed4e2e673d348 Christian König       2017-10-05  239  	} else if (huge) {
6ed4e2e673d348 Christian König       2017-10-05  240  		pool_index |= 0x4;
6ed4e2e673d348 Christian König       2017-10-05  241  	}
6ed4e2e673d348 Christian König       2017-10-05  242  
5870a4d97da136 Francisco Jerez       2010-07-04  243  	return &_manager->pools[pool_index];
1403b1a38e8b19 Pauli Nieminen        2010-04-01  244  }
1403b1a38e8b19 Pauli Nieminen        2010-04-01  245  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  246  /* set memory back to wb and free the pages. */
444f8ef3f8f175 Roger He              2017-11-21  247  static void ttm_pages_put(struct page *pages[], unsigned npages,
444f8ef3f8f175 Roger He              2017-11-21  248  		unsigned int order)
1403b1a38e8b19 Pauli Nieminen        2010-04-01  249  {
444f8ef3f8f175 Roger He              2017-11-21  250  	unsigned int i, pages_nr = (1 << order);
444f8ef3f8f175 Roger He              2017-11-21  251  
444f8ef3f8f175 Roger He              2017-11-21  252  	if (order == 0) {
d55f9b87428f47 Huang Rui             2018-07-26  253  		if (ttm_set_pages_array_wb(pages, npages))
25d0479a592556 Joe Perches           2012-03-16  254  			pr_err("Failed to set %d pages to wb!\n", npages);
444f8ef3f8f175 Roger He              2017-11-21  255  	}
444f8ef3f8f175 Roger He              2017-11-21  256  
444f8ef3f8f175 Roger He              2017-11-21  257  	for (i = 0; i < npages; ++i) {
444f8ef3f8f175 Roger He              2017-11-21  258  		if (order > 0) {
d55f9b87428f47 Huang Rui             2018-07-26  259  			if (ttm_set_pages_wb(pages[i], pages_nr))
444f8ef3f8f175 Roger He              2017-11-21  260  				pr_err("Failed to set %d pages to wb!\n", pages_nr);
444f8ef3f8f175 Roger He              2017-11-21  261  		}
444f8ef3f8f175 Roger He              2017-11-21  262  		__free_pages(pages[i], order);
444f8ef3f8f175 Roger He              2017-11-21  263  	}
1403b1a38e8b19 Pauli Nieminen        2010-04-01  264  }
1403b1a38e8b19 Pauli Nieminen        2010-04-01  265  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  266  static void ttm_pool_update_free_locked(struct ttm_page_pool *pool,
1403b1a38e8b19 Pauli Nieminen        2010-04-01  267  		unsigned freed_pages)
1403b1a38e8b19 Pauli Nieminen        2010-04-01  268  {
1403b1a38e8b19 Pauli Nieminen        2010-04-01  269  	pool->npages -= freed_pages;
0745866165598b Pauli Nieminen        2010-04-01  270  	pool->nfrees += freed_pages;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  271  }
1403b1a38e8b19 Pauli Nieminen        2010-04-01  272  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  273  /**
1403b1a38e8b19 Pauli Nieminen        2010-04-01  274   * Free pages from pool.
1403b1a38e8b19 Pauli Nieminen        2010-04-01  275   *
1403b1a38e8b19 Pauli Nieminen        2010-04-01  276   * To prevent hogging the ttm_swap process we only free NUM_PAGES_TO_ALLOC
1403b1a38e8b19 Pauli Nieminen        2010-04-01  277   * number of pages in one go.
1403b1a38e8b19 Pauli Nieminen        2010-04-01  278   *
1403b1a38e8b19 Pauli Nieminen        2010-04-01  279   * @pool: to free the pages from
1403b1a38e8b19 Pauli Nieminen        2010-04-01  280   * @free_all: If set to true will free all pages in pool
881fdaa5e4cb0d Tetsuo Handa          2014-11-13  281   * @use_static: Safe to use static buffer
1403b1a38e8b19 Pauli Nieminen        2010-04-01  282   **/
a91576d7916f6c Tetsuo Handa          2014-08-03  283  static int ttm_page_pool_free(struct ttm_page_pool *pool, unsigned nr_free,
881fdaa5e4cb0d Tetsuo Handa          2014-11-13  284  			      bool use_static)
1403b1a38e8b19 Pauli Nieminen        2010-04-01 @285  {
881fdaa5e4cb0d Tetsuo Handa          2014-11-13  286  	static struct page *static_buf[NUM_PAGES_TO_ALLOC];
1403b1a38e8b19 Pauli Nieminen        2010-04-01  287  	unsigned long irq_flags;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  288  	struct page *p;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  289  	struct page **pages_to_free;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  290  	unsigned freed_pages = 0,
1403b1a38e8b19 Pauli Nieminen        2010-04-01  291  		 npages_to_free = nr_free;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  292  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  293  	if (NUM_PAGES_TO_ALLOC < nr_free)
1403b1a38e8b19 Pauli Nieminen        2010-04-01  294  		npages_to_free = NUM_PAGES_TO_ALLOC;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  295  
881fdaa5e4cb0d Tetsuo Handa          2014-11-13  296  	if (use_static)
881fdaa5e4cb0d Tetsuo Handa          2014-11-13  297  		pages_to_free = static_buf;
881fdaa5e4cb0d Tetsuo Handa          2014-11-13  298  	else
6da2ec56059c3c Kees Cook             2018-06-12  299  		pages_to_free = kmalloc_array(npages_to_free,
6da2ec56059c3c Kees Cook             2018-06-12  300  					      sizeof(struct page *),
881fdaa5e4cb0d Tetsuo Handa          2014-11-13  301  					      GFP_KERNEL);
1403b1a38e8b19 Pauli Nieminen        2010-04-01  302  	if (!pages_to_free) {
767601d100a53e Michel Dänzer         2017-11-03  303  		pr_debug("Failed to allocate memory for pool free operation\n");
1403b1a38e8b19 Pauli Nieminen        2010-04-01  304  		return 0;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  305  	}
1403b1a38e8b19 Pauli Nieminen        2010-04-01  306  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  307  restart:
1403b1a38e8b19 Pauli Nieminen        2010-04-01  308  	spin_lock_irqsave(&pool->lock, irq_flags);
1403b1a38e8b19 Pauli Nieminen        2010-04-01  309  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  310  	list_for_each_entry_reverse(p, &pool->list, lru) {
1403b1a38e8b19 Pauli Nieminen        2010-04-01  311  		if (freed_pages >= npages_to_free)
1403b1a38e8b19 Pauli Nieminen        2010-04-01  312  			break;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  313  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  314  		pages_to_free[freed_pages++] = p;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  315  		/* We can only remove NUM_PAGES_TO_ALLOC at a time. */
1403b1a38e8b19 Pauli Nieminen        2010-04-01  316  		if (freed_pages >= NUM_PAGES_TO_ALLOC) {
1403b1a38e8b19 Pauli Nieminen        2010-04-01  317  			/* remove range of pages from the pool */
1403b1a38e8b19 Pauli Nieminen        2010-04-01  318  			__list_del(p->lru.prev, &pool->list);
1403b1a38e8b19 Pauli Nieminen        2010-04-01  319  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  320  			ttm_pool_update_free_locked(pool, freed_pages);
1403b1a38e8b19 Pauli Nieminen        2010-04-01  321  			/**
1403b1a38e8b19 Pauli Nieminen        2010-04-01  322  			 * Because changing page caching is costly
1403b1a38e8b19 Pauli Nieminen        2010-04-01  323  			 * we unlock the pool to prevent stalling.
1403b1a38e8b19 Pauli Nieminen        2010-04-01  324  			 */
1403b1a38e8b19 Pauli Nieminen        2010-04-01  325  			spin_unlock_irqrestore(&pool->lock, irq_flags);
1403b1a38e8b19 Pauli Nieminen        2010-04-01  326  
444f8ef3f8f175 Roger He              2017-11-21  327  			ttm_pages_put(pages_to_free, freed_pages, pool->order);
1403b1a38e8b19 Pauli Nieminen        2010-04-01  328  			if (likely(nr_free != FREE_ALL_PAGES))
1403b1a38e8b19 Pauli Nieminen        2010-04-01  329  				nr_free -= freed_pages;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  330  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  331  			if (NUM_PAGES_TO_ALLOC >= nr_free)
1403b1a38e8b19 Pauli Nieminen        2010-04-01  332  				npages_to_free = nr_free;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  333  			else
1403b1a38e8b19 Pauli Nieminen        2010-04-01  334  				npages_to_free = NUM_PAGES_TO_ALLOC;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  335  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  336  			freed_pages = 0;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  337  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  338  			/* free all so restart the processing */
1403b1a38e8b19 Pauli Nieminen        2010-04-01  339  			if (nr_free)
1403b1a38e8b19 Pauli Nieminen        2010-04-01  340  				goto restart;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  341  
0d74f86f37306d Konrad Rzeszutek Wilk 2011-06-08  342  			/* Not allowed to fall through or break because
1403b1a38e8b19 Pauli Nieminen        2010-04-01  343  			 * following context is inside spinlock while we are
1403b1a38e8b19 Pauli Nieminen        2010-04-01  344  			 * outside here.
1403b1a38e8b19 Pauli Nieminen        2010-04-01  345  			 */
1403b1a38e8b19 Pauli Nieminen        2010-04-01  346  			goto out;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  347  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  348  		}
1403b1a38e8b19 Pauli Nieminen        2010-04-01  349  	}
1403b1a38e8b19 Pauli Nieminen        2010-04-01  350  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  351  	/* remove range of pages from the pool */
1403b1a38e8b19 Pauli Nieminen        2010-04-01  352  	if (freed_pages) {
1403b1a38e8b19 Pauli Nieminen        2010-04-01  353  		__list_del(&p->lru, &pool->list);
1403b1a38e8b19 Pauli Nieminen        2010-04-01  354  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  355  		ttm_pool_update_free_locked(pool, freed_pages);
1403b1a38e8b19 Pauli Nieminen        2010-04-01  356  		nr_free -= freed_pages;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  357  	}
1403b1a38e8b19 Pauli Nieminen        2010-04-01  358  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  359  	spin_unlock_irqrestore(&pool->lock, irq_flags);
1403b1a38e8b19 Pauli Nieminen        2010-04-01  360  
1403b1a38e8b19 Pauli Nieminen        2010-04-01  361  	if (freed_pages)
444f8ef3f8f175 Roger He              2017-11-21  362  		ttm_pages_put(pages_to_free, freed_pages, pool->order);
1403b1a38e8b19 Pauli Nieminen        2010-04-01  363  out:
881fdaa5e4cb0d Tetsuo Handa          2014-11-13  364  	if (pages_to_free != static_buf)
1403b1a38e8b19 Pauli Nieminen        2010-04-01  365  		kfree(pages_to_free);
1403b1a38e8b19 Pauli Nieminen        2010-04-01  366  	return nr_free;
1403b1a38e8b19 Pauli Nieminen        2010-04-01  367  }
1403b1a38e8b19 Pauli Nieminen        2010-04-01  368  

:::::: The code at line 230 was first introduced by commit
:::::: 1403b1a38e8b19a4cc17e2c158e278628943a436 drm/ttm: add pool wc/uc page allocator V3

:::::: TO: Pauli Nieminen <suokkos@gmail.com>
:::::: CC: Dave Airlie <airlied@redhat.com>

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

                 reply	other threads:[~2026-09-18 16:31 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=202609190010.DfvE5eyR-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=cros-kernel-buildreports@googlegroups.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    /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.