Re: [Intel-gfx] [PATCH v2 2/3] drm/i915: Update error capture code to avoid using the current vma state

kernel test robot
2021-10-28T08:46:38Z

[-- Attachment #1: Type: text/plain, Size: 5478 bytes --]

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-20211027]
[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/20211027-185501
base: git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: i386-randconfig-s001-20211027 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://github.com/0day-ci/linux/commit/565a7c79aff3eb84fffc704407b376e939360857
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/20211027-185501
git checkout 565a7c79aff3eb84fffc704407b376e939360857
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386

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

All errors (new ones prefixed by >>):

drivers/gpu/drm/i915/i915_request.c: In function 'i915_fence_release':
>> drivers/gpu/drm/i915/i915_request.c:116:2: error: implicit declaration of function 'i915_request_free_capture_list' [-Werror=implicit-function-declaration]
116 | i915_request_free_capture_list(fetch_and_zero(&rq->capture_list));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/gpu/drm/i915/i915_active_types.h:18,
from drivers/gpu/drm/i915/gt/intel_context_types.h:15,
from drivers/gpu/drm/i915/gem/i915_gem_context_types.h:20,
from drivers/gpu/drm/i915/gem/i915_gem_context.h:10,
from drivers/gpu/drm/i915/i915_request.c:33:
>> drivers/gpu/drm/i915/i915_request.c:116:51: error: 'struct i915_request' has no member named 'capture_list'
116 | i915_request_free_capture_list(fetch_and_zero(&rq->capture_list));
| ^~
drivers/gpu/drm/i915/i915_utils.h:199:10: note: in definition of macro 'fetch_and_zero'
199 | typeof(*ptr) __T = *(ptr); \
| ^~~
>> drivers/gpu/drm/i915/i915_request.c:116:51: error: 'struct i915_request' has no member named 'capture_list'
116 | i915_request_free_capture_list(fetch_and_zero(&rq->capture_list));
| ^~
drivers/gpu/drm/i915/i915_utils.h:199:23: note: in definition of macro 'fetch_and_zero'
199 | typeof(*ptr) __T = *(ptr); \
| ^~~
>> drivers/gpu/drm/i915/i915_request.c:116:51: error: 'struct i915_request' has no member named 'capture_list'
116 | i915_request_free_capture_list(fetch_and_zero(&rq->capture_list));
| ^~
drivers/gpu/drm/i915/i915_utils.h:200:4: note: in definition of macro 'fetch_and_zero'
200 | *(ptr) = (typeof(*ptr))0; \
| ^~~
>> drivers/gpu/drm/i915/i915_request.c:116:51: error: 'struct i915_request' has no member named 'capture_list'
116 | i915_request_free_capture_list(fetch_and_zero(&rq->capture_list));
| ^~
drivers/gpu/drm/i915/i915_utils.h:200:20: note: in definition of macro 'fetch_and_zero'
200 | *(ptr) = (typeof(*ptr))0; \
| ^~~
cc1: some warnings being treated as errors

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

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 35838 bytes --]