diff options
-rw-r--r-- | drivers/gpu/drm/xe/xe_lrc.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/xe/xe_lrc.c b/drivers/gpu/drm/xe/xe_lrc.c index bd5dde28fa4b..16921605fa6d 100644 --- a/drivers/gpu/drm/xe/xe_lrc.c +++ b/drivers/gpu/drm/xe/xe_lrc.c @@ -991,6 +991,7 @@ struct bo_setup_state { /* State: */ u32 *buffer; u32 *ptr; + unsigned int written; }; static int setup_bo(struct bo_setup_state *state) @@ -1023,6 +1024,7 @@ static int setup_bo(struct bo_setup_state *state) goto fail; state->ptr += len; + state->written += len; } return 0; @@ -1039,7 +1041,7 @@ static void finish_bo(struct bo_setup_state *state) xe_map_memcpy_to(gt_to_xe(state->lrc->gt), &state->lrc->bo->vmap, state->offset, state->buffer, - (state->ptr - state->buffer) * sizeof(u32)); + state->written * sizeof(u32)); kfree(state->buffer); } @@ -1063,6 +1065,7 @@ static int setup_wa_bb(struct xe_lrc *lrc, struct xe_hw_engine *hwe) return ret; *state.ptr++ = MI_BATCH_BUFFER_END; + state.written++; finish_bo(&state); |