Hi Matthew,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on drm-intel/for-linux-next]
[also build test WARNING on v4.19 next-20181029]
[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/Matthew-Auld/drm-i915-selftest-fix-64K-alignment-in-igt_write_huge/20181030-034107
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
config: i386-allmodconfig (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All warnings (new ones prefixed by >>):

   In file included from include/linux/list.h:9:0,
                    from include/linux/agp_backend.h:33,
                    from include/drm/drmP.h:35,
                    from drivers/gpu/drm/i915/i915_gem.c:28:
   drivers/gpu/drm/i915/selftests/huge_pages.c: In function 'igt_write_huge':
   include/linux/kernel.h:845:29: warning: comparison of distinct pointer types 
lacks a cast
      (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
                                ^
   include/linux/kernel.h:859:4: note: in expansion of macro '__typecheck'
      (__typecheck(x, y) && __no_side_effects(x, y))
       ^~~~~~~~~~~
   include/linux/kernel.h:869:24: note: in expansion of macro '__safe_cmp'
     __builtin_choose_expr(__safe_cmp(x, y), \
                           ^~~~~~~~~~
   include/linux/kernel.h:885:19: note: in expansion of macro '__careful_cmp'
    #define max(x, y) __careful_cmp(x, y, >)
                      ^~~~~~~~~~~~~
>> drivers/gpu/drm/i915/selftests/huge_pages.c:1132:15: note: in expansion of 
>> macro 'max'
      alignment = max(alignment, I915_GTT_PAGE_SIZE_2M);
                  ^~~

vim +/max +1132 drivers/gpu/drm/i915/selftests/huge_pages.c

  1106  
  1107  static int igt_write_huge(struct i915_gem_context *ctx,
  1108                            struct drm_i915_gem_object *obj)
  1109  {
  1110          struct drm_i915_private *i915 = to_i915(obj->base.dev);
  1111          struct i915_address_space *vm =
  1112                  ctx->ppgtt ? &ctx->ppgtt->vm : &i915->ggtt.vm;
  1113          static struct intel_engine_cs *engines[I915_NUM_ENGINES];
  1114          struct intel_engine_cs *engine;
  1115          I915_RND_STATE(prng);
  1116          IGT_TIMEOUT(end_time);
  1117          unsigned int id;
  1118          u64 alignment;
  1119          u64 max;
  1120          u64 num;
  1121          u64 size;
  1122          int *order;
  1123          int i, n;
  1124          int err = 0;
  1125  
  1126          GEM_BUG_ON(!i915_gem_object_has_pinned_pages(obj));
  1127  
  1128          size = obj->base.size;
  1129          alignment = rounddown_pow_of_two(obj->mm.page_sizes.sg);
  1130          if (obj->mm.page_sizes.sg & I915_GTT_PAGE_SIZE_64K) {
  1131                  size = round_up(size, I915_GTT_PAGE_SIZE_2M);
> 1132                  alignment = max(alignment, I915_GTT_PAGE_SIZE_2M);
  1133          }
  1134  
  1135          max = div_u64((vm->total - size), alignment);
  1136  
  1137          n = 0;
  1138          for_each_engine(engine, i915, id) {
  1139                  if (!intel_engine_can_store_dword(engine)) {
  1140                          pr_info("store-dword-imm not supported on 
engine=%u\n",
  1141                                  id);
  1142                          continue;
  1143                  }
  1144                  engines[n++] = engine;
  1145          }
  1146  
  1147          if (!n)
  1148                  return 0;
  1149  
  1150          /*
  1151           * To keep things interesting when alternating between engines 
in our
  1152           * randomized order, lets also make feeding to the same engine 
a few
  1153           * times in succession a possibility by enlarging the 
permutation array.
  1154           */
  1155          order = i915_random_order(n * I915_NUM_ENGINES, &prng);
  1156          if (!order)
  1157                  return -ENOMEM;
  1158  
  1159          /*
  1160           * Try various offsets in an ascending/descending fashion until 
we
  1161           * timeout -- we want to avoid issues hidden by effectively 
always using
  1162           * offset = 0.
  1163           */
  1164          i = 0;
  1165          for_each_prime_number_from(num, 0, max) {
  1166                  u64 offset_low = num * alignment;
  1167                  u64 offset_high = (max - num) * alignment;
  1168                  u32 dword = offset_in_page(num) / 4;
  1169  
  1170                  engine = engines[order[i] % n];
  1171                  i = (i + 1) % (n * I915_NUM_ENGINES);
  1172  
  1173                  err = __igt_write_huge(ctx, engine, obj, size, 
offset_low,
  1174                                         dword, num + 1);
  1175                  if (err)
  1176                          break;
  1177  
  1178                  err = __igt_write_huge(ctx, engine, obj, size, 
offset_high,
  1179                                         dword, num + 1);
  1180                  if (err)
  1181                          break;
  1182  
  1183                  if (igt_timeout(end_time,
  1184                                  "%s timed out on engine=%u, 
offset_low=%llx offset_high=%llx, max_page_size=%lx\n",
  1185                                  __func__, engine->id, offset_low, 
offset_high,
  1186                                  
rounddown_pow_of_two(obj->mm.page_sizes.sg)))
  1187                          break;
  1188          }
  1189  
  1190          kfree(order);
  1191  
  1192          return err;
  1193  }
  1194  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

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