Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [drm-xe:drm-xe-next 11/13] drivers/gpu/drm/xe/xe_migrate.c:422:3: error: cannot jump from this indirect goto statement to one of its possible targets
@ 2025-09-10 10:33 kernel test robot
  2025-09-10 15:16 ` Thomas Hellström
  0 siblings, 1 reply; 4+ messages in thread
From: kernel test robot @ 2025-09-10 10:33 UTC (permalink / raw)
  To: Thomas Hellström; +Cc: llvm, oe-kbuild-all, intel-xe, Matthew Brost

tree:   https://gitlab.freedesktop.org/drm/xe/kernel.git drm-xe-next
head:   844150c255c94230aec41f88db8e2875cb97439e
commit: 59eabff2a3524d7f3bf6c24890cd197c4c116fcb [11/13] drm/xe: Convert xe_bo_create_pin_map() for exhaustive eviction
config: loongarch-randconfig-001-20250910 (https://download.01.org/0day-ci/archive/20250910/202509101853.nDmyxTEM-lkp@intel.com/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250910/202509101853.nDmyxTEM-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/202509101853.nDmyxTEM-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/gpu/drm/xe/xe_migrate.c:422:3: error: cannot jump from this indirect goto statement to one of its possible targets
     422 |                 drm_exec_retry_on_contention(&exec);
         |                 ^
   include/drm/drm_exec.h:123:4: note: expanded from macro 'drm_exec_retry_on_contention'
     123 |                         goto *__drm_exec_retry_ptr;             \
         |                         ^
   drivers/gpu/drm/xe/xe_migrate.c:465:2: note: possible target of indirect goto statement
     465 |         might_lock(&m->job_mutex);
         |         ^
   include/linux/lockdep.h:552:51: note: expanded from macro 'might_lock'
     552 |         lock_acquire(&(lock)->dep_map, 0, 0, 0, 1, NULL, _THIS_IP_);    \
         |                                                          ^
   include/linux/instruction_pointer.h:10:41: note: expanded from macro '_THIS_IP_'
      10 | #define _THIS_IP_  ({ __label__ __here; __here: (unsigned long)&&__here; })
         |                                         ^
   drivers/gpu/drm/xe/xe_migrate.c:420:2: note: jump exits scope of variable with __attribute__((cleanup))
     420 |         xe_validation_guard(&ctx, &xe->val, &exec, (struct xe_val_flags) {}, err) {
         |         ^
   drivers/gpu/drm/xe/xe_validation.h:189:2: note: expanded from macro 'xe_validation_guard'
     189 |         scoped_guard(xe_validation, _ctx, _val, _exec, _flags, _ret) \
         |         ^
   include/linux/cleanup.h:429:2: note: expanded from macro 'scoped_guard'
     429 |         __scoped_guard(_name, __UNIQUE_ID(label), args)
         |         ^
   include/linux/cleanup.h:420:20: note: expanded from macro '__scoped_guard'
     420 |         for (CLASS(_name, scope)(args);                                 \
         |                           ^
   drivers/gpu/drm/xe/xe_migrate.c:465:2: note: jump enters a statement expression
     465 |         might_lock(&m->job_mutex);
         |         ^
   include/linux/lockdep.h:552:51: note: expanded from macro 'might_lock'
     552 |         lock_acquire(&(lock)->dep_map, 0, 0, 0, 1, NULL, _THIS_IP_);    \
         |                                                          ^
   include/linux/instruction_pointer.h:10:20: note: expanded from macro '_THIS_IP_'
      10 | #define _THIS_IP_  ({ __label__ __here; __here: (unsigned long)&&__here; })
         |                    ^
>> drivers/gpu/drm/xe/xe_migrate.c:422:3: error: cannot jump from this indirect goto statement to one of its possible targets
     422 |                 drm_exec_retry_on_contention(&exec);
         |                 ^
   include/drm/drm_exec.h:123:4: note: expanded from macro 'drm_exec_retry_on_contention'
     123 |                         goto *__drm_exec_retry_ptr;             \
         |                         ^
   drivers/gpu/drm/xe/xe_migrate.c:465:2: note: possible target of indirect goto statement
     465 |         might_lock(&m->job_mutex);
         |         ^
   include/linux/lockdep.h:553:33: note: expanded from macro 'might_lock'
     553 |         lock_release(&(lock)->dep_map, _THIS_IP_);                      \
         |                                        ^
   include/linux/instruction_pointer.h:10:41: note: expanded from macro '_THIS_IP_'
      10 | #define _THIS_IP_  ({ __label__ __here; __here: (unsigned long)&&__here; })
         |                                         ^
   drivers/gpu/drm/xe/xe_migrate.c:420:2: note: jump exits scope of variable with __attribute__((cleanup))
     420 |         xe_validation_guard(&ctx, &xe->val, &exec, (struct xe_val_flags) {}, err) {
         |         ^
   drivers/gpu/drm/xe/xe_validation.h:189:2: note: expanded from macro 'xe_validation_guard'
     189 |         scoped_guard(xe_validation, _ctx, _val, _exec, _flags, _ret) \
         |         ^
   include/linux/cleanup.h:429:2: note: expanded from macro 'scoped_guard'
     429 |         __scoped_guard(_name, __UNIQUE_ID(label), args)
         |         ^
   include/linux/cleanup.h:420:20: note: expanded from macro '__scoped_guard'
     420 |         for (CLASS(_name, scope)(args);                                 \
         |                           ^
   drivers/gpu/drm/xe/xe_migrate.c:465:2: note: jump enters a statement expression
     465 |         might_lock(&m->job_mutex);
         |         ^
   include/linux/lockdep.h:553:33: note: expanded from macro 'might_lock'
     553 |         lock_release(&(lock)->dep_map, _THIS_IP_);                      \
         |                                        ^
   include/linux/instruction_pointer.h:10:20: note: expanded from macro '_THIS_IP_'
      10 | #define _THIS_IP_  ({ __label__ __here; __here: (unsigned long)&&__here; })
         |                    ^
   2 errors generated.


vim +422 drivers/gpu/drm/xe/xe_migrate.c

   396	
   397	/**
   398	 * xe_migrate_init() - Initialize a migrate context
   399	 * @m: The migration context
   400	 *
   401	 * Return: 0 if successful, negative error code on failure
   402	 */
   403	int xe_migrate_init(struct xe_migrate *m)
   404	{
   405		struct xe_tile *tile = m->tile;
   406		struct xe_gt *primary_gt = tile->primary_gt;
   407		struct xe_device *xe = tile_to_xe(tile);
   408		struct xe_validation_ctx ctx;
   409		struct drm_exec exec;
   410		struct xe_vm *vm;
   411		int err;
   412	
   413		/* Special layout, prepared below.. */
   414		vm = xe_vm_create(xe, XE_VM_FLAG_MIGRATION |
   415				  XE_VM_FLAG_SET_TILE_ID(tile), NULL);
   416		if (IS_ERR(vm))
   417			return PTR_ERR(vm);
   418	
   419		err = 0;
   420		xe_validation_guard(&ctx, &xe->val, &exec, (struct xe_val_flags) {}, err) {
   421			err = xe_vm_drm_exec_lock(vm, &exec);
 > 422			drm_exec_retry_on_contention(&exec);
   423			err = xe_migrate_prepare_vm(tile, m, vm, &exec);
   424			drm_exec_retry_on_contention(&exec);
   425			xe_validation_retry_on_oom(&ctx, &err);
   426		}
   427		if (err)
   428			return err;
   429	
   430		if (xe->info.has_usm) {
   431			struct xe_hw_engine *hwe = xe_gt_hw_engine(primary_gt,
   432								   XE_ENGINE_CLASS_COPY,
   433								   primary_gt->usm.reserved_bcs_instance,
   434								   false);
   435			u32 logical_mask = xe_migrate_usm_logical_mask(primary_gt);
   436	
   437			if (!hwe || !logical_mask) {
   438				err = -EINVAL;
   439				goto err_out;
   440			}
   441	
   442			/*
   443			 * XXX: Currently only reserving 1 (likely slow) BCS instance on
   444			 * PVC, may want to revisit if performance is needed.
   445			 */
   446			m->q = xe_exec_queue_create(xe, vm, logical_mask, 1, hwe,
   447						    EXEC_QUEUE_FLAG_KERNEL |
   448						    EXEC_QUEUE_FLAG_PERMANENT |
   449						    EXEC_QUEUE_FLAG_HIGH_PRIORITY |
   450						    EXEC_QUEUE_FLAG_MIGRATE, 0);
   451		} else {
   452			m->q = xe_exec_queue_create_class(xe, primary_gt, vm,
   453							  XE_ENGINE_CLASS_COPY,
   454							  EXEC_QUEUE_FLAG_KERNEL |
   455							  EXEC_QUEUE_FLAG_PERMANENT |
   456							  EXEC_QUEUE_FLAG_MIGRATE, 0);
   457		}
   458		if (IS_ERR(m->q)) {
   459			err = PTR_ERR(m->q);
   460			goto err_out;
   461		}
   462	
   463		mutex_init(&m->job_mutex);
   464		fs_reclaim_acquire(GFP_KERNEL);
   465		might_lock(&m->job_mutex);
   466		fs_reclaim_release(GFP_KERNEL);
   467	
   468		err = devm_add_action_or_reset(xe->drm.dev, xe_migrate_fini, m);
   469		if (err)
   470			return err;
   471	
   472		if (IS_DGFX(xe)) {
   473			if (xe_migrate_needs_ccs_emit(xe))
   474				/* min chunk size corresponds to 4K of CCS Metadata */
   475				m->min_chunk_size = SZ_4K * SZ_64K /
   476					xe_device_ccs_bytes(xe, SZ_64K);
   477			else
   478				/* Somewhat arbitrary to avoid a huge amount of blits */
   479				m->min_chunk_size = SZ_64K;
   480			m->min_chunk_size = roundup_pow_of_two(m->min_chunk_size);
   481			drm_dbg(&xe->drm, "Migrate min chunk size is 0x%08llx\n",
   482				(unsigned long long)m->min_chunk_size);
   483		}
   484	
   485		return err;
   486	
   487	err_out:
   488		xe_vm_close_and_put(vm);
   489		return err;
   490	

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

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-09-11  6:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-10 10:33 [drm-xe:drm-xe-next 11/13] drivers/gpu/drm/xe/xe_migrate.c:422:3: error: cannot jump from this indirect goto statement to one of its possible targets kernel test robot
2025-09-10 15:16 ` Thomas Hellström
2025-09-10 19:39   ` Nathan Chancellor
2025-09-11  6:34     ` Thomas Hellström

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox