Message ID | 20170320145609.4898-1-chris@chris-wilson.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 20/03/2017 14:56, Chris Wilson wrote: > As intel_engine_init_global_seqno() may be called by > nop_submit_request() from inside irq context, we have to use atomic > versions of kmap/kunmap. This is rare as this requires using gen8 legacy > ringbuffer submission. > > Reported-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > Cc: Mika Kuoppala <mika.kuoppala@intel.com> > --- > drivers/gpu/drm/i915/intel_engine_cs.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c > index 4200faa520c7..ef3c62000697 100644 > --- a/drivers/gpu/drm/i915/intel_engine_cs.c > +++ b/drivers/gpu/drm/i915/intel_engine_cs.c > @@ -242,12 +242,12 @@ void intel_engine_init_global_seqno(struct intel_engine_cs *engine, u32 seqno) > void *semaphores; > > /* Semaphores are in noncoherent memory, flush to be safe */ > - semaphores = kmap(page); > + semaphores = kmap_atomic(page); > memset(semaphores + GEN8_SEMAPHORE_OFFSET(engine->id, 0), > 0, I915_NUM_ENGINES * gen8_semaphore_seqno_size); > drm_clflush_virt_range(semaphores + GEN8_SEMAPHORE_OFFSET(engine->id, 0), > I915_NUM_ENGINES * gen8_semaphore_seqno_size); > - kunmap(page); > + kunmap_atomic(semaphores); > } > > intel_write_status_page(engine, I915_GEM_HWS_INDEX, seqno); > Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Regards, Tvrtko
On Tue, Mar 21, 2017 at 08:29:07AM +0000, Tvrtko Ursulin wrote: > > On 20/03/2017 14:56, Chris Wilson wrote: > >As intel_engine_init_global_seqno() may be called by > >nop_submit_request() from inside irq context, we have to use atomic > >versions of kmap/kunmap. This is rare as this requires using gen8 legacy > >ringbuffer submission. > > > >Reported-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > >Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > >Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > >Cc: Mika Kuoppala <mika.kuoppala@intel.com> > Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Picked up this and the other gem_eio fix (drm/i915: Protect intel_engine_wakeup() for call from irq context), thanks. -Chris
diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c index 4200faa520c7..ef3c62000697 100644 --- a/drivers/gpu/drm/i915/intel_engine_cs.c +++ b/drivers/gpu/drm/i915/intel_engine_cs.c @@ -242,12 +242,12 @@ void intel_engine_init_global_seqno(struct intel_engine_cs *engine, u32 seqno) void *semaphores; /* Semaphores are in noncoherent memory, flush to be safe */ - semaphores = kmap(page); + semaphores = kmap_atomic(page); memset(semaphores + GEN8_SEMAPHORE_OFFSET(engine->id, 0), 0, I915_NUM_ENGINES * gen8_semaphore_seqno_size); drm_clflush_virt_range(semaphores + GEN8_SEMAPHORE_OFFSET(engine->id, 0), I915_NUM_ENGINES * gen8_semaphore_seqno_size); - kunmap(page); + kunmap_atomic(semaphores); } intel_write_status_page(engine, I915_GEM_HWS_INDEX, seqno);
As intel_engine_init_global_seqno() may be called by nop_submit_request() from inside irq context, we have to use atomic versions of kmap/kunmap. This is rare as this requires using gen8 legacy ringbuffer submission. Reported-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Mika Kuoppala <mika.kuoppala@intel.com> --- drivers/gpu/drm/i915/intel_engine_cs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)