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.