Hi Chunming,

I love your patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on next-20190306]
[cannot apply to v5.0]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Chunming-Zhou/dma-buf-add-new-dma_fence_chain-container-v5/20190316-055452
reproduce:
        # apt-get install sparse
        make ARCH=x86_64 allmodconfig
        make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'


sparse warnings: (new ones prefixed by >>)

>> drivers/gpu/drm/drm_syncobj.c:239:42: sparse: constant 5000000000 is so big 
>> it is long
   include/linux/slab.h:664:13: sparse: undefined identifier 
'__builtin_mul_overflow'
   include/linux/slab.h:664:13: sparse: not a function <noident>
   include/linux/slab.h:664:13: sparse: not a function <noident>
   include/linux/slab.h:664:13: sparse: not a function <noident>
   include/linux/slab.h:664:13: sparse: call with no type!

vim +239 drivers/gpu/drm/drm_syncobj.c

   215  
   216  /* 5s */
   217  #define DRM_SYNCOBJ_WAIT_FOR_SUBMIT_TIMEOUT 5000000000
   218  /**
   219   * drm_syncobj_find_fence - lookup and reference the fence in a sync 
object
   220   * @file_private: drm file private pointer
   221   * @handle: sync object handle to lookup.
   222   * @point: timeline point
   223   * @flags: DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT or not
   224   * @fence: out parameter for the fence
   225   *
   226   * This is just a convenience function that combines drm_syncobj_find() 
and
   227   * drm_syncobj_fence_get().
   228   *
   229   * Returns 0 on success or a negative error value on failure. On 
success @fence
   230   * contains a reference to the fence, which must be released by calling
   231   * dma_fence_put().
   232   */
   233  int drm_syncobj_find_fence(struct drm_file *file_private,
   234                             u32 handle, u64 point, u64 flags,
   235                             struct dma_fence **fence)
   236  {
   237          struct drm_syncobj *syncobj = drm_syncobj_find(file_private, 
handle);
   238          struct syncobj_wait_entry wait;
 > 239          u64 timeout = 
 > nsecs_to_jiffies64(DRM_SYNCOBJ_WAIT_FOR_SUBMIT_TIMEOUT);
   240          int ret;
   241  
   242          if (!syncobj)
   243                  return -ENOENT;
   244  
   245          *fence = drm_syncobj_fence_get(syncobj);
   246          drm_syncobj_put(syncobj);
   247  
   248          if (*fence) {
   249                  ret = dma_fence_chain_find_seqno(fence, point);
   250                  if (!ret)
   251                          return 0;
   252                  dma_fence_put(*fence);
   253          } else {
   254                  ret = -EINVAL;
   255          }
   256  
   257          if (!(flags & DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT))
   258                  return ret;
   259  
   260          memset(&wait, 0, sizeof(wait));
   261          wait.task = current;
   262          wait.point = point;
   263          drm_syncobj_fence_add_wait(syncobj, &wait);
   264  
   265          do {
   266                  set_current_state(TASK_INTERRUPTIBLE);
   267                  if (wait.fence) {
   268                          ret = 0;
   269                          break;
   270                  }
   271                  if (timeout == 0) {
   272                          ret = -ETIME;
   273                          break;
   274                  }
   275  
   276                  if (signal_pending(current)) {
   277                          ret = -ERESTARTSYS;
   278                          break;
   279                  }
   280  
   281                  timeout = schedule_timeout(timeout);
   282          } while (1);
   283  
   284          __set_current_state(TASK_RUNNING);
   285          *fence = wait.fence;
   286  
   287          if (wait.node.next)
   288                  drm_syncobj_remove_wait(syncobj, &wait);
   289  
   290          return ret;
   291  }
   292  EXPORT_SYMBOL(drm_syncobj_find_fence);
   293  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to