Hi Dave,

kernel test robot noticed the following build errors:

[auto build test ERROR on tj-cgroup/for-next]
[also build test ERROR on akpm-mm/mm-everything linus/master v6.15-rc4]
[cannot apply to drm-misc/drm-misc-next drm-tip/drm-tip next-20250502]
[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/Dave-Airlie/memcg-add-hooks-for-gpu-memcg-charging-uncharging/20250502-123650
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git for-next
patch link:    
https://lore.kernel.org/r/20250502034046.1625896-4-airlied%40gmail.com
patch subject: [PATCH 3/5] ttm: add initial memcg integration. (v2)
config: s390-randconfig-001-20250503 
(https://download.01.org/0day-ci/archive/20250503/202505030927.6cz0sdou-...@intel.com/config)
compiler: s390-linux-gcc (GCC) 7.5.0
reproduce (this is a W=1 build): 
(https://download.01.org/0day-ci/archive/20250503/202505030927.6cz0sdou-...@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 <l...@intel.com>
| Closes: 
https://lore.kernel.org/oe-kbuild-all/202505030927.6cz0sdou-...@intel.com/

All errors (new ones prefixed by >>):

   s390-linux-ld: drivers/gpu/drm/ttm/ttm_resource.o: in function 
`ttm_resource_free':
>> drivers/gpu/drm/ttm/ttm_resource.c:443: undefined reference to 
>> `mem_cgroup_uncharge_gpu'
   s390-linux-ld: drivers/gpu/drm/ttm/ttm_resource.o: in function 
`ttm_resource_alloc':
   drivers/gpu/drm/ttm/ttm_resource.c:408: undefined reference to 
`mem_cgroup_uncharge_gpu'
>> s390-linux-ld: drivers/gpu/drm/ttm/ttm_resource.c:400: undefined reference 
>> to `mem_cgroup_charge_gpu'


vim +443 drivers/gpu/drm/ttm/ttm_resource.c

   374  
   375  int ttm_resource_alloc(struct ttm_buffer_object *bo,
   376                         const struct ttm_place *place,
   377                         struct ttm_operation_ctx *ctx,
   378                         struct ttm_resource **res_ptr,
   379                         struct dmem_cgroup_pool_state **ret_limit_pool)
   380  {
   381          struct ttm_resource_manager *man =
   382                  ttm_manager_type(bo->bdev, place->mem_type);
   383          struct dmem_cgroup_pool_state *pool = NULL;
   384          struct mem_cgroup *memcg = NULL;
   385          int ret;
   386  
   387          if (man->cg) {
   388                  ret = dmem_cgroup_try_charge(man->cg, bo->base.size, 
&pool, ret_limit_pool);
   389                  if (ret)
   390                          return ret;
   391          }
   392  
   393          if ((place->mem_type == TTM_PL_SYSTEM || place->mem_type == 
TTM_PL_TT) &&
   394              ctx->account_op && bo->memcg) {
   395                  memcg = bo->memcg;
   396                  gfp_t gfp_flags = GFP_USER;
   397                  if (ctx->gfp_retry_mayfail)
   398                          gfp_flags |= __GFP_RETRY_MAYFAIL;
   399  
 > 400                  if (!mem_cgroup_charge_gpu(memcg, bo->base.size >> 
 > PAGE_SHIFT, gfp_flags))
   401                          return -ENOMEM;
   402          }
   403          ret = man->func->alloc(man, bo, place, res_ptr);
   404          if (ret) {
   405                  if (pool)
   406                          dmem_cgroup_uncharge(pool, bo->base.size);
   407                  if (memcg)
   408                          mem_cgroup_uncharge_gpu(memcg, bo->base.size >> 
PAGE_SHIFT);
   409                  return ret;
   410          }
   411  
   412          (*res_ptr)->memcg = memcg;
   413          (*res_ptr)->css = pool;
   414  
   415          spin_lock(&bo->bdev->lru_lock);
   416          ttm_resource_add_bulk_move(*res_ptr, bo);
   417          spin_unlock(&bo->bdev->lru_lock);
   418          return 0;
   419  }
   420  EXPORT_SYMBOL_FOR_TESTS_ONLY(ttm_resource_alloc);
   421  
   422  void ttm_resource_free(struct ttm_buffer_object *bo, struct 
ttm_resource **res)
   423  {
   424          struct ttm_resource_manager *man;
   425          struct dmem_cgroup_pool_state *pool;
   426          struct mem_cgroup *memcg;
   427  
   428          if (!*res)
   429                  return;
   430  
   431          spin_lock(&bo->bdev->lru_lock);
   432          ttm_resource_del_bulk_move(*res, bo);
   433          spin_unlock(&bo->bdev->lru_lock);
   434  
   435          pool = (*res)->css;
   436          memcg = (*res)->memcg;
   437          man = ttm_manager_type(bo->bdev, (*res)->mem_type);
   438          man->func->free(man, *res);
   439          *res = NULL;
   440          if (man->cg)
   441                  dmem_cgroup_uncharge(pool, bo->base.size);
   442          if (memcg)
 > 443                  mem_cgroup_uncharge_gpu(memcg, bo->base.size >> 
 > PAGE_SHIFT);
   444  }
   445  EXPORT_SYMBOL(ttm_resource_free);
   446  

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

Reply via email to