On Tue, Jun 16, 2015 at 08:25:20PM +0100, Arun Siluvery wrote: > +static int gen8_init_indirectctx_bb(struct intel_engine_cs *ring, > + uint32_t offset, > + uint32_t *num_dwords) > +{ > + uint32_t index; > + struct page *page; > + uint32_t *cmd; > + > + page = i915_gem_object_get_page(ring->wa_ctx.obj, 0); > + cmd = kmap_atomic(page); > + > + index = offset; > + > + /* FIXME: fill one cacheline with NOOPs. > + * Replace these instructions with WA > + */ > + while (index < (offset + 16)) > + cmd[index++] = MI_NOOP; > + > + /* > + * MI_BATCH_BUFFER_END is not required in Indirect ctx BB because > + * execution depends on the length specified in terms of cache lines > + * in the register CTX_RCS_INDIRECT_CTX > + */ > + > + kunmap_atomic(cmd); > + > + if (index > (PAGE_SIZE / sizeof(uint32_t))) > + return -EINVAL; Check before you GPF! You just overran the buffer and corrupted memory, if you didn't succeed in trapping a segfault. To be generic, align to the cacheline then check you have enough room for your own data. -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx