Hi "Thomas, Thank you for the patch! Yet something to improve: [auto build test ERROR on drm-tip/drm-tip] [cannot apply to drm-intel/for-linux-next drm-exynos/exynos-drm-next drm/drm-next tegra-drm/drm/tegra/for-next airlied/drm-next v5.15-rc7 next-20211029] [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/Prepare-error-capture-for-asynchronous-migration/20211029-162401 base: git://anongit.freedesktop.org/drm/drm-tip drm-tip config: x86_64-randconfig-a013-20211028 (attached as .config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 5db7568a6a1fcb408eb8988abdaff2a225a8eb72) 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 # https://github.com/0day-ci/linux/commit/8f96eab37bc957404f16471b6dea28c82a1b7d40 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Thomas-Hellstr-m/Prepare-error-capture-for-asynchronous-migration/20211029-162401 git checkout 8f96eab37bc957404f16471b6dea28c82a1b7d40 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): >> drivers/gpu/drm/i915/i915_request.c:116:2: error: implicit declaration of function 'i915_request_free_capture_list' [-Werror,-Wimplicit-function-declaration] i915_request_free_capture_list(fetch_and_zero(&rq->capture_list)); ^ >> drivers/gpu/drm/i915/i915_request.c:116:53: error: no member named 'capture_list' in 'struct i915_request' i915_request_free_capture_list(fetch_and_zero(&rq->capture_list)); ~~ ^ drivers/gpu/drm/i915/i915_utils.h:199:10: note: expanded from macro 'fetch_and_zero' typeof(*ptr) __T = *(ptr); \ ^~~ >> drivers/gpu/drm/i915/i915_request.c:116:53: error: no member named 'capture_list' in 'struct i915_request' i915_request_free_capture_list(fetch_and_zero(&rq->capture_list)); ~~ ^ drivers/gpu/drm/i915/i915_utils.h:199:23: note: expanded from macro 'fetch_and_zero' typeof(*ptr) __T = *(ptr); \ ^~~ >> drivers/gpu/drm/i915/i915_request.c:116:53: error: no member named 'capture_list' in 'struct i915_request' i915_request_free_capture_list(fetch_and_zero(&rq->capture_list)); ~~ ^ drivers/gpu/drm/i915/i915_utils.h:200:4: note: expanded from macro 'fetch_and_zero' *(ptr) = (typeof(*ptr))0; \ ^~~ >> drivers/gpu/drm/i915/i915_request.c:116:53: error: no member named 'capture_list' in 'struct i915_request' i915_request_free_capture_list(fetch_and_zero(&rq->capture_list)); ~~ ^ drivers/gpu/drm/i915/i915_utils.h:200:20: note: expanded from macro 'fetch_and_zero' *(ptr) = (typeof(*ptr))0; \ ^~~ >> drivers/gpu/drm/i915/i915_request.c:116:33: error: argument type 'void' is incomplete i915_request_free_capture_list(fetch_and_zero(&rq->capture_list)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/i915/i915_utils.h:198:29: note: expanded from macro 'fetch_and_zero' #define fetch_and_zero(ptr) ({ \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 6 errors generated. vim +/i915_request_free_capture_list +116 drivers/gpu/drm/i915/i915_request.c 108 109 static void i915_fence_release(struct dma_fence *fence) 110 { 111 struct i915_request *rq = to_request(fence); 112 113 GEM_BUG_ON(rq->guc_prio != GUC_PRIO_INIT && 114 rq->guc_prio != GUC_PRIO_FINI); 115 > 116 i915_request_free_capture_list(fetch_and_zero(&rq->capture_list)); 117 if (i915_vma_snapshot_present(&rq->batch_snapshot)) 118 i915_vma_snapshot_put_onstack(&rq->batch_snapshot); 119 120 /* 121 * The request is put onto a RCU freelist (i.e. the address 122 * is immediately reused), mark the fences as being freed now. 123 * Otherwise the debugobjects for the fences are only marked as 124 * freed when the slab cache itself is freed, and so we would get 125 * caught trying to reuse dead objects. 126 */ 127 i915_sw_fence_fini(&rq->submit); 128 i915_sw_fence_fini(&rq->semaphore); 129 130 /* 131 * Keep one request on each engine for reserved use under mempressure, 132 * do not use with virtual engines as this really is only needed for 133 * kernel contexts. 134 */ 135 if (!intel_engine_is_virtual(rq->engine) && 136 !cmpxchg(&rq->engine->request_pool, NULL, rq)) { 137 intel_context_put(rq->context); 138 return; 139 } 140 141 intel_context_put(rq->context); 142 143 kmem_cache_free(slab_requests, rq); 144 } 145 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org