tree: git://anongit.freedesktop.org/drm-intel for-linux-next-fixes
head: ab30b9c117f37f9f33bec6b92818e2b402791f54
commit: ab30b9c117f37f9f33bec6b92818e2b402791f54 [4/4] drm/i915: Wrap
engine->schedule in RCU locks for set-wedge protection
config: i386-randconfig-x010-201810 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
git checkout ab30b9c117f37f9f33bec6b92818e2b402791f54
# save the attached .config to linux build tree
make ARCH=i386
All errors (new ones prefixed by >>):
drivers/gpu//drm/i915/i915_gem.c: In function 'i915_gem_set_wedged':
>> drivers/gpu//drm/i915/i915_gem.c:3223:8: error: 'struct drm_i915_private'
>> has no member named 'caps'; did you mean 'ips'?
i915->caps.scheduler = 0;
^~~~
ips
vim +3223 drivers/gpu//drm/i915/i915_gem.c
3206
3207 void i915_gem_set_wedged(struct drm_i915_private *i915)
3208 {
3209 struct intel_engine_cs *engine;
3210 enum intel_engine_id id;
3211
3212 /*
3213 * First, stop submission to hw, but do not yet complete
requests by
3214 * rolling the global seqno forward (since this would complete
requests
3215 * for which we haven't set the fence error to EIO yet).
3216 */
3217 for_each_engine(engine, i915, id) {
3218 i915_gem_reset_prepare_engine(engine);
3219
3220 engine->submit_request = nop_submit_request;
3221 engine->schedule = NULL;
3222 }
> 3223 i915->caps.scheduler = 0;
3224
3225 /*
3226 * Make sure no one is running the old callback before we
proceed with
3227 * cancelling requests and resetting the completion tracking.
Otherwise
3228 * we might submit a request to the hardware which never
completes.
3229 */
3230 synchronize_rcu();
3231
3232 for_each_engine(engine, i915, id) {
3233 /* Mark all executing requests as skipped */
3234 engine->cancel_requests(engine);
3235
3236 /*
3237 * Only once we've force-cancelled all in-flight
requests can we
3238 * start to complete all requests.
3239 */
3240 engine->submit_request = nop_complete_submit_request;
3241 }
3242
3243 /*
3244 * Make sure no request can slip through without getting
completed by
3245 * either this call here to intel_engine_init_global_seqno, or
the one
3246 * in nop_complete_submit_request.
3247 */
3248 synchronize_rcu();
3249
3250 for_each_engine(engine, i915, id) {
3251 unsigned long flags;
3252
3253 /* Mark all pending requests as complete so that any
concurrent
3254 * (lockless) lookup doesn't try and wait upon the
request as we
3255 * reset it.
3256 */
3257 spin_lock_irqsave(&engine->timeline->lock, flags);
3258 intel_engine_init_global_seqno(engine,
3259
intel_engine_last_submit(engine));
3260 spin_unlock_irqrestore(&engine->timeline->lock, flags);
3261
3262 i915_gem_reset_finish_engine(engine);
3263 }
3264
3265 set_bit(I915_WEDGED, &i915->gpu_error.flags);
3266 wake_up_all(&i915->gpu_error.reset_queue);
3267 }
3268
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
.config.gz
Description: application/gzip
_______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
