CC: kbuild-all(a)lists.01.org CC: linux-kernel(a)vger.kernel.org TO: Chris Wilson CC: Matthew Auld CC: "Thomas Hellström" tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 8ced7ca3570333998ad2088d5a6275701970e28e commit: cf586021642d8017cde111b7dd1ba86224e9da51 drm/i915/gt: Pipelined page migration date: 5 months ago :::::: branch date: 5 hours ago :::::: commit date: 5 months ago config: i386-randconfig-m021-20211116 (https://download.01.org/0day-ci/archive/20211126/202111260712.wpRC6Dh0-lkp(a)intel.com/config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter New smatch warnings: drivers/gpu/drm/i915/gt/selftest_migrate.c:102 copy() error: uninitialized symbol 'rq'. drivers/gpu/drm/i915/gt/selftest_migrate.c:113 copy() error: uninitialized symbol 'vaddr'. Old smatch warnings: drivers/gpu/drm/i915/gem/i915_gem_object.h:182 __i915_gem_object_lock() error: we previously assumed 'ww' could be null (see line 171) vim +/rq +102 drivers/gpu/drm/i915/gt/selftest_migrate.c cf586021642d801 Chris Wilson 2021-06-17 31 cf586021642d801 Chris Wilson 2021-06-17 32 static int copy(struct intel_migrate *migrate, cf586021642d801 Chris Wilson 2021-06-17 33 int (*fn)(struct intel_migrate *migrate, cf586021642d801 Chris Wilson 2021-06-17 34 struct i915_gem_ww_ctx *ww, cf586021642d801 Chris Wilson 2021-06-17 35 struct drm_i915_gem_object *src, cf586021642d801 Chris Wilson 2021-06-17 36 struct drm_i915_gem_object *dst, cf586021642d801 Chris Wilson 2021-06-17 37 struct i915_request **out), cf586021642d801 Chris Wilson 2021-06-17 38 u32 sz, struct rnd_state *prng) cf586021642d801 Chris Wilson 2021-06-17 39 { cf586021642d801 Chris Wilson 2021-06-17 40 struct drm_i915_private *i915 = migrate->context->engine->i915; cf586021642d801 Chris Wilson 2021-06-17 41 struct drm_i915_gem_object *src, *dst; cf586021642d801 Chris Wilson 2021-06-17 42 struct i915_request *rq; cf586021642d801 Chris Wilson 2021-06-17 43 struct i915_gem_ww_ctx ww; cf586021642d801 Chris Wilson 2021-06-17 44 u32 *vaddr; cf586021642d801 Chris Wilson 2021-06-17 45 int err = 0; cf586021642d801 Chris Wilson 2021-06-17 46 int i; cf586021642d801 Chris Wilson 2021-06-17 47 cf586021642d801 Chris Wilson 2021-06-17 48 src = create_lmem_or_internal(i915, sz); cf586021642d801 Chris Wilson 2021-06-17 49 if (IS_ERR(src)) cf586021642d801 Chris Wilson 2021-06-17 50 return 0; cf586021642d801 Chris Wilson 2021-06-17 51 cf586021642d801 Chris Wilson 2021-06-17 52 dst = i915_gem_object_create_internal(i915, sz); cf586021642d801 Chris Wilson 2021-06-17 53 if (IS_ERR(dst)) cf586021642d801 Chris Wilson 2021-06-17 54 goto err_free_src; cf586021642d801 Chris Wilson 2021-06-17 55 cf586021642d801 Chris Wilson 2021-06-17 56 for_i915_gem_ww(&ww, err, true) { cf586021642d801 Chris Wilson 2021-06-17 57 err = i915_gem_object_lock(src, &ww); cf586021642d801 Chris Wilson 2021-06-17 58 if (err) cf586021642d801 Chris Wilson 2021-06-17 59 continue; cf586021642d801 Chris Wilson 2021-06-17 60 cf586021642d801 Chris Wilson 2021-06-17 61 err = i915_gem_object_lock(dst, &ww); cf586021642d801 Chris Wilson 2021-06-17 62 if (err) cf586021642d801 Chris Wilson 2021-06-17 63 continue; cf586021642d801 Chris Wilson 2021-06-17 64 cf586021642d801 Chris Wilson 2021-06-17 65 vaddr = i915_gem_object_pin_map(src, I915_MAP_WC); cf586021642d801 Chris Wilson 2021-06-17 66 if (IS_ERR(vaddr)) { cf586021642d801 Chris Wilson 2021-06-17 67 err = PTR_ERR(vaddr); cf586021642d801 Chris Wilson 2021-06-17 68 continue; cf586021642d801 Chris Wilson 2021-06-17 69 } cf586021642d801 Chris Wilson 2021-06-17 70 cf586021642d801 Chris Wilson 2021-06-17 71 for (i = 0; i < sz / sizeof(u32); i++) cf586021642d801 Chris Wilson 2021-06-17 72 vaddr[i] = i; cf586021642d801 Chris Wilson 2021-06-17 73 i915_gem_object_flush_map(src); cf586021642d801 Chris Wilson 2021-06-17 74 cf586021642d801 Chris Wilson 2021-06-17 75 vaddr = i915_gem_object_pin_map(dst, I915_MAP_WC); cf586021642d801 Chris Wilson 2021-06-17 76 if (IS_ERR(vaddr)) { cf586021642d801 Chris Wilson 2021-06-17 77 err = PTR_ERR(vaddr); cf586021642d801 Chris Wilson 2021-06-17 78 goto unpin_src; cf586021642d801 Chris Wilson 2021-06-17 79 } cf586021642d801 Chris Wilson 2021-06-17 80 cf586021642d801 Chris Wilson 2021-06-17 81 for (i = 0; i < sz / sizeof(u32); i++) cf586021642d801 Chris Wilson 2021-06-17 82 vaddr[i] = ~i; cf586021642d801 Chris Wilson 2021-06-17 83 i915_gem_object_flush_map(dst); cf586021642d801 Chris Wilson 2021-06-17 84 cf586021642d801 Chris Wilson 2021-06-17 85 err = fn(migrate, &ww, src, dst, &rq); cf586021642d801 Chris Wilson 2021-06-17 86 if (!err) cf586021642d801 Chris Wilson 2021-06-17 87 continue; cf586021642d801 Chris Wilson 2021-06-17 88 cf586021642d801 Chris Wilson 2021-06-17 89 if (err != -EDEADLK && err != -EINTR && err != -ERESTARTSYS) cf586021642d801 Chris Wilson 2021-06-17 90 pr_err("%ps failed, size: %u\n", fn, sz); cf586021642d801 Chris Wilson 2021-06-17 91 if (rq) { cf586021642d801 Chris Wilson 2021-06-17 92 i915_request_wait(rq, 0, HZ); cf586021642d801 Chris Wilson 2021-06-17 93 i915_request_put(rq); cf586021642d801 Chris Wilson 2021-06-17 94 } cf586021642d801 Chris Wilson 2021-06-17 95 i915_gem_object_unpin_map(dst); cf586021642d801 Chris Wilson 2021-06-17 96 unpin_src: cf586021642d801 Chris Wilson 2021-06-17 97 i915_gem_object_unpin_map(src); cf586021642d801 Chris Wilson 2021-06-17 98 } cf586021642d801 Chris Wilson 2021-06-17 99 if (err) cf586021642d801 Chris Wilson 2021-06-17 100 goto err_out; cf586021642d801 Chris Wilson 2021-06-17 101 cf586021642d801 Chris Wilson 2021-06-17 @102 if (rq) { cf586021642d801 Chris Wilson 2021-06-17 103 if (i915_request_wait(rq, 0, HZ) < 0) { cf586021642d801 Chris Wilson 2021-06-17 104 pr_err("%ps timed out, size: %u\n", fn, sz); cf586021642d801 Chris Wilson 2021-06-17 105 err = -ETIME; cf586021642d801 Chris Wilson 2021-06-17 106 } cf586021642d801 Chris Wilson 2021-06-17 107 i915_request_put(rq); cf586021642d801 Chris Wilson 2021-06-17 108 } cf586021642d801 Chris Wilson 2021-06-17 109 cf586021642d801 Chris Wilson 2021-06-17 110 for (i = 0; !err && i < sz / PAGE_SIZE; i++) { cf586021642d801 Chris Wilson 2021-06-17 111 int x = i * 1024 + i915_prandom_u32_max_state(1024, prng); cf586021642d801 Chris Wilson 2021-06-17 112 cf586021642d801 Chris Wilson 2021-06-17 @113 if (vaddr[x] != x) { cf586021642d801 Chris Wilson 2021-06-17 114 pr_err("%ps failed, size: %u, offset: %zu\n", cf586021642d801 Chris Wilson 2021-06-17 115 fn, sz, x * sizeof(u32)); cf586021642d801 Chris Wilson 2021-06-17 116 igt_hexdump(vaddr + i * 1024, 4096); cf586021642d801 Chris Wilson 2021-06-17 117 err = -EINVAL; cf586021642d801 Chris Wilson 2021-06-17 118 } cf586021642d801 Chris Wilson 2021-06-17 119 } cf586021642d801 Chris Wilson 2021-06-17 120 cf586021642d801 Chris Wilson 2021-06-17 121 i915_gem_object_unpin_map(dst); cf586021642d801 Chris Wilson 2021-06-17 122 i915_gem_object_unpin_map(src); cf586021642d801 Chris Wilson 2021-06-17 123 cf586021642d801 Chris Wilson 2021-06-17 124 err_out: cf586021642d801 Chris Wilson 2021-06-17 125 i915_gem_object_put(dst); cf586021642d801 Chris Wilson 2021-06-17 126 err_free_src: cf586021642d801 Chris Wilson 2021-06-17 127 i915_gem_object_put(src); cf586021642d801 Chris Wilson 2021-06-17 128 cf586021642d801 Chris Wilson 2021-06-17 129 return err; cf586021642d801 Chris Wilson 2021-06-17 130 } cf586021642d801 Chris Wilson 2021-06-17 131 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org