Hi "Thomas,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on drm-tip/drm-tip]
[cannot apply to drm-intel/for-linux-next drm-exynos/exynos-drm-next 
tegra-drm/drm/tegra/for-next drm/drm-next v5.13 next-20210628]
[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]

url:    
https://github.com/0day-ci/linux/commits/Thomas-Hellstr-m/drm-i915-gem-Introduce-a-migrate-interface/20210628-171204
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: x86_64-randconfig-a003-20210628 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 
4c92e31dd0f1bd152eda883af20ff7fbcaa14945)
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # 
https://github.com/0day-ci/linux/commit/e4e5a7f5c031252f26c868a2aa17a031a1558336
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Thomas-Hellstr-m/drm-i915-gem-Introduce-a-migrate-interface/20210628-171204
        git checkout e4e5a7f5c031252f26c868a2aa17a031a1558336
        # save the attached .config to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross O=build_dir 
ARCH=x86_64 SHELL=/bin/bash drivers/gpu/drm/i915/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>

All warnings (new ones prefixed by >>):

   drivers/gpu/drm/i915/gem/i915_gem_wait.c:184: warning: This comment starts 
with '/**', but isn't a kernel-doc comment. Refer 
Documentation/doc-guide/kernel-doc.rst
    * Waits for rendering to the object to be completed
>> drivers/gpu/drm/i915/gem/i915_gem_wait.c:307: warning: expecting prototype 
>> for i915_gem_object_wait_migrate(). Prototype was for 
>> i915_gem_object_wait_migration() instead


vim +307 drivers/gpu/drm/i915/gem/i915_gem_wait.c

   182  
   183  /**
 > 184   * Waits for rendering to the object to be completed
   185   * @obj: i915 gem object
   186   * @flags: how to wait (under a lock, for all rendering or just for 
writes etc)
   187   * @timeout: how long to wait
   188   */
   189  int
   190  i915_gem_object_wait(struct drm_i915_gem_object *obj,
   191                       unsigned int flags,
   192                       long timeout)
   193  {
   194          might_sleep();
   195          GEM_BUG_ON(timeout < 0);
   196  
   197          timeout = i915_gem_object_wait_reservation(obj->base.resv,
   198                                                     flags, timeout);
   199          return timeout < 0 ? timeout : 0;
   200  }
   201  
   202  static inline unsigned long nsecs_to_jiffies_timeout(const u64 n)
   203  {
   204          /* nsecs_to_jiffies64() does not guard against overflow */
   205          if (NSEC_PER_SEC % HZ &&
   206              div_u64(n, NSEC_PER_SEC) >= MAX_JIFFY_OFFSET / HZ)
   207                  return MAX_JIFFY_OFFSET;
   208  
   209          return min_t(u64, MAX_JIFFY_OFFSET, nsecs_to_jiffies64(n) + 1);
   210  }
   211  
   212  static unsigned long to_wait_timeout(s64 timeout_ns)
   213  {
   214          if (timeout_ns < 0)
   215                  return MAX_SCHEDULE_TIMEOUT;
   216  
   217          if (timeout_ns == 0)
   218                  return 0;
   219  
   220          return nsecs_to_jiffies_timeout(timeout_ns);
   221  }
   222  
   223  /**
   224   * i915_gem_wait_ioctl - implements DRM_IOCTL_I915_GEM_WAIT
   225   * @dev: drm device pointer
   226   * @data: ioctl data blob
   227   * @file: drm file pointer
   228   *
   229   * Returns 0 if successful, else an error is returned with the 
remaining time in
   230   * the timeout parameter.
   231   *  -ETIME: object is still busy after timeout
   232   *  -ERESTARTSYS: signal interrupted the wait
   233   *  -ENONENT: object doesn't exist
   234   * Also possible, but rare:
   235   *  -EAGAIN: incomplete, restart syscall
   236   *  -ENOMEM: damn
   237   *  -ENODEV: Internal IRQ fail
   238   *  -E?: The add request failed
   239   *
   240   * The wait ioctl with a timeout of 0 reimplements the busy ioctl. With 
any
   241   * non-zero timeout parameter the wait ioctl will wait for the given 
number of
   242   * nanoseconds on an object becoming unbusy. Since the wait itself does 
so
   243   * without holding struct_mutex the object may become re-busied before 
this
   244   * function completes. A similar but shorter * race condition exists in 
the busy
   245   * ioctl
   246   */
   247  int
   248  i915_gem_wait_ioctl(struct drm_device *dev, void *data, struct drm_file 
*file)
   249  {
   250          struct drm_i915_gem_wait *args = data;
   251          struct drm_i915_gem_object *obj;
   252          ktime_t start;
   253          long ret;
   254  
   255          if (args->flags != 0)
   256                  return -EINVAL;
   257  
   258          obj = i915_gem_object_lookup(file, args->bo_handle);
   259          if (!obj)
   260                  return -ENOENT;
   261  
   262          start = ktime_get();
   263  
   264          ret = i915_gem_object_wait(obj,
   265                                     I915_WAIT_INTERRUPTIBLE |
   266                                     I915_WAIT_PRIORITY |
   267                                     I915_WAIT_ALL,
   268                                     to_wait_timeout(args->timeout_ns));
   269  
   270          if (args->timeout_ns > 0) {
   271                  args->timeout_ns -= ktime_to_ns(ktime_sub(ktime_get(), 
start));
   272                  if (args->timeout_ns < 0)
   273                          args->timeout_ns = 0;
   274  
   275                  /*
   276                   * Apparently ktime isn't accurate enough and 
occasionally has a
   277                   * bit of mismatch in the jiffies<->nsecs<->ktime loop. 
So patch
   278                   * things up to make the test happy. We allow up to 1 
jiffy.
   279                   *
   280                   * This is a regression from the timespec->ktime 
conversion.
   281                   */
   282                  if (ret == -ETIME && 
!nsecs_to_jiffies(args->timeout_ns))
   283                          args->timeout_ns = 0;
   284  
   285                  /* Asked to wait beyond the jiffie/scheduler precision? 
*/
   286                  if (ret == -ETIME && args->timeout_ns)
   287                          ret = -EAGAIN;
   288          }
   289  
   290          i915_gem_object_put(obj);
   291          return ret;
   292  }
   293  
   294  /**
   295   * i915_gem_object_wait_migrate - Sync an accelerated migration 
operation
   296   * @obj: The migrating object.
   297   * @flags: waiting flags. Currently supports only 
I915_WAIT_INTERRUPTIBLE.
   298   *
   299   * Wait for any pending async migration operation on the object,
   300   * whether it's explicitly (i915_gem_object_migrate()) or implicitly
   301   * (swapin, initial clearing) initiated.
   302   *
   303   * Return: 0 if successful, -ERESTARTSYS if a signal was hit during 
waiting.
   304   */
   305  int i915_gem_object_wait_migration(struct drm_i915_gem_object *obj,
   306                                     unsigned int flags)
 > 307  {

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to