CC: [email protected]
BCC: [email protected]
CC: Linux Memory Management List <[email protected]>
TO: "Christian König" <[email protected]>
CC: Daniel Vetter <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git 
master
head:   ff511c1c68a5a35ab0b3efb3c306fd80b10d74be
commit: 644704740b8282c9ee9483a38666ee4a4561c37c [1083/3040] drm/amdgpu: use 
dma_resv_for_each_fence for CS workaround v2
:::::: branch date: 5 hours ago
:::::: commit date: 5 days ago
config: ia64-randconfig-m031-20220406 
(https://download.01.org/0day-ci/archive/20220408/[email protected]/config)
compiler: ia64-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

New smatch warnings:
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c:1283 amdgpu_cs_submit() warn: ignoring 
unreachable code.

Old smatch warnings:
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c:522 amdgpu_cs_parser_bos() error: we 
previously assumed 'p->bo_list' could be null (see line 513)
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c:542 amdgpu_cs_parser_bos() warn: Please 
consider using kvcalloc instead

vim +1283 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c

660e855813f78b Dave Airlie     2017-03-13  1206  
cd75dc6887f1e1 Christian König 2016-01-31  1207  static int 
amdgpu_cs_submit(struct amdgpu_cs_parser *p,
cd75dc6887f1e1 Christian König 2016-01-31  1208                             
union drm_amdgpu_cs *cs)
cd75dc6887f1e1 Christian König 2016-01-31  1209  {
8ab19ea619aeed Christian König 2018-07-27  1210         struct amdgpu_fpriv 
*fpriv = p->filp->driver_priv;
0d346a14c63412 Christian König 2018-07-19  1211         struct drm_sched_entity 
*entity = p->entity;
4a102ad4ba0daf Christian König 2018-07-30  1212         struct 
amdgpu_bo_list_entry *e;
cd75dc6887f1e1 Christian König 2016-01-31  1213         struct amdgpu_job *job;
eb01abc7c4fd1f Monk Liu        2017-09-15  1214         uint64_t seq;
e686941a32d31d Monk Liu        2016-03-07  1215         int r;
cd75dc6887f1e1 Christian König 2016-01-31  1216  
4a2de54dc1d766 Christian König 2018-08-24  1217         job = p->job;
4a2de54dc1d766 Christian König 2018-08-24  1218         p->job = NULL;
4a2de54dc1d766 Christian König 2018-08-24  1219  
114fbc31952eb5 Christian König 2019-12-16  1220         r = 
drm_sched_job_init(&job->base, entity, &fpriv->vm);
4a2de54dc1d766 Christian König 2018-08-24  1221         if (r)
4a2de54dc1d766 Christian König 2018-08-24  1222                 goto 
error_unlock;
4a2de54dc1d766 Christian König 2018-08-24  1223  
dbe48d030b285a Daniel Vetter   2021-08-17  1224         
drm_sched_job_arm(&job->base);
dbe48d030b285a Daniel Vetter   2021-08-17  1225  
81fa1af31b5d79 Jason Gunthorpe 2019-11-12  1226         /* No memory allocation 
is allowed while holding the notifier lock.
81fa1af31b5d79 Jason Gunthorpe 2019-11-12  1227          * The lock is held 
until amdgpu_cs_submit is finished and fence is
81fa1af31b5d79 Jason Gunthorpe 2019-11-12  1228          * added to BOs.
899fbde1464639 Philip Yang     2018-12-13  1229          */
81fa1af31b5d79 Jason Gunthorpe 2019-11-12  1230         
mutex_lock(&p->adev->notifier_lock);
899fbde1464639 Philip Yang     2018-12-13  1231  
899fbde1464639 Philip Yang     2018-12-13  1232         /* If userptr are 
invalidated after amdgpu_cs_parser_bos(), return
899fbde1464639 Philip Yang     2018-12-13  1233          * -EAGAIN, drmIoctl in 
libdrm will restart the amdgpu_cs_ioctl.
899fbde1464639 Philip Yang     2018-12-13  1234          */
39f7f69a6054bb Christian König 2018-07-30  1235         
amdgpu_bo_list_for_each_userptr_entry(e, p->bo_list) {
e83dfe4d869358 Christian König 2018-09-10  1236                 struct 
amdgpu_bo *bo = ttm_to_amdgpu_bo(e->tv.bo);
3fe89771cb0a65 Christian König 2017-09-12  1237  
899fbde1464639 Philip Yang     2018-12-13  1238                 r |= 
!amdgpu_ttm_tt_get_user_pages_done(bo->tbo.ttm);
3fe89771cb0a65 Christian König 2017-09-12  1239         }
899fbde1464639 Philip Yang     2018-12-13  1240         if (r) {
899fbde1464639 Philip Yang     2018-12-13  1241                 r = -EAGAIN;
899fbde1464639 Philip Yang     2018-12-13  1242                 goto 
error_abort;
3fe89771cb0a65 Christian König 2017-09-12  1243         }
3fe89771cb0a65 Christian König 2017-09-12  1244  
f54d1867005c33 Chris Wilson    2016-10-25  1245         p->fence = 
dma_fence_get(&job->base.s_fence->finished);
660e855813f78b Dave Airlie     2017-03-13  1246  
85eff20020a656 Christian König 2018-08-24  1247         
amdgpu_ctx_add_fence(p->ctx, entity, p->fence, &seq);
660e855813f78b Dave Airlie     2017-03-13  1248         
amdgpu_cs_post_dependencies(p);
660e855813f78b Dave Airlie     2017-03-13  1249  
d98ff24e8e9be3 Christian König 2018-08-21  1250         if 
((job->preamble_status & AMDGPU_PREAMBLE_IB_PRESENT) &&
d98ff24e8e9be3 Christian König 2018-08-21  1251             
!p->ctx->preamble_presented) {
d98ff24e8e9be3 Christian König 2018-08-21  1252                 
job->preamble_status |= AMDGPU_PREAMBLE_IB_PRESENT_FIRST;
d98ff24e8e9be3 Christian König 2018-08-21  1253                 
p->ctx->preamble_presented = true;
d98ff24e8e9be3 Christian König 2018-08-21  1254         }
d98ff24e8e9be3 Christian König 2018-08-21  1255  
eb01abc7c4fd1f Monk Liu        2017-09-15  1256         cs->out.handle = seq;
eb01abc7c4fd1f Monk Liu        2017-09-15  1257         job->uf_sequence = seq;
eb01abc7c4fd1f Monk Liu        2017-09-15  1258  
a5fb4ec29c74a1 Christian König 2016-06-29  1259         
amdgpu_job_free_resources(job);
cd75dc6887f1e1 Christian König 2016-01-31  1260  
cd75dc6887f1e1 Christian König 2016-01-31  1261         
trace_amdgpu_cs_ioctl(job);
8ab19ea619aeed Christian König 2018-07-27  1262         
amdgpu_vm_bo_trace_cs(&fpriv->vm, &p->ticket);
0e10e9a1db230a Daniel Vetter   2021-08-05  1263         
drm_sched_entity_push_job(&job->base);
3fe89771cb0a65 Christian König 2017-09-12  1264  
b995795bf09b6b Christian König 2018-08-30  1265         
amdgpu_vm_move_to_lru_tail(p->adev, &fpriv->vm);
b995795bf09b6b Christian König 2018-08-30  1266  
8c505bdc9c8b95 Christian König 2021-06-09  1267         
amdgpu_bo_list_for_each_entry(e, p->bo_list) {
8c505bdc9c8b95 Christian König 2021-06-09  1268                 struct dma_resv 
*resv = e->tv.bo->base.resv;
8c505bdc9c8b95 Christian König 2021-06-09  1269                 struct 
dma_fence_chain *chain = e->chain;
644704740b8282 Christian König 2021-11-03  1270                 struct 
dma_resv_iter cursor;
644704740b8282 Christian König 2021-11-03  1271                 struct 
dma_fence *fence;
8c505bdc9c8b95 Christian König 2021-06-09  1272  
8c505bdc9c8b95 Christian König 2021-06-09  1273                 if (!chain)
8c505bdc9c8b95 Christian König 2021-06-09  1274                         
continue;
8c505bdc9c8b95 Christian König 2021-06-09  1275  
8c505bdc9c8b95 Christian König 2021-06-09  1276                 /*
644704740b8282 Christian König 2021-11-03  1277                  * Temporary 
workaround dma_resv shortcommings by wrapping up
644704740b8282 Christian König 2021-11-03  1278                  * the 
submission in a dma_fence_chain and add it as exclusive
acde6234f65bad Christian König 2021-11-03  1279                  * fence.
644704740b8282 Christian König 2021-11-03  1280                  *
644704740b8282 Christian König 2021-11-03  1281                  * TODO: Remove 
together with dma_resv rework.
8c505bdc9c8b95 Christian König 2021-06-09  1282                  */
644704740b8282 Christian König 2021-11-03 @1283                 
dma_resv_for_each_fence(&cursor, resv, false, fence) {
644704740b8282 Christian König 2021-11-03  1284                         break;
644704740b8282 Christian König 2021-11-03  1285                 }
644704740b8282 Christian König 2021-11-03  1286                 
dma_fence_chain_init(chain, fence, dma_fence_get(p->fence), 1);
8c505bdc9c8b95 Christian König 2021-06-09  1287                 
rcu_assign_pointer(resv->fence_excl, &chain->base);
8c505bdc9c8b95 Christian König 2021-06-09  1288                 e->chain = NULL;
8c505bdc9c8b95 Christian König 2021-06-09  1289         }
8c505bdc9c8b95 Christian König 2021-06-09  1290  
3fe89771cb0a65 Christian König 2017-09-12  1291         
ttm_eu_fence_buffer_objects(&p->ticket, &p->validated, p->fence);
81fa1af31b5d79 Jason Gunthorpe 2019-11-12  1292         
mutex_unlock(&p->adev->notifier_lock);
3fe89771cb0a65 Christian König 2017-09-12  1293  
cd75dc6887f1e1 Christian König 2016-01-31  1294         return 0;
4a2de54dc1d766 Christian König 2018-08-24  1295  
4a2de54dc1d766 Christian König 2018-08-24  1296  error_abort:
26efecf9558895 Sharat Masetty  2018-10-29  1297         
drm_sched_job_cleanup(&job->base);
81fa1af31b5d79 Jason Gunthorpe 2019-11-12  1298         
mutex_unlock(&p->adev->notifier_lock);
4a2de54dc1d766 Christian König 2018-08-24  1299  
4a2de54dc1d766 Christian König 2018-08-24  1300  error_unlock:
4a2de54dc1d766 Christian König 2018-08-24  1301         amdgpu_job_free(job);
4a2de54dc1d766 Christian König 2018-08-24  1302         return r;
cd75dc6887f1e1 Christian König 2016-01-31  1303  }
cd75dc6887f1e1 Christian König 2016-01-31  1304  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to