indirect_ctx
} indirect_ctx, per_ctx;
GEM_BUG_ON(engine->wa_ctx.indirect_ctx.size);
&wa_ctx->indirect_ctx, &wa_ctx->per_ctx
if (wa_ctx->indirect_ctx.size) {
wa_ctx->indirect_ctx.offset,
wa_ctx->indirect_ctx.size);
if (WARN_ON(!IS_ALIGNED(wa_ctx->indirect_ctx.guest_gma,
ring_tail = wa_ctx->indirect_ctx.size + 3 * sizeof(u32);
ring_size = round_up(wa_ctx->indirect_ctx.size + CACHELINE_BYTES,
gma_head = wa_ctx->indirect_ctx.guest_gma;
gma_tail = wa_ctx->indirect_ctx.guest_gma + ring_tail;
s.ring_start = wa_ctx->indirect_ctx.guest_gma;
s.rb_va = wa_ctx->indirect_ctx.shadow_va;
wa_ctx->indirect_ctx.guest_gma, ring_size);
int ctx_size = wa_ctx->indirect_ctx.size;
unsigned long guest_gma = wa_ctx->indirect_ctx.guest_gma;
wa_ctx->indirect_ctx.obj = obj;
wa_ctx->indirect_ctx.shadow_va = map;
bb_start_sva = (unsigned char *)wa_ctx->indirect_ctx.shadow_va +
wa_ctx->indirect_ctx.size;
if (wa_ctx->indirect_ctx.size == 0)
u32 head, tail, start, ctl, ctx_ctl, per_ctx, indirect_ctx;
RING_CTX_OFF(rcs_indirect_ctx.val), &indirect_ctx, 4);
workload->wa_ctx.indirect_ctx.guest_gma =
indirect_ctx & INDIRECT_CTX_ADDR_MASK;
workload->wa_ctx.indirect_ctx.size =
(indirect_ctx & INDIRECT_CTX_SIZE_MASK) *
if (workload->wa_ctx.indirect_ctx.size != 0) {
workload->wa_ctx.indirect_ctx.guest_gma,
workload->wa_ctx.indirect_ctx.size)) {
workload->wa_ctx.indirect_ctx.guest_gma);
if (!wa_ctx->indirect_ctx.obj)
i915_gem_object_lock(wa_ctx->indirect_ctx.obj, NULL);
i915_gem_object_unpin_map(wa_ctx->indirect_ctx.obj);
i915_gem_object_unlock(wa_ctx->indirect_ctx.obj);
i915_gem_object_put(wa_ctx->indirect_ctx.obj);
wa_ctx->indirect_ctx.obj = NULL;
wa_ctx->indirect_ctx.shadow_va = NULL;
workload->wa_ctx.indirect_ctx.size) {
(~INDIRECT_CTX_ADDR_MASK)) | wa_ctx->indirect_ctx.shadow_gma;
(unsigned char *)wa_ctx->indirect_ctx.shadow_va +
wa_ctx->indirect_ctx.size;
if (wa_ctx->indirect_ctx.size == 0)
i915_gem_object_lock(wa_ctx->indirect_ctx.obj, &ww);
vma = i915_gem_object_ggtt_pin_ww(wa_ctx->indirect_ctx.obj, &ww, NULL,
wa_ctx->indirect_ctx.shadow_gma = i915_ggtt_offset(vma);
struct shadow_indirect_ctx indirect_ctx;
struct indirect_ctx *ctx;
static int indirect_clear_cmd(struct indirect_ctx *ctx)
struct indirect_ctx *ctx = context;
struct indirect_ctx *ctx = context;