On Tue, Mar 13, 2018 at 03:48:38AM +0800, kbuild test robot wrote: > 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 Sorry for the noise on a back cherry-pick for fixes. Patch removed for now so fixes trees can compile again. > 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 > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx