block/bsg-lib.c
101
hdr->device_status = job->result & 0xff;
block/bsg-lib.c
102
hdr->transport_status = host_byte(job->result);
block/bsg-lib.c
109
if (job->result < 0) {
block/bsg-lib.c
111
job->reply_len = sizeof(u32);
block/bsg-lib.c
112
ret = job->result;
block/bsg-lib.c
115
if (job->reply_len && hdr->response) {
block/bsg-lib.c
116
int len = min(hdr->max_response_len, job->reply_len);
block/bsg-lib.c
118
if (copy_to_user(uptr64(hdr->response), job->reply, len))
block/bsg-lib.c
127
if (job->bidi_rq) {
block/bsg-lib.c
128
unsigned int rsp_len = job->reply_payload.payload_len;
block/bsg-lib.c
130
if (WARN_ON(job->reply_payload_rcv_len > rsp_len))
block/bsg-lib.c
133
hdr->din_resid = rsp_len - job->reply_payload_rcv_len;
block/bsg-lib.c
140
if (job->bidi_rq)
block/bsg-lib.c
141
blk_rq_unmap_user(job->bidi_bio);
block/bsg-lib.c
143
if (job->bidi_rq)
block/bsg-lib.c
144
blk_mq_free_request(job->bidi_rq);
block/bsg-lib.c
146
kfree(job->request);
block/bsg-lib.c
158
struct bsg_job *job = container_of(kref, struct bsg_job, kref);
block/bsg-lib.c
159
struct request *rq = blk_mq_rq_from_pdu(job);
block/bsg-lib.c
161
put_device(job->dev); /* release reference for the request */
block/bsg-lib.c
163
kfree(job->request_payload.sg_list);
block/bsg-lib.c
164
kfree(job->reply_payload.sg_list);
block/bsg-lib.c
169
void bsg_job_put(struct bsg_job *job)
block/bsg-lib.c
171
kref_put(&job->kref, bsg_teardown_job);
block/bsg-lib.c
175
int bsg_job_get(struct bsg_job *job)
block/bsg-lib.c
177
return kref_get_unless_zero(&job->kref);
block/bsg-lib.c
189
void bsg_job_done(struct bsg_job *job, int result,
block/bsg-lib.c
192
struct request *rq = blk_mq_rq_from_pdu(job);
block/bsg-lib.c
194
job->result = result;
block/bsg-lib.c
195
job->reply_payload_rcv_len = reply_payload_rcv_len;
block/bsg-lib.c
207
struct bsg_job *job = blk_mq_rq_to_pdu(rq);
block/bsg-lib.c
209
bsg_job_put(job);
block/bsg-lib.c
234
struct bsg_job *job = blk_mq_rq_to_pdu(req);
block/bsg-lib.c
237
job->timeout = req->timeout;
block/bsg-lib.c
240
ret = bsg_map_buffer(&job->request_payload, req);
block/bsg-lib.c
244
if (job->bidi_rq) {
block/bsg-lib.c
245
ret = bsg_map_buffer(&job->reply_payload, job->bidi_rq);
block/bsg-lib.c
249
job->dev = dev;
block/bsg-lib.c
251
get_device(job->dev);
block/bsg-lib.c
252
kref_init(&job->kref);
block/bsg-lib.c
256
kfree(job->request_payload.sg_list);
block/bsg-lib.c
258
job->result = -ENOMEM;
block/bsg-lib.c
304
struct bsg_job *job = blk_mq_rq_to_pdu(req);
block/bsg-lib.c
306
job->reply = kzalloc(SCSI_SENSE_BUFFERSIZE, GFP_KERNEL);
block/bsg-lib.c
307
if (!job->reply)
block/bsg-lib.c
31
struct bsg_job *job;
block/bsg-lib.c
315
struct bsg_job *job = blk_mq_rq_to_pdu(req);
block/bsg-lib.c
317
kfree(job->reply);
block/bsg-lib.c
49
job = blk_mq_rq_to_pdu(rq);
block/bsg-lib.c
50
reply = job->reply;
block/bsg-lib.c
51
memset(job, 0, sizeof(*job));
block/bsg-lib.c
52
job->reply = reply;
block/bsg-lib.c
53
job->reply_len = SCSI_SENSE_BUFFERSIZE;
block/bsg-lib.c
54
job->dd_data = job + 1;
block/bsg-lib.c
56
job->request_len = hdr->request_len;
block/bsg-lib.c
57
job->request = memdup_user(uptr64(hdr->request), hdr->request_len);
block/bsg-lib.c
58
if (IS_ERR(job->request)) {
block/bsg-lib.c
59
ret = PTR_ERR(job->request);
block/bsg-lib.c
64
job->bidi_rq = blk_mq_alloc_request(rq->q, REQ_OP_DRV_IN, 0);
block/bsg-lib.c
65
if (IS_ERR(job->bidi_rq)) {
block/bsg-lib.c
66
ret = PTR_ERR(job->bidi_rq);
block/bsg-lib.c
70
ret = blk_rq_map_user(rq->q, job->bidi_rq, NULL,
block/bsg-lib.c
76
job->bidi_bio = job->bidi_rq->bio;
block/bsg-lib.c
78
job->bidi_rq = NULL;
block/bsg-lib.c
79
job->bidi_bio = NULL;
drivers/accel/amdxdna/aie2_ctx.c
1113
int aie2_cmd_submit(struct amdxdna_hwctx *hwctx, struct amdxdna_sched_job *job, u64 *seq)
drivers/accel/amdxdna/aie2_ctx.c
1135
ret = drm_sched_job_init(&job->base, &hwctx->priv->entity, 1, hwctx,
drivers/accel/amdxdna/aie2_ctx.c
1143
ret = drm_gem_lock_reservations(job->bos, job->bo_cnt, &acquire_ctx);
drivers/accel/amdxdna/aie2_ctx.c
1149
for (i = 0; i < job->bo_cnt; i++) {
drivers/accel/amdxdna/aie2_ctx.c
1150
ret = dma_resv_reserve_fences(job->bos[i]->resv, 1);
drivers/accel/amdxdna/aie2_ctx.c
1153
drm_gem_unlock_reservations(job->bos, job->bo_cnt, &acquire_ctx);
drivers/accel/amdxdna/aie2_ctx.c
1159
for (i = 0; i < job->bo_cnt; i++) {
drivers/accel/amdxdna/aie2_ctx.c
1160
abo = to_xdna_obj(job->bos[i]);
drivers/accel/amdxdna/aie2_ctx.c
1163
drm_gem_unlock_reservations(job->bos, job->bo_cnt, &acquire_ctx);
drivers/accel/amdxdna/aie2_ctx.c
1180
drm_sched_job_arm(&job->base);
drivers/accel/amdxdna/aie2_ctx.c
1181
job->out_fence = dma_fence_get(&job->base.s_fence->finished);
drivers/accel/amdxdna/aie2_ctx.c
1182
for (i = 0; i < job->bo_cnt; i++)
drivers/accel/amdxdna/aie2_ctx.c
1183
dma_resv_add_fence(job->bos[i]->resv, job->out_fence, DMA_RESV_USAGE_WRITE);
drivers/accel/amdxdna/aie2_ctx.c
1184
job->seq = hwctx->priv->seq++;
drivers/accel/amdxdna/aie2_ctx.c
1185
kref_get(&job->refcnt);
drivers/accel/amdxdna/aie2_ctx.c
1186
if (job->drv_cmd)
drivers/accel/amdxdna/aie2_ctx.c
1187
kref_get(&job->drv_cmd->refcnt);
drivers/accel/amdxdna/aie2_ctx.c
1188
drm_sched_entity_push_job(&job->base);
drivers/accel/amdxdna/aie2_ctx.c
1190
*seq = job->seq;
drivers/accel/amdxdna/aie2_ctx.c
1191
drm_syncobj_add_point(hwctx->priv->syncobj, chain, job->out_fence, *seq);
drivers/accel/amdxdna/aie2_ctx.c
1195
drm_gem_unlock_reservations(job->bos, job->bo_cnt, &acquire_ctx);
drivers/accel/amdxdna/aie2_ctx.c
1197
aie2_job_put(job);
drivers/accel/amdxdna/aie2_ctx.c
1203
drm_sched_job_cleanup(&job->base);
drivers/accel/amdxdna/aie2_ctx.c
1208
job->job_done = true;
drivers/accel/amdxdna/aie2_ctx.c
223
aie2_sched_notify(struct amdxdna_sched_job *job)
drivers/accel/amdxdna/aie2_ctx.c
225
struct dma_fence *fence = job->fence;
drivers/accel/amdxdna/aie2_ctx.c
227
trace_xdna_job(&job->base, job->hwctx->name, "signaling fence",
drivers/accel/amdxdna/aie2_ctx.c
228
job->seq, job->drv_cmd ? job->drv_cmd->opcode : DEFAULT_IO);
drivers/accel/amdxdna/aie2_ctx.c
230
aie2_tdr_signal(job->hwctx->client->xdna);
drivers/accel/amdxdna/aie2_ctx.c
231
job->hwctx->priv->completed++;
drivers/accel/amdxdna/aie2_ctx.c
234
up(&job->hwctx->priv->job_sem);
drivers/accel/amdxdna/aie2_ctx.c
235
job->job_done = true;
drivers/accel/amdxdna/aie2_ctx.c
236
mmput_async(job->mm);
drivers/accel/amdxdna/aie2_ctx.c
237
aie2_job_put(job);
drivers/accel/amdxdna/aie2_ctx.c
240
static void aie2_set_cmd_timeout(struct amdxdna_sched_job *job)
drivers/accel/amdxdna/aie2_ctx.c
243
struct amdxdna_dev *xdna = job->hwctx->client->xdna;
drivers/accel/amdxdna/aie2_ctx.c
244
struct amdxdna_gem_obj *cmd_abo = job->cmd_bo;
drivers/accel/amdxdna/aie2_ctx.c
245
struct app_health_report *report = job->aie2_job_health;
drivers/accel/amdxdna/aie2_ctx.c
280
amdxdna_cmd_set_error(cmd_abo, job, fail_cmd_idx, ERT_CMD_STATE_TIMEOUT,
drivers/accel/amdxdna/aie2_ctx.c
287
struct amdxdna_sched_job *job = handle;
drivers/accel/amdxdna/aie2_ctx.c
292
cmd_abo = job->cmd_bo;
drivers/accel/amdxdna/aie2_ctx.c
294
if (unlikely(job->job_timeout)) {
drivers/accel/amdxdna/aie2_ctx.c
295
aie2_set_cmd_timeout(job);
drivers/accel/amdxdna/aie2_ctx.c
301
amdxdna_cmd_set_error(cmd_abo, job, 0, ERT_CMD_STATE_ABORT, NULL, 0);
drivers/accel/amdxdna/aie2_ctx.c
307
XDNA_DBG(job->hwctx->client->xdna, "Resp status 0x%x", status);
drivers/accel/amdxdna/aie2_ctx.c
311
amdxdna_cmd_set_error(cmd_abo, job, 0, ERT_CMD_STATE_ERROR, NULL, 0);
drivers/accel/amdxdna/aie2_ctx.c
314
aie2_sched_notify(job);
drivers/accel/amdxdna/aie2_ctx.c
321
struct amdxdna_sched_job *job = handle;
drivers/accel/amdxdna/aie2_ctx.c
325
job->drv_cmd->result = U32_MAX;
drivers/accel/amdxdna/aie2_ctx.c
328
job->drv_cmd->result = readl(data);
drivers/accel/amdxdna/aie2_ctx.c
331
aie2_sched_notify(job);
drivers/accel/amdxdna/aie2_ctx.c
338
struct amdxdna_sched_job *job = handle;
drivers/accel/amdxdna/aie2_ctx.c
346
cmd_abo = job->cmd_bo;
drivers/accel/amdxdna/aie2_ctx.c
348
if (unlikely(job->job_timeout)) {
drivers/accel/amdxdna/aie2_ctx.c
349
aie2_set_cmd_timeout(job);
drivers/accel/amdxdna/aie2_ctx.c
355
amdxdna_cmd_set_error(cmd_abo, job, 0, ERT_CMD_STATE_ABORT, NULL, 0);
drivers/accel/amdxdna/aie2_ctx.c
361
xdna = job->hwctx->client->xdna;
drivers/accel/amdxdna/aie2_ctx.c
375
amdxdna_cmd_set_error(cmd_abo, job, fail_cmd_idx, ERT_CMD_STATE_ABORT, NULL, 0);
drivers/accel/amdxdna/aie2_ctx.c
378
amdxdna_cmd_set_error(cmd_abo, job, fail_cmd_idx, ERT_CMD_STATE_ERROR, NULL, 0);
drivers/accel/amdxdna/aie2_ctx.c
382
aie2_sched_notify(job);
drivers/accel/amdxdna/aie2_ctx.c
389
struct amdxdna_sched_job *job = drm_job_to_xdna_job(sched_job);
drivers/accel/amdxdna/aie2_ctx.c
390
struct amdxdna_gem_obj *cmd_abo = job->cmd_bo;
drivers/accel/amdxdna/aie2_ctx.c
391
struct amdxdna_hwctx *hwctx = job->hwctx;
drivers/accel/amdxdna/aie2_ctx.c
396
job->seq, job->drv_cmd ? job->drv_cmd->opcode : DEFAULT_IO);
drivers/accel/amdxdna/aie2_ctx.c
401
if (!mmget_not_zero(job->mm))
drivers/accel/amdxdna/aie2_ctx.c
404
kref_get(&job->refcnt);
drivers/accel/amdxdna/aie2_ctx.c
405
fence = dma_fence_get(job->fence);
drivers/accel/amdxdna/aie2_ctx.c
407
if (job->drv_cmd) {
drivers/accel/amdxdna/aie2_ctx.c
408
switch (job->drv_cmd->opcode) {
drivers/accel/amdxdna/aie2_ctx.c
410
ret = aie2_sync_bo(hwctx, job, aie2_sched_drvcmd_resp_handler);
drivers/accel/amdxdna/aie2_ctx.c
414
ret = aie2_config_debug_bo(hwctx, job, aie2_sched_drvcmd_resp_handler);
drivers/accel/amdxdna/aie2_ctx.c
426
ret = aie2_cmdlist_multi_execbuf(hwctx, job, aie2_sched_cmdlist_resp_handler);
drivers/accel/amdxdna/aie2_ctx.c
428
ret = aie2_cmdlist_single_execbuf(hwctx, job, aie2_sched_cmdlist_resp_handler);
drivers/accel/amdxdna/aie2_ctx.c
430
ret = aie2_execbuf(hwctx, job, aie2_sched_resp_handler);
drivers/accel/amdxdna/aie2_ctx.c
434
dma_fence_put(job->fence);
drivers/accel/amdxdna/aie2_ctx.c
435
aie2_job_put(job);
drivers/accel/amdxdna/aie2_ctx.c
436
mmput(job->mm);
drivers/accel/amdxdna/aie2_ctx.c
448
job->seq, job->drv_cmd ? job->drv_cmd->opcode : DEFAULT_IO);
drivers/accel/amdxdna/aie2_ctx.c
455
struct amdxdna_sched_job *job = drm_job_to_xdna_job(sched_job);
drivers/accel/amdxdna/aie2_ctx.c
456
struct amdxdna_hwctx *hwctx = job->hwctx;
drivers/accel/amdxdna/aie2_ctx.c
460
job->seq, DEFAULT_IO);
drivers/accel/amdxdna/aie2_ctx.c
461
if (!job->job_done)
drivers/accel/amdxdna/aie2_ctx.c
465
aie2_job_put(job);
drivers/accel/amdxdna/aie2_ctx.c
471
struct amdxdna_sched_job *job = drm_job_to_xdna_job(sched_job);
drivers/accel/amdxdna/aie2_ctx.c
472
struct amdxdna_hwctx *hwctx = job->hwctx;
drivers/accel/amdxdna/aie2_ctx.c
492
job->aie2_job_health = report;
drivers/accel/amdxdna/aie2_ctx.c
495
job->job_timeout = true;
drivers/accel/amdxdna/aie2_ctx.c
78
struct amdxdna_sched_job *job;
drivers/accel/amdxdna/aie2_ctx.c
80
job = container_of(ref, struct amdxdna_sched_job, refcnt);
drivers/accel/amdxdna/aie2_ctx.c
82
amdxdna_sched_job_cleanup(job);
drivers/accel/amdxdna/aie2_ctx.c
83
atomic64_inc(&job->hwctx->job_free_cnt);
drivers/accel/amdxdna/aie2_ctx.c
84
wake_up(&job->hwctx->priv->job_free_wq);
drivers/accel/amdxdna/aie2_ctx.c
85
if (job->out_fence)
drivers/accel/amdxdna/aie2_ctx.c
86
dma_fence_put(job->out_fence);
drivers/accel/amdxdna/aie2_ctx.c
87
if (job->drv_cmd)
drivers/accel/amdxdna/aie2_ctx.c
88
aie2_cmd_put(job->drv_cmd);
drivers/accel/amdxdna/aie2_ctx.c
89
kfree(job->aie2_job_health);
drivers/accel/amdxdna/aie2_ctx.c
90
kfree(job);
drivers/accel/amdxdna/aie2_ctx.c
93
static void aie2_job_put(struct amdxdna_sched_job *job)
drivers/accel/amdxdna/aie2_ctx.c
95
kref_put(&job->refcnt, aie2_job_release);
drivers/accel/amdxdna/aie2_message.c
1035
msg.handle = job;
drivers/accel/amdxdna/aie2_message.c
1051
struct amdxdna_sched_job *job,
drivers/accel/amdxdna/aie2_message.c
1054
struct amdxdna_gem_obj *cmdbuf_abo = aie2_cmdlist_get_cmd_buf(job);
drivers/accel/amdxdna/aie2_message.c
1057
struct amdxdna_gem_obj *cmd_abo = job->cmd_bo;
drivers/accel/amdxdna/aie2_message.c
1082
msg.handle = job;
drivers/accel/amdxdna/aie2_message.c
1097
int aie2_sync_bo(struct amdxdna_hwctx *hwctx, struct amdxdna_sched_job *job,
drivers/accel/amdxdna/aie2_message.c
1101
struct amdxdna_gem_obj *abo = to_xdna_obj(job->bos[0]);
drivers/accel/amdxdna/aie2_message.c
1118
msg.handle = job;
drivers/accel/amdxdna/aie2_message.c
1133
int aie2_config_debug_bo(struct amdxdna_hwctx *hwctx, struct amdxdna_sched_job *job,
drivers/accel/amdxdna/aie2_message.c
1137
struct amdxdna_gem_obj *abo = to_xdna_obj(job->bos[0]);
drivers/accel/amdxdna/aie2_message.c
1142
if (job->drv_cmd->opcode == ATTACH_DEBUG_BO)
drivers/accel/amdxdna/aie2_message.c
1153
msg.handle = job;
drivers/accel/amdxdna/aie2_message.c
922
aie2_cmdlist_get_cmd_buf(struct amdxdna_sched_job *job)
drivers/accel/amdxdna/aie2_message.c
924
int idx = get_job_idx(job->seq);
drivers/accel/amdxdna/aie2_message.c
926
return job->hwctx->priv->cmd_buf[idx];
drivers/accel/amdxdna/aie2_message.c
929
int aie2_execbuf(struct amdxdna_hwctx *hwctx, struct amdxdna_sched_job *job,
drivers/accel/amdxdna/aie2_message.c
934
struct amdxdna_gem_obj *cmd_abo = job->cmd_bo;
drivers/accel/amdxdna/aie2_message.c
946
msg.handle = job;
drivers/accel/amdxdna/aie2_message.c
962
struct amdxdna_sched_job *job,
drivers/accel/amdxdna/aie2_message.c
965
struct amdxdna_gem_obj *cmdbuf_abo = aie2_cmdlist_get_cmd_buf(job);
drivers/accel/amdxdna/aie2_message.c
968
struct amdxdna_gem_obj *cmd_abo = job->cmd_bo;
drivers/accel/amdxdna/aie2_pci.h
280
int aie2_execbuf(struct amdxdna_hwctx *hwctx, struct amdxdna_sched_job *job,
drivers/accel/amdxdna/aie2_pci.h
283
struct amdxdna_sched_job *job,
drivers/accel/amdxdna/aie2_pci.h
286
struct amdxdna_sched_job *job,
drivers/accel/amdxdna/aie2_pci.h
288
int aie2_sync_bo(struct amdxdna_hwctx *hwctx, struct amdxdna_sched_job *job,
drivers/accel/amdxdna/aie2_pci.h
290
int aie2_config_debug_bo(struct amdxdna_hwctx *hwctx, struct amdxdna_sched_job *job,
drivers/accel/amdxdna/aie2_pci.h
301
int aie2_cmd_submit(struct amdxdna_hwctx *hwctx, struct amdxdna_sched_job *job, u64 *seq);
drivers/accel/amdxdna/amdxdna_ctx.c
165
struct amdxdna_sched_job *job, u32 cmd_idx,
drivers/accel/amdxdna/amdxdna_ctx.c
169
struct amdxdna_client *client = job->hwctx->client;
drivers/accel/amdxdna/amdxdna_ctx.c
517
amdxdna_arg_bos_put(struct amdxdna_sched_job *job)
drivers/accel/amdxdna/amdxdna_ctx.c
521
for (i = 0; i < job->bo_cnt; i++) {
drivers/accel/amdxdna/amdxdna_ctx.c
522
if (!job->bos[i])
drivers/accel/amdxdna/amdxdna_ctx.c
524
drm_gem_object_put(job->bos[i]);
drivers/accel/amdxdna/amdxdna_ctx.c
530
struct amdxdna_sched_job *job,
drivers/accel/amdxdna/amdxdna_ctx.c
536
job->bo_cnt = bo_cnt;
drivers/accel/amdxdna/amdxdna_ctx.c
537
for (i = 0; i < job->bo_cnt; i++) {
drivers/accel/amdxdna/amdxdna_ctx.c
550
job->bos[i] = gobj;
drivers/accel/amdxdna/amdxdna_ctx.c
563
job->bos[i] = gobj;
drivers/accel/amdxdna/amdxdna_ctx.c
569
amdxdna_arg_bos_put(job);
drivers/accel/amdxdna/amdxdna_ctx.c
573
void amdxdna_sched_job_cleanup(struct amdxdna_sched_job *job)
drivers/accel/amdxdna/amdxdna_ctx.c
575
trace_amdxdna_debug_point(job->hwctx->name, job->seq, "job release");
drivers/accel/amdxdna/amdxdna_ctx.c
576
amdxdna_pm_suspend_put(job->hwctx->client->xdna);
drivers/accel/amdxdna/amdxdna_ctx.c
577
amdxdna_arg_bos_put(job);
drivers/accel/amdxdna/amdxdna_ctx.c
578
amdxdna_gem_put_obj(job->cmd_bo);
drivers/accel/amdxdna/amdxdna_ctx.c
579
dma_fence_put(job->fence);
drivers/accel/amdxdna/amdxdna_ctx.c
580
mmdrop(job->mm);
drivers/accel/amdxdna/amdxdna_ctx.c
589
struct amdxdna_sched_job *job;
drivers/accel/amdxdna/amdxdna_ctx.c
598
job = kzalloc_flex(*job, bos, arg_bo_cnt);
drivers/accel/amdxdna/amdxdna_ctx.c
599
if (!job)
drivers/accel/amdxdna/amdxdna_ctx.c
602
job->drv_cmd = drv_cmd;
drivers/accel/amdxdna/amdxdna_ctx.c
605
job->cmd_bo = amdxdna_gem_get_obj(client, cmd_bo_hdl, AMDXDNA_BO_SHARE);
drivers/accel/amdxdna/amdxdna_ctx.c
606
if (!job->cmd_bo) {
drivers/accel/amdxdna/amdxdna_ctx.c
623
ret = amdxdna_arg_bos_lookup(client, job, arg_bo_hdls, arg_bo_cnt);
drivers/accel/amdxdna/amdxdna_ctx.c
644
job->hwctx = hwctx;
drivers/accel/amdxdna/amdxdna_ctx.c
645
job->mm = current->mm;
drivers/accel/amdxdna/amdxdna_ctx.c
646
mmgrab(job->mm);
drivers/accel/amdxdna/amdxdna_ctx.c
648
job->fence = amdxdna_fence_create(hwctx);
drivers/accel/amdxdna/amdxdna_ctx.c
649
if (!job->fence) {
drivers/accel/amdxdna/amdxdna_ctx.c
654
kref_init(&job->refcnt);
drivers/accel/amdxdna/amdxdna_ctx.c
656
ret = xdna->dev_info->ops->cmd_submit(hwctx, job, seq);
drivers/accel/amdxdna/amdxdna_ctx.c
672
dma_fence_put(job->fence);
drivers/accel/amdxdna/amdxdna_ctx.c
677
amdxdna_arg_bos_put(job);
drivers/accel/amdxdna/amdxdna_ctx.c
679
amdxdna_gem_put_obj(job->cmd_bo);
drivers/accel/amdxdna/amdxdna_ctx.c
681
if (job->mm)
drivers/accel/amdxdna/amdxdna_ctx.c
682
mmdrop(job->mm);
drivers/accel/amdxdna/amdxdna_ctx.c
683
kfree(job);
drivers/accel/amdxdna/amdxdna_ctx.h
201
struct amdxdna_sched_job *job, u32 cmd_idx,
drivers/accel/amdxdna/amdxdna_ctx.h
205
void amdxdna_sched_job_cleanup(struct amdxdna_sched_job *job);
drivers/accel/amdxdna/amdxdna_pci_drv.h
67
int (*cmd_submit)(struct amdxdna_hwctx *hwctx, struct amdxdna_sched_job *job, u64 *seq);
drivers/accel/ethosu/ethosu_job.c
105
static void ethosu_attach_object_fences(struct ethosu_job *job)
drivers/accel/ethosu/ethosu_job.c
108
struct dma_fence *fence = job->inference_done_fence;
drivers/accel/ethosu/ethosu_job.c
109
struct drm_gem_object **bos = job->region_bo;
drivers/accel/ethosu/ethosu_job.c
110
struct ethosu_validated_cmdstream_info *info = to_ethosu_bo(job->cmd_bo)->info;
drivers/accel/ethosu/ethosu_job.c
112
for (i = 0; i < job->region_cnt; i++)
drivers/accel/ethosu/ethosu_job.c
113
if (info->output_region[job->region_bo_num[i]])
drivers/accel/ethosu/ethosu_job.c
117
static int ethosu_job_push(struct ethosu_job *job)
drivers/accel/ethosu/ethosu_job.c
122
ret = drm_gem_lock_reservations(job->region_bo, job->region_cnt, &acquire_ctx);
drivers/accel/ethosu/ethosu_job.c
126
ret = ethosu_acquire_object_fences(job);
drivers/accel/ethosu/ethosu_job.c
130
ret = pm_runtime_resume_and_get(job->dev->base.dev);
drivers/accel/ethosu/ethosu_job.c
132
guard(mutex)(&job->dev->sched_lock);
drivers/accel/ethosu/ethosu_job.c
134
drm_sched_job_arm(&job->base);
drivers/accel/ethosu/ethosu_job.c
135
job->inference_done_fence = dma_fence_get(&job->base.s_fence->finished);
drivers/accel/ethosu/ethosu_job.c
136
kref_get(&job->refcount); /* put by scheduler job completion */
drivers/accel/ethosu/ethosu_job.c
137
drm_sched_entity_push_job(&job->base);
drivers/accel/ethosu/ethosu_job.c
138
ethosu_attach_object_fences(job);
drivers/accel/ethosu/ethosu_job.c
142
drm_gem_unlock_reservations(job->region_bo, job->region_cnt, &acquire_ctx);
drivers/accel/ethosu/ethosu_job.c
146
static void ethosu_job_err_cleanup(struct ethosu_job *job)
drivers/accel/ethosu/ethosu_job.c
150
for (i = 0; i < job->region_cnt; i++)
drivers/accel/ethosu/ethosu_job.c
151
drm_gem_object_put(job->region_bo[i]);
drivers/accel/ethosu/ethosu_job.c
153
drm_gem_object_put(job->cmd_bo);
drivers/accel/ethosu/ethosu_job.c
155
kfree(job);
drivers/accel/ethosu/ethosu_job.c
160
struct ethosu_job *job = container_of(ref, struct ethosu_job,
drivers/accel/ethosu/ethosu_job.c
163
pm_runtime_put_autosuspend(job->dev->base.dev);
drivers/accel/ethosu/ethosu_job.c
165
dma_fence_put(job->done_fence);
drivers/accel/ethosu/ethosu_job.c
166
dma_fence_put(job->inference_done_fence);
drivers/accel/ethosu/ethosu_job.c
168
ethosu_job_err_cleanup(job);
drivers/accel/ethosu/ethosu_job.c
171
static void ethosu_job_put(struct ethosu_job *job)
drivers/accel/ethosu/ethosu_job.c
173
kref_put(&job->refcount, ethosu_job_cleanup);
drivers/accel/ethosu/ethosu_job.c
178
struct ethosu_job *job = to_ethosu_job(sched_job);
drivers/accel/ethosu/ethosu_job.c
181
ethosu_job_put(job);
drivers/accel/ethosu/ethosu_job.c
186
struct ethosu_job *job = to_ethosu_job(sched_job);
drivers/accel/ethosu/ethosu_job.c
187
struct ethosu_device *dev = job->dev;
drivers/accel/ethosu/ethosu_job.c
188
struct dma_fence *fence = job->done_fence;
drivers/accel/ethosu/ethosu_job.c
190
if (unlikely(job->base.s_fence->finished.error))
drivers/accel/ethosu/ethosu_job.c
198
dev->in_flight_job = job;
drivers/accel/ethosu/ethosu_job.c
199
ethosu_job_hw_submit(dev, job);
drivers/accel/ethosu/ethosu_job.c
246
struct ethosu_job *job = to_ethosu_job(bad);
drivers/accel/ethosu/ethosu_job.c
247
struct ethosu_device *dev = job->dev;
drivers/accel/ethosu/ethosu_job.c
249
u32 *bocmds = to_drm_gem_dma_obj(job->cmd_bo)->vaddr;
drivers/accel/ethosu/ethosu_job.c
368
struct drm_ethosu_job *job)
drivers/accel/ethosu/ethosu_job.c
377
if (job->region_bo_handles[ETHOSU_SRAM_REGION] && job->sram_size)
drivers/accel/ethosu/ethosu_job.c
380
if (edev->npu_info.sram_size < job->sram_size)
drivers/accel/ethosu/ethosu_job.c
390
ejob->sram_size = job->sram_size;
drivers/accel/ethosu/ethosu_job.c
404
ejob->cmd_bo = drm_gem_object_lookup(file, job->cmd_bo);
drivers/accel/ethosu/ethosu_job.c
419
if (!job->region_bo_handles[i]) {
drivers/accel/ethosu/ethosu_job.c
435
if (job->region_bo_handles[i] && !cmd_info->region_size[i]) {
drivers/accel/ethosu/ethosu_job.c
438
job->region_bo_handles[i], i);
drivers/accel/ethosu/ethosu_job.c
443
gem = drm_gem_object_lookup(file, job->region_bo_handles[i]);
drivers/accel/ethosu/ethosu_job.c
447
job->region_bo_handles[i], i);
drivers/accel/ethosu/ethosu_job.c
45
static void ethosu_job_hw_submit(struct ethosu_device *dev, struct ethosu_job *job)
drivers/accel/ethosu/ethosu_job.c
459
job->region_bo_handles[i], i);
drivers/accel/ethosu/ethosu_job.c
47
struct drm_gem_dma_object *cmd_bo = to_drm_gem_dma_obj(job->cmd_bo);
drivers/accel/ethosu/ethosu_job.c
48
struct ethosu_validated_cmdstream_info *cmd_info = to_ethosu_bo(job->cmd_bo)->info;
drivers/accel/ethosu/ethosu_job.c
50
for (int i = 0; i < job->region_cnt; i++) {
drivers/accel/ethosu/ethosu_job.c
52
int region = job->region_bo_num[i];
drivers/accel/ethosu/ethosu_job.c
54
bo = to_drm_gem_dma_obj(job->region_bo[i]);
drivers/accel/ethosu/ethosu_job.c
60
if (job->sram_size) {
drivers/accel/ethosu/ethosu_job.c
79
static int ethosu_acquire_object_fences(struct ethosu_job *job)
drivers/accel/ethosu/ethosu_job.c
82
struct drm_gem_object **bos = job->region_bo;
drivers/accel/ethosu/ethosu_job.c
83
struct ethosu_validated_cmdstream_info *info = to_ethosu_bo(job->cmd_bo)->info;
drivers/accel/ethosu/ethosu_job.c
85
for (i = 0; i < job->region_cnt; i++) {
drivers/accel/ethosu/ethosu_job.c
95
is_write = info->output_region[job->region_bo_num[i]];
drivers/accel/ethosu/ethosu_job.c
96
ret = drm_sched_job_add_implicit_dependencies(&job->base, bos[i],
drivers/accel/habanalabs/common/command_submission.c
1028
struct hl_cs_job *job, *tmp;
drivers/accel/habanalabs/common/command_submission.c
1032
list_for_each_entry_safe(job, tmp, &cs->job_list, cs_node)
drivers/accel/habanalabs/common/command_submission.c
1033
hl_complete_job(hdev, job);
drivers/accel/habanalabs/common/command_submission.c
1168
struct hl_cs_job *job = container_of(work, struct hl_cs_job,
drivers/accel/habanalabs/common/command_submission.c
1170
struct hl_cs *cs = job->cs;
drivers/accel/habanalabs/common/command_submission.c
1174
hl_complete_job(hdev, job);
drivers/accel/habanalabs/common/command_submission.c
1181
struct hl_cs_job *job, *tmp;
drivers/accel/habanalabs/common/command_submission.c
1183
list_for_each_entry_safe(job, tmp, &cs->job_list, cs_node)
drivers/accel/habanalabs/common/command_submission.c
1184
hl_complete_job(hdev, job);
drivers/accel/habanalabs/common/command_submission.c
1303
struct hl_cs_job *job;
drivers/accel/habanalabs/common/command_submission.c
1305
job = kzalloc_obj(*job, GFP_ATOMIC);
drivers/accel/habanalabs/common/command_submission.c
1306
if (!job)
drivers/accel/habanalabs/common/command_submission.c
1307
job = kzalloc_obj(*job);
drivers/accel/habanalabs/common/command_submission.c
1309
if (!job)
drivers/accel/habanalabs/common/command_submission.c
1312
kref_init(&job->refcount);
drivers/accel/habanalabs/common/command_submission.c
1313
job->queue_type = queue_type;
drivers/accel/habanalabs/common/command_submission.c
1314
job->is_kernel_allocated_cb = is_kernel_allocated_cb;
drivers/accel/habanalabs/common/command_submission.c
1316
if (is_cb_patched(hdev, job))
drivers/accel/habanalabs/common/command_submission.c
1317
INIT_LIST_HEAD(&job->userptr_list);
drivers/accel/habanalabs/common/command_submission.c
1319
if (job->queue_type == QUEUE_TYPE_EXT)
drivers/accel/habanalabs/common/command_submission.c
1320
INIT_WORK(&job->finish_work, job_wq_completion);
drivers/accel/habanalabs/common/command_submission.c
1322
return job;
drivers/accel/habanalabs/common/command_submission.c
1497
struct hl_cs_job *job;
drivers/accel/habanalabs/common/command_submission.c
1584
job = hl_cs_allocate_job(hdev, queue_type,
drivers/accel/habanalabs/common/command_submission.c
1586
if (!job) {
drivers/accel/habanalabs/common/command_submission.c
1597
job->id = i + 1;
drivers/accel/habanalabs/common/command_submission.c
1598
job->cs = cs;
drivers/accel/habanalabs/common/command_submission.c
1599
job->user_cb = cb;
drivers/accel/habanalabs/common/command_submission.c
1600
job->user_cb_size = chunk->cb_size;
drivers/accel/habanalabs/common/command_submission.c
1601
job->hw_queue_id = chunk->queue_index;
drivers/accel/habanalabs/common/command_submission.c
1603
cs->jobs_in_queue_cnt[job->hw_queue_id]++;
drivers/accel/habanalabs/common/command_submission.c
1606
list_add_tail(&job->cs_node, &cs->job_list);
drivers/accel/habanalabs/common/command_submission.c
1615
(job->queue_type == QUEUE_TYPE_EXT ||
drivers/accel/habanalabs/common/command_submission.c
1616
job->queue_type == QUEUE_TYPE_HW))
drivers/accel/habanalabs/common/command_submission.c
1619
hl_debugfs_add_job(hdev, job);
drivers/accel/habanalabs/common/command_submission.c
1621
rc = cs_parser(hpriv, job);
drivers/accel/habanalabs/common/command_submission.c
1627
cs->ctx->asid, cs->sequence, job->id, rc);
drivers/accel/habanalabs/common/command_submission.c
1941
struct hl_cs_job *job;
drivers/accel/habanalabs/common/command_submission.c
1947
job = hl_cs_allocate_job(hdev, q_type, true);
drivers/accel/habanalabs/common/command_submission.c
1948
if (!job) {
drivers/accel/habanalabs/common/command_submission.c
1964
kfree(job);
drivers/accel/habanalabs/common/command_submission.c
1968
job->id = 0;
drivers/accel/habanalabs/common/command_submission.c
1969
job->cs = cs;
drivers/accel/habanalabs/common/command_submission.c
1970
job->user_cb = cb;
drivers/accel/habanalabs/common/command_submission.c
1971
atomic_inc(&job->user_cb->cs_cnt);
drivers/accel/habanalabs/common/command_submission.c
1972
job->user_cb_size = cb_size;
drivers/accel/habanalabs/common/command_submission.c
1973
job->hw_queue_id = q_idx;
drivers/accel/habanalabs/common/command_submission.c
1977
job->encaps_sig_wait_offset = encaps_signal_offset;
drivers/accel/habanalabs/common/command_submission.c
1984
job->patched_cb = job->user_cb;
drivers/accel/habanalabs/common/command_submission.c
1985
job->job_cb_size = job->user_cb_size;
drivers/accel/habanalabs/common/command_submission.c
1991
cs->jobs_in_queue_cnt[job->hw_queue_id]++;
drivers/accel/habanalabs/common/command_submission.c
1994
list_add_tail(&job->cs_node, &cs->job_list);
drivers/accel/habanalabs/common/command_submission.c
1996
hl_debugfs_add_job(hdev, job);
drivers/accel/habanalabs/common/command_submission.c
267
struct hl_cs_job *job = container_of(ref, struct hl_cs_job, refcount);
drivers/accel/habanalabs/common/command_submission.c
269
kfree(job);
drivers/accel/habanalabs/common/command_submission.c
272
static void hl_cs_job_put(struct hl_cs_job *job)
drivers/accel/habanalabs/common/command_submission.c
274
kref_put(&job->refcount, cs_job_do_release);
drivers/accel/habanalabs/common/command_submission.c
299
static bool is_cb_patched(struct hl_device *hdev, struct hl_cs_job *job)
drivers/accel/habanalabs/common/command_submission.c
302
return (job->queue_type == QUEUE_TYPE_EXT);
drivers/accel/habanalabs/common/command_submission.c
316
static int cs_parser(struct hl_fpriv *hpriv, struct hl_cs_job *job)
drivers/accel/habanalabs/common/command_submission.c
322
parser.ctx_id = job->cs->ctx->asid;
drivers/accel/habanalabs/common/command_submission.c
323
parser.cs_sequence = job->cs->sequence;
drivers/accel/habanalabs/common/command_submission.c
324
parser.job_id = job->id;
drivers/accel/habanalabs/common/command_submission.c
326
parser.hw_queue_id = job->hw_queue_id;
drivers/accel/habanalabs/common/command_submission.c
327
parser.job_userptr_list = &job->userptr_list;
drivers/accel/habanalabs/common/command_submission.c
329
parser.user_cb = job->user_cb;
drivers/accel/habanalabs/common/command_submission.c
330
parser.user_cb_size = job->user_cb_size;
drivers/accel/habanalabs/common/command_submission.c
331
parser.queue_type = job->queue_type;
drivers/accel/habanalabs/common/command_submission.c
332
parser.is_kernel_allocated_cb = job->is_kernel_allocated_cb;
drivers/accel/habanalabs/common/command_submission.c
333
job->patched_cb = NULL;
drivers/accel/habanalabs/common/command_submission.c
334
parser.completion = cs_needs_completion(job->cs);
drivers/accel/habanalabs/common/command_submission.c
338
if (is_cb_patched(hdev, job)) {
drivers/accel/habanalabs/common/command_submission.c
340
job->patched_cb = parser.patched_cb;
drivers/accel/habanalabs/common/command_submission.c
341
job->job_cb_size = parser.patched_cb_size;
drivers/accel/habanalabs/common/command_submission.c
342
job->contains_dma_pkt = parser.contains_dma_pkt;
drivers/accel/habanalabs/common/command_submission.c
343
atomic_inc(&job->patched_cb->cs_cnt);
drivers/accel/habanalabs/common/command_submission.c
351
atomic_dec(&job->user_cb->cs_cnt);
drivers/accel/habanalabs/common/command_submission.c
352
hl_cb_put(job->user_cb);
drivers/accel/habanalabs/common/command_submission.c
353
job->user_cb = NULL;
drivers/accel/habanalabs/common/command_submission.c
355
job->job_cb_size = job->user_cb_size;
drivers/accel/habanalabs/common/command_submission.c
361
static void hl_complete_job(struct hl_device *hdev, struct hl_cs_job *job)
drivers/accel/habanalabs/common/command_submission.c
363
struct hl_cs *cs = job->cs;
drivers/accel/habanalabs/common/command_submission.c
365
if (is_cb_patched(hdev, job)) {
drivers/accel/habanalabs/common/command_submission.c
366
hl_userptr_delete_list(hdev, &job->userptr_list);
drivers/accel/habanalabs/common/command_submission.c
372
if (job->patched_cb) {
drivers/accel/habanalabs/common/command_submission.c
373
atomic_dec(&job->patched_cb->cs_cnt);
drivers/accel/habanalabs/common/command_submission.c
374
hl_cb_put(job->patched_cb);
drivers/accel/habanalabs/common/command_submission.c
383
if (job->is_kernel_allocated_cb &&
drivers/accel/habanalabs/common/command_submission.c
384
(job->queue_type == QUEUE_TYPE_HW || job->queue_type == QUEUE_TYPE_INT)) {
drivers/accel/habanalabs/common/command_submission.c
385
atomic_dec(&job->user_cb->cs_cnt);
drivers/accel/habanalabs/common/command_submission.c
386
hl_cb_put(job->user_cb);
drivers/accel/habanalabs/common/command_submission.c
394
list_del(&job->cs_node);
drivers/accel/habanalabs/common/command_submission.c
397
hl_debugfs_remove_job(hdev, job);
drivers/accel/habanalabs/common/command_submission.c
412
(job->queue_type == QUEUE_TYPE_EXT || job->queue_type == QUEUE_TYPE_HW)) {
drivers/accel/habanalabs/common/command_submission.c
418
cs->completion_timestamp = job->timestamp;
drivers/accel/habanalabs/common/command_submission.c
423
hl_cs_job_put(job);
drivers/accel/habanalabs/common/command_submission.c
698
struct hl_cs_job *job, *tmp;
drivers/accel/habanalabs/common/command_submission.c
712
list_for_each_entry_safe(job, tmp, &cs->job_list, cs_node)
drivers/accel/habanalabs/common/command_submission.c
713
hl_complete_job(hdev, job);
drivers/accel/habanalabs/common/debugfs.c
171
struct hl_cs_job *job;
drivers/accel/habanalabs/common/debugfs.c
176
list_for_each_entry(job, &dev_entry->cs_job_list, debugfs_list) {
drivers/accel/habanalabs/common/debugfs.c
183
if (job->cs)
drivers/accel/habanalabs/common/debugfs.c
186
job->id, job->cs->sequence, job->cs->type,
drivers/accel/habanalabs/common/debugfs.c
187
job->cs->ctx->asid, kref_read(&job->refcount),
drivers/accel/habanalabs/common/debugfs.c
188
job->hw_queue_id);
drivers/accel/habanalabs/common/debugfs.c
192
job->id, HL_KERNEL_ASID_ID,
drivers/accel/habanalabs/common/debugfs.c
193
kref_read(&job->refcount), job->hw_queue_id);
drivers/accel/habanalabs/common/debugfs.c
2174
void hl_debugfs_add_job(struct hl_device *hdev, struct hl_cs_job *job)
drivers/accel/habanalabs/common/debugfs.c
2179
list_add(&job->debugfs_list, &dev_entry->cs_job_list);
drivers/accel/habanalabs/common/debugfs.c
2183
void hl_debugfs_remove_job(struct hl_device *hdev, struct hl_cs_job *job)
drivers/accel/habanalabs/common/debugfs.c
2188
list_del(&job->debugfs_list);
drivers/accel/habanalabs/common/habanalabs.h
4085
struct hl_cs *cs, struct hl_cs_job *job,
drivers/accel/habanalabs/common/habanalabs.h
4149
void hl_debugfs_add_job(struct hl_device *hdev, struct hl_cs_job *job);
drivers/accel/habanalabs/common/habanalabs.h
4150
void hl_debugfs_remove_job(struct hl_device *hdev, struct hl_cs_job *job);
drivers/accel/habanalabs/common/habanalabs.h
4200
struct hl_cs_job *job)
drivers/accel/habanalabs/common/habanalabs.h
4205
struct hl_cs_job *job)
drivers/accel/habanalabs/common/hw_queue.c
279
static void ext_queue_schedule_job(struct hl_cs_job *job)
drivers/accel/habanalabs/common/hw_queue.c
281
struct hl_device *hdev = job->cs->ctx->hdev;
drivers/accel/habanalabs/common/hw_queue.c
282
struct hl_hw_queue *q = &hdev->kernel_queues[job->hw_queue_id];
drivers/accel/habanalabs/common/hw_queue.c
297
cb = job->patched_cb;
drivers/accel/habanalabs/common/hw_queue.c
298
len = job->job_cb_size;
drivers/accel/habanalabs/common/hw_queue.c
302
if (!cs_needs_completion(job->cs))
drivers/accel/habanalabs/common/hw_queue.c
322
job->user_cb_size,
drivers/accel/habanalabs/common/hw_queue.c
326
job->contains_dma_pkt);
drivers/accel/habanalabs/common/hw_queue.c
328
q->shadow_queue[hl_pi_2_offset(q->pi)] = job;
drivers/accel/habanalabs/common/hw_queue.c
344
static void int_queue_schedule_job(struct hl_cs_job *job)
drivers/accel/habanalabs/common/hw_queue.c
346
struct hl_device *hdev = job->cs->ctx->hdev;
drivers/accel/habanalabs/common/hw_queue.c
347
struct hl_hw_queue *q = &hdev->kernel_queues[job->hw_queue_id];
drivers/accel/habanalabs/common/hw_queue.c
352
bd.len = cpu_to_le32(job->job_cb_size);
drivers/accel/habanalabs/common/hw_queue.c
354
if (job->is_kernel_allocated_cb)
drivers/accel/habanalabs/common/hw_queue.c
358
bd.ptr = cpu_to_le64(job->user_cb->bus_address);
drivers/accel/habanalabs/common/hw_queue.c
360
bd.ptr = cpu_to_le64((u64) (uintptr_t) job->user_cb);
drivers/accel/habanalabs/common/hw_queue.c
380
static void hw_queue_schedule_job(struct hl_cs_job *job)
drivers/accel/habanalabs/common/hw_queue.c
382
struct hl_device *hdev = job->cs->ctx->hdev;
drivers/accel/habanalabs/common/hw_queue.c
383
struct hl_hw_queue *q = &hdev->kernel_queues[job->hw_queue_id];
drivers/accel/habanalabs/common/hw_queue.c
393
offset = job->cs->sequence & (hdev->asic_prop.max_pending_cs - 1);
drivers/accel/habanalabs/common/hw_queue.c
397
len = job->job_cb_size;
drivers/accel/habanalabs/common/hw_queue.c
405
if (job->patched_cb)
drivers/accel/habanalabs/common/hw_queue.c
406
ptr = job->patched_cb->bus_address;
drivers/accel/habanalabs/common/hw_queue.c
407
else if (job->is_kernel_allocated_cb)
drivers/accel/habanalabs/common/hw_queue.c
408
ptr = job->user_cb->bus_address;
drivers/accel/habanalabs/common/hw_queue.c
410
ptr = (u64) (uintptr_t) job->user_cb;
drivers/accel/habanalabs/common/hw_queue.c
416
struct hl_cs_job *job, struct hl_cs_compl *cs_cmpl)
drivers/accel/habanalabs/common/hw_queue.c
423
q_idx = job->hw_queue_id;
drivers/accel/habanalabs/common/hw_queue.c
438
hdev->asic_funcs->gen_signal_cb(hdev, job->patched_cb,
drivers/accel/habanalabs/common/hw_queue.c
444
job->cs->sob_addr_offset = hw_sob->sob_addr;
drivers/accel/habanalabs/common/hw_queue.c
445
job->cs->initial_sob_count = prop->next_sob_val - 1;
drivers/accel/habanalabs/common/hw_queue.c
451
struct hl_cs *cs, struct hl_cs_job *job,
drivers/accel/habanalabs/common/hw_queue.c
468
if (job->encaps_sig_wait_offset)
drivers/accel/habanalabs/common/hw_queue.c
469
offset = job->encaps_sig_wait_offset - 1;
drivers/accel/habanalabs/common/hw_queue.c
475
struct hl_cs_job *job, struct hl_cs_compl *cs_cmpl)
drivers/accel/habanalabs/common/hw_queue.c
482
q_idx = job->hw_queue_id;
drivers/accel/habanalabs/common/hw_queue.c
494
hl_hw_queue_encaps_sig_set_sob_info(hdev, cs, job, cs_cmpl);
drivers/accel/habanalabs/common/hw_queue.c
500
job->encaps_sig_wait_offset);
drivers/accel/habanalabs/common/hw_queue.c
535
wait_prop.data = (void *) job->patched_cb;
drivers/accel/habanalabs/common/hw_queue.c
562
struct hl_cs_job *job;
drivers/accel/habanalabs/common/hw_queue.c
568
job = list_first_entry(&cs->job_list, struct hl_cs_job,
drivers/accel/habanalabs/common/hw_queue.c
572
rc = init_signal_cs(hdev, job, cs_cmpl);
drivers/accel/habanalabs/common/hw_queue.c
574
rc = init_wait_cs(hdev, cs, job, cs_cmpl);
drivers/accel/habanalabs/common/hw_queue.c
642
struct hl_cs_job *job, *tmp;
drivers/accel/habanalabs/common/hw_queue.c
772
list_for_each_entry_safe(job, tmp, &cs->job_list, cs_node)
drivers/accel/habanalabs/common/hw_queue.c
773
switch (job->queue_type) {
drivers/accel/habanalabs/common/hw_queue.c
775
ext_queue_schedule_job(job);
drivers/accel/habanalabs/common/hw_queue.c
778
int_queue_schedule_job(job);
drivers/accel/habanalabs/common/hw_queue.c
781
hw_queue_schedule_job(job);
drivers/accel/habanalabs/common/irq.c
104
struct hl_cs_job *job;
drivers/accel/habanalabs/common/irq.c
114
list_for_each_entry(job, &cs->job_list, cs_node) {
drivers/accel/habanalabs/common/irq.c
115
queue = &hdev->kernel_queues[job->hw_queue_id];
drivers/accel/habanalabs/common/irq.c
205
struct timestamp_reg_work_obj *job =
drivers/accel/habanalabs/common/irq.c
207
struct list_head *dynamic_alloc_free_list_head = job->dynamic_alloc_free_obj_head;
drivers/accel/habanalabs/common/irq.c
209
struct list_head *free_list_head = job->free_obj_head;
drivers/accel/habanalabs/common/irq.c
211
struct hl_device *hdev = job->hdev;
drivers/accel/habanalabs/common/irq.c
242
kfree(job);
drivers/accel/habanalabs/common/irq.c
335
struct timestamp_reg_work_obj *job;
drivers/accel/habanalabs/common/irq.c
349
job = kmalloc_obj(*job, GFP_ATOMIC);
drivers/accel/habanalabs/common/irq.c
350
if (!job)
drivers/accel/habanalabs/common/irq.c
369
INIT_WORK(&job->free_obj, hl_ts_free_objects);
drivers/accel/habanalabs/common/irq.c
370
job->free_obj_head = ts_reg_free_list_head;
drivers/accel/habanalabs/common/irq.c
371
job->dynamic_alloc_free_obj_head = dynamic_alloc_list_head;
drivers/accel/habanalabs/common/irq.c
372
job->hdev = hdev;
drivers/accel/habanalabs/common/irq.c
373
queue_work(hdev->ts_free_obj_wq, &job->free_obj);
drivers/accel/habanalabs/common/irq.c
375
kfree(job);
drivers/accel/habanalabs/common/irq.c
81
struct hl_cs_job *job;
drivers/accel/habanalabs/common/irq.c
84
job = queue->shadow_queue[hl_pi_2_offset(cs_seq)];
drivers/accel/habanalabs/common/irq.c
85
job->timestamp = timestamp;
drivers/accel/habanalabs/common/irq.c
86
queue_work(hdev->cq_wq[cq->cq_idx], &job->finish_work);
drivers/accel/habanalabs/gaudi/gaudi.c
1000
job = hl_cs_allocate_job(hdev, QUEUE_TYPE_EXT, true);
drivers/accel/habanalabs/gaudi/gaudi.c
1001
if (!job) {
drivers/accel/habanalabs/gaudi/gaudi.c
1007
job->id = 0;
drivers/accel/habanalabs/gaudi/gaudi.c
1008
job->user_cb = cb;
drivers/accel/habanalabs/gaudi/gaudi.c
1009
atomic_inc(&job->user_cb->cs_cnt);
drivers/accel/habanalabs/gaudi/gaudi.c
1010
job->user_cb_size = cb_size;
drivers/accel/habanalabs/gaudi/gaudi.c
1011
job->hw_queue_id = GAUDI_QUEUE_ID_DMA_0_0;
drivers/accel/habanalabs/gaudi/gaudi.c
1012
job->patched_cb = job->user_cb;
drivers/accel/habanalabs/gaudi/gaudi.c
1013
job->job_cb_size = job->user_cb_size + sizeof(struct packet_msg_prot);
drivers/accel/habanalabs/gaudi/gaudi.c
1015
hl_debugfs_add_job(hdev, job);
drivers/accel/habanalabs/gaudi/gaudi.c
1017
rc = gaudi_send_job_on_qman0(hdev, job);
drivers/accel/habanalabs/gaudi/gaudi.c
1029
hl_userptr_delete_list(hdev, &job->userptr_list);
drivers/accel/habanalabs/gaudi/gaudi.c
1030
hl_debugfs_remove_job(hdev, job);
drivers/accel/habanalabs/gaudi/gaudi.c
1031
kfree(job);
drivers/accel/habanalabs/gaudi/gaudi.c
1209
struct hl_cs_job *job, u32 stream, u32 sob_group_offset)
drivers/accel/habanalabs/gaudi/gaudi.c
1219
queue_id = job->hw_queue_id;
drivers/accel/habanalabs/gaudi/gaudi.c
1234
wait_prop.data = (void *) job->patched_cb;
drivers/accel/habanalabs/gaudi/gaudi.c
1260
struct hl_cs_job *job, struct hl_cs_compl *cs_cmpl)
drivers/accel/habanalabs/gaudi/gaudi.c
1266
queue_id = job->hw_queue_id;
drivers/accel/habanalabs/gaudi/gaudi.c
1269
if (job->cs->encaps_signals) {
drivers/accel/habanalabs/gaudi/gaudi.c
1274
hl_hw_queue_encaps_sig_set_sob_info(hdev, job->cs, job,
drivers/accel/habanalabs/gaudi/gaudi.c
1278
job->cs->sequence,
drivers/accel/habanalabs/gaudi/gaudi.c
1284
wait_prop.data = (void *) job->user_cb;
drivers/accel/habanalabs/gaudi/gaudi.c
1303
cb_size += gaudi_gen_signal_cb(hdev, job->user_cb,
drivers/accel/habanalabs/gaudi/gaudi.c
1318
struct hl_cs_job *job;
drivers/accel/habanalabs/gaudi/gaudi.c
1365
job = list_first_entry(&cs->job_list, struct hl_cs_job, cs_node);
drivers/accel/habanalabs/gaudi/gaudi.c
1366
stream = job->hw_queue_id % 4;
drivers/accel/habanalabs/gaudi/gaudi.c
1370
list_for_each_entry(job, &cs->job_list, cs_node) {
drivers/accel/habanalabs/gaudi/gaudi.c
1371
queue_id = job->hw_queue_id;
drivers/accel/habanalabs/gaudi/gaudi.c
1375
gaudi_collective_master_init_job(hdev, job, stream,
drivers/accel/habanalabs/gaudi/gaudi.c
1378
gaudi_collective_slave_init_job(hdev, job, cs_cmpl);
drivers/accel/habanalabs/gaudi/gaudi.c
1434
struct hl_cs_job *job;
drivers/accel/habanalabs/gaudi/gaudi.c
1465
job = hl_cs_allocate_job(hdev, hw_queue_prop->type, true);
drivers/accel/habanalabs/gaudi/gaudi.c
1466
if (!job) {
drivers/accel/habanalabs/gaudi/gaudi.c
1478
kfree(job);
drivers/accel/habanalabs/gaudi/gaudi.c
1482
job->id = 0;
drivers/accel/habanalabs/gaudi/gaudi.c
1483
job->cs = cs;
drivers/accel/habanalabs/gaudi/gaudi.c
1484
job->user_cb = cb;
drivers/accel/habanalabs/gaudi/gaudi.c
1485
atomic_inc(&job->user_cb->cs_cnt);
drivers/accel/habanalabs/gaudi/gaudi.c
1486
job->user_cb_size = cb_size;
drivers/accel/habanalabs/gaudi/gaudi.c
1487
job->hw_queue_id = queue_id;
drivers/accel/habanalabs/gaudi/gaudi.c
1494
job->encaps_sig_wait_offset = encaps_signal_offset;
drivers/accel/habanalabs/gaudi/gaudi.c
1503
job->patched_cb = job->user_cb;
drivers/accel/habanalabs/gaudi/gaudi.c
1505
job->patched_cb = NULL;
drivers/accel/habanalabs/gaudi/gaudi.c
1507
job->job_cb_size = job->user_cb_size;
drivers/accel/habanalabs/gaudi/gaudi.c
1514
cs->jobs_in_queue_cnt[job->hw_queue_id]++;
drivers/accel/habanalabs/gaudi/gaudi.c
1516
list_add_tail(&job->cs_node, &cs->job_list);
drivers/accel/habanalabs/gaudi/gaudi.c
1518
hl_debugfs_add_job(hdev, job);
drivers/accel/habanalabs/gaudi/gaudi.c
482
struct hl_cs_job *job);
drivers/accel/habanalabs/gaudi/gaudi.c
5584
struct hl_cs_job *job;
drivers/accel/habanalabs/gaudi/gaudi.c
5608
job = hl_cs_allocate_job(hdev, QUEUE_TYPE_EXT, true);
drivers/accel/habanalabs/gaudi/gaudi.c
5609
if (!job) {
drivers/accel/habanalabs/gaudi/gaudi.c
5624
job->id = 0;
drivers/accel/habanalabs/gaudi/gaudi.c
5625
job->user_cb = cb;
drivers/accel/habanalabs/gaudi/gaudi.c
5626
atomic_inc(&job->user_cb->cs_cnt);
drivers/accel/habanalabs/gaudi/gaudi.c
5627
job->user_cb_size = cb_size;
drivers/accel/habanalabs/gaudi/gaudi.c
5628
job->hw_queue_id = GAUDI_QUEUE_ID_DMA_0_0;
drivers/accel/habanalabs/gaudi/gaudi.c
5629
job->patched_cb = job->user_cb;
drivers/accel/habanalabs/gaudi/gaudi.c
5630
job->job_cb_size = job->user_cb_size + sizeof(struct packet_msg_prot);
drivers/accel/habanalabs/gaudi/gaudi.c
5632
hl_debugfs_add_job(hdev, job);
drivers/accel/habanalabs/gaudi/gaudi.c
5634
rc = gaudi_send_job_on_qman0(hdev, job);
drivers/accel/habanalabs/gaudi/gaudi.c
5635
hl_debugfs_remove_job(hdev, job);
drivers/accel/habanalabs/gaudi/gaudi.c
5636
kfree(job);
drivers/accel/habanalabs/gaudi/gaudi.c
5663
struct hl_cs_job *job;
drivers/accel/habanalabs/gaudi/gaudi.c
5693
job = hl_cs_allocate_job(hdev, QUEUE_TYPE_EXT, true);
drivers/accel/habanalabs/gaudi/gaudi.c
5694
if (!job) {
drivers/accel/habanalabs/gaudi/gaudi.c
5700
job->id = 0;
drivers/accel/habanalabs/gaudi/gaudi.c
5701
job->user_cb = cb;
drivers/accel/habanalabs/gaudi/gaudi.c
5702
atomic_inc(&job->user_cb->cs_cnt);
drivers/accel/habanalabs/gaudi/gaudi.c
5703
job->user_cb_size = cb_size;
drivers/accel/habanalabs/gaudi/gaudi.c
5704
job->hw_queue_id = GAUDI_QUEUE_ID_DMA_0_0;
drivers/accel/habanalabs/gaudi/gaudi.c
5705
job->patched_cb = job->user_cb;
drivers/accel/habanalabs/gaudi/gaudi.c
5706
job->job_cb_size = cb_size;
drivers/accel/habanalabs/gaudi/gaudi.c
5708
hl_debugfs_add_job(hdev, job);
drivers/accel/habanalabs/gaudi/gaudi.c
5710
rc = gaudi_send_job_on_qman0(hdev, job);
drivers/accel/habanalabs/gaudi/gaudi.c
5711
hl_debugfs_remove_job(hdev, job);
drivers/accel/habanalabs/gaudi/gaudi.c
5712
kfree(job);
drivers/accel/habanalabs/gaudi/gaudi.c
6361
struct hl_cs_job *job)
drivers/accel/habanalabs/gaudi/gaudi.c
6382
cb = job->patched_cb;
drivers/accel/habanalabs/gaudi/gaudi.c
6385
job->job_cb_size - sizeof(struct packet_msg_prot);
drivers/accel/habanalabs/gaudi/gaudi.c
6401
job->job_cb_size, cb->bus_address);
drivers/accel/habanalabs/gaudi/gaudi.c
969
struct hl_cs_job *job;
drivers/accel/habanalabs/goya/goya.c
3063
static int goya_send_job_on_qman0(struct hl_device *hdev, struct hl_cs_job *job)
drivers/accel/habanalabs/goya/goya.c
3092
cb = job->patched_cb;
drivers/accel/habanalabs/goya/goya.c
3095
job->job_cb_size - sizeof(struct packet_msg_prot);
drivers/accel/habanalabs/goya/goya.c
3105
job->job_cb_size, cb->bus_address);
drivers/accel/habanalabs/goya/goya.c
4757
struct hl_cs_job *job;
drivers/accel/habanalabs/goya/goya.c
4795
job = hl_cs_allocate_job(hdev, QUEUE_TYPE_EXT, true);
drivers/accel/habanalabs/goya/goya.c
4796
if (!job) {
drivers/accel/habanalabs/goya/goya.c
4802
job->id = 0;
drivers/accel/habanalabs/goya/goya.c
4803
job->user_cb = cb;
drivers/accel/habanalabs/goya/goya.c
4804
atomic_inc(&job->user_cb->cs_cnt);
drivers/accel/habanalabs/goya/goya.c
4805
job->user_cb_size = cb_size;
drivers/accel/habanalabs/goya/goya.c
4806
job->hw_queue_id = GOYA_QUEUE_ID_DMA_0;
drivers/accel/habanalabs/goya/goya.c
4807
job->patched_cb = job->user_cb;
drivers/accel/habanalabs/goya/goya.c
4808
job->job_cb_size = job->user_cb_size;
drivers/accel/habanalabs/goya/goya.c
4810
hl_debugfs_add_job(hdev, job);
drivers/accel/habanalabs/goya/goya.c
4812
rc = goya_send_job_on_qman0(hdev, job);
drivers/accel/habanalabs/goya/goya.c
4814
hl_debugfs_remove_job(hdev, job);
drivers/accel/habanalabs/goya/goya.c
4815
kfree(job);
drivers/accel/ivpu/ivpu_job.c
1168
struct ivpu_job *job;
drivers/accel/ivpu/ivpu_job.c
1208
xa_for_each(&vdev->submitted_jobs_xa, id, job)
drivers/accel/ivpu/ivpu_job.c
1209
if (job->file_priv->aborted)
drivers/accel/ivpu/ivpu_job.c
1210
ivpu_job_signal_and_destroy(vdev, job->job_id, DRM_IVPU_JOB_STATUS_ABORTED);
drivers/accel/ivpu/ivpu_job.c
439
static int ivpu_cmdq_push_job(struct ivpu_cmdq *cmdq, struct ivpu_job *job)
drivers/accel/ivpu/ivpu_job.c
441
struct ivpu_device *vdev = job->vdev;
drivers/accel/ivpu/ivpu_job.c
450
job->file_priv->ctx.id, cmdq->id, cmdq->db_id, header->head, tail);
drivers/accel/ivpu/ivpu_job.c
454
entry = &cmdq->jobq->slot[tail].job;
drivers/accel/ivpu/ivpu_job.c
455
entry->batch_buf_addr = job->cmd_buf_vpu_addr;
drivers/accel/ivpu/ivpu_job.c
456
entry->job_id = job->job_id;
drivers/accel/ivpu/ivpu_job.c
461
if (job->primary_preempt_buf) {
drivers/accel/ivpu/ivpu_job.c
462
entry->primary_preempt_buf_addr = job->primary_preempt_buf->vpu_addr;
drivers/accel/ivpu/ivpu_job.c
463
entry->primary_preempt_buf_size = ivpu_bo_size(job->primary_preempt_buf);
drivers/accel/ivpu/ivpu_job.c
466
if (job->secondary_preempt_buf) {
drivers/accel/ivpu/ivpu_job.c
467
entry->secondary_preempt_buf_addr = job->secondary_preempt_buf->vpu_addr;
drivers/accel/ivpu/ivpu_job.c
468
entry->secondary_preempt_buf_size = ivpu_bo_size(job->secondary_preempt_buf);
drivers/accel/ivpu/ivpu_job.c
521
static void ivpu_job_destroy(struct ivpu_job *job)
drivers/accel/ivpu/ivpu_job.c
523
struct ivpu_device *vdev = job->vdev;
drivers/accel/ivpu/ivpu_job.c
527
job->job_id, job->file_priv->ctx.id, job->cmdq_id, job->engine_idx);
drivers/accel/ivpu/ivpu_job.c
529
for (i = 0; i < job->bo_count; i++)
drivers/accel/ivpu/ivpu_job.c
530
if (job->bos[i])
drivers/accel/ivpu/ivpu_job.c
531
drm_gem_object_put(&job->bos[i]->base.base);
drivers/accel/ivpu/ivpu_job.c
533
dma_fence_put(job->done_fence);
drivers/accel/ivpu/ivpu_job.c
534
ivpu_file_priv_put(&job->file_priv);
drivers/accel/ivpu/ivpu_job.c
535
kfree(job);
drivers/accel/ivpu/ivpu_job.c
542
struct ivpu_job *job;
drivers/accel/ivpu/ivpu_job.c
544
job = kzalloc_flex(*job, bos, bo_count);
drivers/accel/ivpu/ivpu_job.c
545
if (!job)
drivers/accel/ivpu/ivpu_job.c
548
job->vdev = vdev;
drivers/accel/ivpu/ivpu_job.c
549
job->engine_idx = engine_idx;
drivers/accel/ivpu/ivpu_job.c
550
job->bo_count = bo_count;
drivers/accel/ivpu/ivpu_job.c
551
job->done_fence = ivpu_fence_create(vdev);
drivers/accel/ivpu/ivpu_job.c
552
if (!job->done_fence) {
drivers/accel/ivpu/ivpu_job.c
557
job->file_priv = ivpu_file_priv_get(file_priv);
drivers/accel/ivpu/ivpu_job.c
559
trace_job("create", job);
drivers/accel/ivpu/ivpu_job.c
560
ivpu_dbg(vdev, JOB, "Job created: ctx %2d engine %d", file_priv->ctx.id, job->engine_idx);
drivers/accel/ivpu/ivpu_job.c
561
return job;
drivers/accel/ivpu/ivpu_job.c
564
kfree(job);
drivers/accel/ivpu/ivpu_job.c
570
struct ivpu_job *job;
drivers/accel/ivpu/ivpu_job.c
574
job = xa_erase(&vdev->submitted_jobs_xa, job_id);
drivers/accel/ivpu/ivpu_job.c
575
if (xa_empty(&vdev->submitted_jobs_xa) && job) {
drivers/accel/ivpu/ivpu_job.c
580
return job;
drivers/accel/ivpu/ivpu_job.c
591
struct ivpu_job *job = xa_load(&vdev->submitted_jobs_xa, job_id);
drivers/accel/ivpu/ivpu_job.c
593
if (!job)
drivers/accel/ivpu/ivpu_job.c
597
guard(mutex)(&job->file_priv->lock);
drivers/accel/ivpu/ivpu_job.c
599
job->job_status = job_status;
drivers/accel/ivpu/ivpu_job.c
601
if (job->file_priv->has_mmu_faults)
drivers/accel/ivpu/ivpu_job.c
609
job->file_priv->has_mmu_faults = true;
drivers/accel/ivpu/ivpu_job.c
624
struct ivpu_job *job;
drivers/accel/ivpu/ivpu_job.c
628
job = xa_load(&vdev->submitted_jobs_xa, job_id);
drivers/accel/ivpu/ivpu_job.c
629
if (!job)
drivers/accel/ivpu/ivpu_job.c
634
if (job->job_status == VPU_JSM_STATUS_SUCCESS) {
drivers/accel/ivpu/ivpu_job.c
635
if (job->file_priv->has_mmu_faults)
drivers/accel/ivpu/ivpu_job.c
636
job->job_status = DRM_IVPU_JOB_STATUS_ABORTED;
drivers/accel/ivpu/ivpu_job.c
638
job->job_status = job_status;
drivers/accel/ivpu/ivpu_job.c
641
job->bos[CMD_BUF_IDX]->job_status = job->job_status;
drivers/accel/ivpu/ivpu_job.c
642
dma_fence_signal(job->done_fence);
drivers/accel/ivpu/ivpu_job.c
644
trace_job("done", job);
drivers/accel/ivpu/ivpu_job.c
646
job->job_id, job->file_priv->ctx.id, job->cmdq_id, job->engine_idx,
drivers/accel/ivpu/ivpu_job.c
647
job->job_status);
drivers/accel/ivpu/ivpu_job.c
649
ivpu_job_destroy(job);
drivers/accel/ivpu/ivpu_job.c
662
struct ivpu_job *job;
drivers/accel/ivpu/ivpu_job.c
667
xa_for_each(&vdev->submitted_jobs_xa, id, job)
drivers/accel/ivpu/ivpu_job.c
675
struct ivpu_job *job;
drivers/accel/ivpu/ivpu_job.c
680
xa_for_each(&vdev->submitted_jobs_xa, id, job)
drivers/accel/ivpu/ivpu_job.c
681
if (job->file_priv->ctx.id == ctx_id && job->cmdq_id == cmdq_id)
drivers/accel/ivpu/ivpu_job.c
687
static int ivpu_job_submit(struct ivpu_job *job, u8 priority, u32 cmdq_id)
drivers/accel/ivpu/ivpu_job.c
689
struct ivpu_file_priv *file_priv = job->file_priv;
drivers/accel/ivpu/ivpu_job.c
690
struct ivpu_device *vdev = job->vdev;
drivers/accel/ivpu/ivpu_job.c
717
ret = ivpu_preemption_job_init(vdev, file_priv, cmdq, job);
drivers/accel/ivpu/ivpu_job.c
720
job->job_id, ret);
drivers/accel/ivpu/ivpu_job.c
724
job->cmdq_id = cmdq->id;
drivers/accel/ivpu/ivpu_job.c
727
ret = xa_alloc_cyclic(&vdev->submitted_jobs_xa, &job->job_id, job, file_priv->job_limit,
drivers/accel/ivpu/ivpu_job.c
736
ret = ivpu_cmdq_push_job(cmdq, job);
drivers/accel/ivpu/ivpu_job.c
74
struct ivpu_cmdq *cmdq, struct ivpu_job *job)
drivers/accel/ivpu/ivpu_job.c
751
trace_job("submit", job);
drivers/accel/ivpu/ivpu_job.c
753
job->job_id, file_priv->ctx.id, cmdq->id, job->engine_idx, cmdq->priority,
drivers/accel/ivpu/ivpu_job.c
754
job->cmd_buf_vpu_addr, cmdq->jobq->header.tail);
drivers/accel/ivpu/ivpu_job.c
759
ivpu_job_signal_and_destroy(vdev, job->job_id, VPU_JSM_STATUS_SUCCESS);
drivers/accel/ivpu/ivpu_job.c
767
xa_erase(&vdev->submitted_jobs_xa, job->job_id);
drivers/accel/ivpu/ivpu_job.c
776
ivpu_job_prepare_bos_for_submit(struct drm_file *file, struct ivpu_job *job, u32 *buf_handles,
drivers/accel/ivpu/ivpu_job.c
779
struct ivpu_file_priv *file_priv = job->file_priv;
drivers/accel/ivpu/ivpu_job.c
79
if (job->primary_preempt_buf)
drivers/accel/ivpu/ivpu_job.c
796
job->bos[i] = to_ivpu_bo(obj);
drivers/accel/ivpu/ivpu_job.c
798
ret = ivpu_bo_bind(job->bos[i]);
drivers/accel/ivpu/ivpu_job.c
803
bo = job->bos[CMD_BUF_IDX];
drivers/accel/ivpu/ivpu_job.c
815
job->cmd_buf_vpu_addr = bo->vpu_addr + commands_offset;
drivers/accel/ivpu/ivpu_job.c
818
struct ivpu_bo *preempt_bo = job->bos[preempt_buffer_index];
drivers/accel/ivpu/ivpu_job.c
828
job->primary_preempt_buf = preempt_bo;
drivers/accel/ivpu/ivpu_job.c
831
ret = drm_gem_lock_reservations((struct drm_gem_object **)job->bos, buf_count,
drivers/accel/ivpu/ivpu_job.c
839
ret = dma_resv_reserve_fences(job->bos[i]->base.base.resv, 1);
drivers/accel/ivpu/ivpu_job.c
848
dma_resv_add_fence(job->bos[i]->base.base.resv, job->done_fence, usage);
drivers/accel/ivpu/ivpu_job.c
852
drm_gem_unlock_reservations((struct drm_gem_object **)job->bos, buf_count, &acquire_ctx);
drivers/accel/ivpu/ivpu_job.c
864
struct ivpu_job *job;
drivers/accel/ivpu/ivpu_job.c
886
job = ivpu_job_create(file_priv, engine, buffer_count);
drivers/accel/ivpu/ivpu_job.c
887
if (!job) {
drivers/accel/ivpu/ivpu_job.c
892
ret = ivpu_job_prepare_bos_for_submit(file, job, buf_handles, buffer_count, cmds_offset,
drivers/accel/ivpu/ivpu_job.c
898
ret = ivpu_job_submit(job, priority, cmdq_id);
drivers/accel/ivpu/ivpu_job.c
90
job->primary_preempt_buf = cmdq->primary_preempt_buf;
drivers/accel/ivpu/ivpu_job.c
908
dma_fence_signal(job->done_fence);
drivers/accel/ivpu/ivpu_job.c
91
job->secondary_preempt_buf = cmdq->secondary_preempt_buf;
drivers/accel/ivpu/ivpu_job.c
910
ivpu_job_destroy(job);
drivers/accel/ivpu/ivpu_trace.h
28
TRACE_EVENT(job,
drivers/accel/ivpu/ivpu_trace.h
29
TP_PROTO(const char *event, struct ivpu_job *job),
drivers/accel/ivpu/ivpu_trace.h
30
TP_ARGS(event, job),
drivers/accel/ivpu/ivpu_trace.h
37
__entry->ctx_id = job->file_priv->ctx.id;
drivers/accel/ivpu/ivpu_trace.h
38
__entry->engine_id = job->engine_idx;
drivers/accel/ivpu/ivpu_trace.h
39
__entry->job_id = job->job_id;),
drivers/accel/ivpu/vpu_jsm_api.h
311
struct vpu_job_queue_entry job;
drivers/accel/rocket/rocket_job.c
108
static void rocket_job_hw_submit(struct rocket_core *core, struct rocket_job *job)
drivers/accel/rocket/rocket_job.c
119
task = &job->tasks[job->next_task_idx];
drivers/accel/rocket/rocket_job.c
120
job->next_task_idx++;
drivers/accel/rocket/rocket_job.c
157
struct drm_sched_job *job,
drivers/accel/rocket/rocket_job.c
167
ret = drm_sched_job_add_implicit_dependencies(job, bos[i],
drivers/accel/rocket/rocket_job.c
186
static int rocket_job_push(struct rocket_job *job)
drivers/accel/rocket/rocket_job.c
188
struct rocket_device *rdev = job->rdev;
drivers/accel/rocket/rocket_job.c
193
bos = kvmalloc_array(job->in_bo_count + job->out_bo_count, sizeof(void *),
drivers/accel/rocket/rocket_job.c
195
memcpy(bos, job->in_bos, job->in_bo_count * sizeof(void *));
drivers/accel/rocket/rocket_job.c
196
memcpy(&bos[job->in_bo_count], job->out_bos, job->out_bo_count * sizeof(void *));
drivers/accel/rocket/rocket_job.c
198
ret = drm_gem_lock_reservations(bos, job->in_bo_count + job->out_bo_count, &acquire_ctx);
drivers/accel/rocket/rocket_job.c
203
drm_sched_job_arm(&job->base);
drivers/accel/rocket/rocket_job.c
205
job->inference_done_fence = dma_fence_get(&job->base.s_fence->finished);
drivers/accel/rocket/rocket_job.c
207
ret = rocket_acquire_object_fences(job->in_bos, job->in_bo_count, &job->base, false);
drivers/accel/rocket/rocket_job.c
211
ret = rocket_acquire_object_fences(job->out_bos, job->out_bo_count, &job->base, true);
drivers/accel/rocket/rocket_job.c
215
kref_get(&job->refcount); /* put by scheduler job completion */
drivers/accel/rocket/rocket_job.c
217
drm_sched_entity_push_job(&job->base);
drivers/accel/rocket/rocket_job.c
220
rocket_attach_object_fences(job->out_bos, job->out_bo_count, job->inference_done_fence);
drivers/accel/rocket/rocket_job.c
223
drm_gem_unlock_reservations(bos, job->in_bo_count + job->out_bo_count, &acquire_ctx);
drivers/accel/rocket/rocket_job.c
232
struct rocket_job *job = container_of(ref, struct rocket_job,
drivers/accel/rocket/rocket_job.c
236
rocket_iommu_domain_put(job->domain);
drivers/accel/rocket/rocket_job.c
238
dma_fence_put(job->done_fence);
drivers/accel/rocket/rocket_job.c
239
dma_fence_put(job->inference_done_fence);
drivers/accel/rocket/rocket_job.c
241
if (job->in_bos) {
drivers/accel/rocket/rocket_job.c
242
for (i = 0; i < job->in_bo_count; i++)
drivers/accel/rocket/rocket_job.c
243
drm_gem_object_put(job->in_bos[i]);
drivers/accel/rocket/rocket_job.c
245
kvfree(job->in_bos);
drivers/accel/rocket/rocket_job.c
248
if (job->out_bos) {
drivers/accel/rocket/rocket_job.c
249
for (i = 0; i < job->out_bo_count; i++)
drivers/accel/rocket/rocket_job.c
250
drm_gem_object_put(job->out_bos[i]);
drivers/accel/rocket/rocket_job.c
252
kvfree(job->out_bos);
drivers/accel/rocket/rocket_job.c
255
kvfree(job->tasks);
drivers/accel/rocket/rocket_job.c
257
kfree(job);
drivers/accel/rocket/rocket_job.c
260
static void rocket_job_put(struct rocket_job *job)
drivers/accel/rocket/rocket_job.c
262
kref_put(&job->refcount, rocket_job_cleanup);
drivers/accel/rocket/rocket_job.c
267
struct rocket_job *job = to_rocket_job(sched_job);
drivers/accel/rocket/rocket_job.c
271
rocket_job_put(job);
drivers/accel/rocket/rocket_job.c
289
struct rocket_job *job = to_rocket_job(sched_job);
drivers/accel/rocket/rocket_job.c
290
struct rocket_device *rdev = job->rdev;
drivers/accel/rocket/rocket_job.c
295
if (unlikely(job->base.s_fence->finished.error))
drivers/accel/rocket/rocket_job.c
302
if (job->next_task_idx == job->task_count)
drivers/accel/rocket/rocket_job.c
309
if (job->done_fence)
drivers/accel/rocket/rocket_job.c
310
dma_fence_put(job->done_fence);
drivers/accel/rocket/rocket_job.c
311
job->done_fence = dma_fence_get(fence);
drivers/accel/rocket/rocket_job.c
317
ret = iommu_attach_group(job->domain->domain, core->iommu_group);
drivers/accel/rocket/rocket_job.c
322
core->in_flight_job = job;
drivers/accel/rocket/rocket_job.c
323
rocket_job_hw_submit(core, job);
drivers/accel/rocket/rocket_job.c
384
struct rocket_job *job = to_rocket_job(sched_job);
drivers/accel/rocket/rocket_job.c
385
struct rocket_device *rdev = job->rdev;
drivers/accel/rocket/rocket_job.c
534
struct drm_rocket_job *job)
drivers/accel/rocket/rocket_job.c
541
if (job->task_count == 0)
drivers/accel/rocket/rocket_job.c
558
ret = rocket_copy_tasks(dev, file, job, rjob);
drivers/accel/rocket/rocket_job.c
562
ret = drm_gem_objects_lookup(file, u64_to_user_ptr(job->in_bo_handles),
drivers/accel/rocket/rocket_job.c
563
job->in_bo_handle_count, &rjob->in_bos);
drivers/accel/rocket/rocket_job.c
567
rjob->in_bo_count = job->in_bo_handle_count;
drivers/accel/rocket/rocket_job.c
569
ret = drm_gem_objects_lookup(file, u64_to_user_ptr(job->out_bo_handles),
drivers/accel/rocket/rocket_job.c
570
job->out_bo_handle_count, &rjob->out_bos);
drivers/accel/rocket/rocket_job.c
574
rjob->out_bo_count = job->out_bo_handle_count;
drivers/accel/rocket/rocket_job.c
61
struct drm_rocket_job *job,
drivers/accel/rocket/rocket_job.c
66
if (job->task_struct_size < sizeof(struct drm_rocket_task))
drivers/accel/rocket/rocket_job.c
69
rjob->task_count = job->task_count;
drivers/accel/rocket/rocket_job.c
74
rjob->tasks = kvmalloc_objs(*rjob->tasks, job->task_count);
drivers/accel/rocket/rocket_job.c
84
u64_to_user_ptr(job->tasks) + i * job->task_struct_size,
drivers/crypto/tegra/tegra-se-main.c
144
struct host1x_job *job;
drivers/crypto/tegra/tegra-se-main.c
147
job = host1x_job_alloc(se->channel, 1, 0, true);
drivers/crypto/tegra/tegra-se-main.c
148
if (!job) {
drivers/crypto/tegra/tegra-se-main.c
153
job->syncpt = host1x_syncpt_get(se->syncpt);
drivers/crypto/tegra/tegra-se-main.c
154
job->syncpt_incrs = 1;
drivers/crypto/tegra/tegra-se-main.c
155
job->client = &se->client;
drivers/crypto/tegra/tegra-se-main.c
156
job->class = se->client.class;
drivers/crypto/tegra/tegra-se-main.c
157
job->serialize = true;
drivers/crypto/tegra/tegra-se-main.c
158
job->engine_fallback_streamid = se->stream_id;
drivers/crypto/tegra/tegra-se-main.c
159
job->engine_streamid_offset = SE_STREAM_ID;
drivers/crypto/tegra/tegra-se-main.c
163
host1x_job_add_gather(job, &cmdbuf->bo, size, 0);
drivers/crypto/tegra/tegra-se-main.c
165
ret = host1x_job_pin(job, se->dev);
drivers/crypto/tegra/tegra-se-main.c
171
ret = host1x_job_submit(job);
drivers/crypto/tegra/tegra-se-main.c
177
ret = host1x_syncpt_wait(job->syncpt, job->syncpt_end,
drivers/crypto/tegra/tegra-se-main.c
184
host1x_job_put(job);
drivers/crypto/tegra/tegra-se-main.c
188
host1x_job_unpin(job);
drivers/crypto/tegra/tegra-se-main.c
190
host1x_job_put(job);
drivers/gpu/drm/amd/amdgpu/amdgpu.h
1386
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu.h
1425
struct amdgpu_job *job);
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
692
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
714
ret = amdgpu_job_alloc(adev, NULL, NULL, NULL, 1, &job, 0);
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
718
ib = &job->ibs[0];
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
725
job->vmid = vmid;
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
726
job->num_ibs = 1;
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
728
ret = amdgpu_ib_schedule(ring, 1, ib, job, &f);
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
740
amdgpu_job_free(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
1002
struct amdgpu_job *job = p->jobs[i];
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
1004
for (j = 0; j < job->num_ibs; ++j)
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
1005
trace_amdgpu_cs(p, job, &job->ibs[j]);
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
1010
struct amdgpu_job *job)
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
1012
struct amdgpu_ring *ring = amdgpu_job_ring(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
1021
for (i = 0; i < job->num_ibs; ++i) {
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
1022
struct amdgpu_ib *ib = &job->ibs[i];
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
1052
r = amdgpu_ring_parse_cs(ring, p, job, ib);
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
1060
r = amdgpu_ring_patch_cs_in_place(ring, p, job, ib);
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
1086
struct amdgpu_job *job = p->gang_leader;
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
1172
job = p->jobs[i];
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
1174
if (!job->vm)
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
1177
job->vm_pd_addr = amdgpu_gmc_pd_addr(vm->root.bo);
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
338
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
346
job = p->jobs[r];
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
347
ring = amdgpu_job_ring(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
348
ib = &job->ibs[job->num_ibs++];
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
378
job->preamble_status |= AMDGPU_PREAMBLE_IB_PRESENT;
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
1963
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
1993
job = to_amdgpu_job(s_job);
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
1994
if (preempted && (&job->hw_fence->base) == fence)
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
1996
job->preemption_status |= AMDGPU_IB_PREEMPTED;
drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
33
bool vram_lost, struct amdgpu_job *job)
drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
539
bool vram_lost, struct amdgpu_job *job)
drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
553
if (job && job->pasid)
drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
554
size += sizeof(struct amdgpu_coredump_ib_info) * job->num_ibs;
drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
563
if (job && job->pasid) {
drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
566
ti = amdgpu_vm_get_task_info_pasid(adev, job->pasid);
drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
571
coredump->pasid = job->pasid;
drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
572
coredump->vmid = job->vmid;
drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
573
coredump->num_ibs = job->num_ibs;
drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
574
for (i = 0; i < job->num_ibs; ++i) {
drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
575
coredump->ibs[i].gpu_addr = job->ibs[i].gpu_addr;
drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
576
coredump->ibs[i].ib_size_dw = job->ibs[i].length_dw;
drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
580
if (job) {
drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c
581
s_job = &job->base;
drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.h
73
bool vram_lost, struct amdgpu_job *job);
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
5125
struct amdgpu_job *job = NULL;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
5133
job = reset_context->job;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
5140
if (job)
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
5141
fence = &job->hw_fence->base;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
5245
amdgpu_coredump(tmp_adev, false, vram_lost, reset_context->job);
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
5590
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
5806
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
5815
int pasid = job ? job->pasid : -EINVAL;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
5856
reset_context->job = job;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
5880
amdgpu_device_halt_activities(adev, job, reset_context, &device_list,
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
5890
if (job && (dma_fence_get_status(&job->hw_fence->base) > 0)) {
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
6776
struct amdgpu_job *job)
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
6779
struct drm_sched_fence *f = job->base.s_fence;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
6797
owner = job->enforce_isolation ? f->owner : (void *)~0l;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
6819
if (!job->gang_submit) {
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
1670
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
1691
ib_size_dw * sizeof(uint32_t), 0, &job,
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
1696
job->enforce_isolation = true;
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
1698
job->run_cleaner_shader = true;
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
1700
ib = &job->ibs[0];
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
1704
f = amdgpu_job_submit(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
726
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
764
&job, AMDGPU_KERNEL_JOB_ID_FLUSH_GPU_TLB);
drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
768
job->vm_pd_addr = amdgpu_gmc_pd_addr(adev->gart.bo);
drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
769
job->vm_needs_flush = true;
drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
770
job->ibs->ptr[job->ibs->length_dw++] = ring->funcs->nop;
drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
771
amdgpu_ring_pad_ib(ring, &job->ibs[0]);
drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
772
fence = amdgpu_job_submit(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
125
struct amdgpu_ib *ibs, struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
140
int vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
150
if (job) {
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
151
vm = job->vm;
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
152
fence_ctx = job->base.s_fence ?
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
153
job->base.s_fence->finished.context : 0;
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
154
shadow_va = job->shadow_va;
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
155
csa_va = job->csa_va;
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
156
gds_va = job->gds_va;
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
157
init_shadow = job->init_shadow;
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
158
af = job->hw_fence;
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
165
job->hw_vm_fence->context = fence_ctx;
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
184
if (vm && !job->vmid) {
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
207
if (ring->funcs->emit_pipeline_sync && job &&
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
208
((tmp = amdgpu_sync_get_fence(&job->explicit_sync)) ||
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
209
need_ctx_switch || amdgpu_vm_need_pipeline_sync(ring, job))) {
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
214
trace_amdgpu_ib_pipe_sync(job, tmp);
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
219
if (job) {
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
220
vm_af = job->hw_vm_fence;
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
223
amdgpu_vm_flush(ring, job, need_pipe_sync);
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
258
if (job && ring->funcs->emit_cntxcntl) {
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
259
status |= job->preamble_status;
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
260
status |= job->preemption_status;
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
267
if (job && ring->funcs->emit_frame_cntl) {
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
275
if (job && ring->funcs->emit_frame_cntl) {
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
283
amdgpu_ring_emit_ib(ring, job, ib, status);
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
287
if (job && ring->funcs->emit_frame_cntl)
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
299
if (job && job->uf_addr) {
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
300
amdgpu_ring_emit_fence(ring, job->uf_addr, job->uf_sequence,
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
313
if (job)
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
322
if (job && ring->funcs->emit_switch_buffer)
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
338
if (!job)
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
180
struct amdgpu_job *job)
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
182
return id->gds_base != job->gds_base ||
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
183
id->gds_size != job->gds_size ||
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
184
id->gws_base != job->gws_base ||
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
185
id->gws_size != job->gws_size ||
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
186
id->oa_base != job->oa_base ||
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
187
id->oa_size != job->oa_size;
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
192
struct amdgpu_job *job)
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
194
return id->pd_gpu_addr == job->vm_pd_addr &&
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
195
!amdgpu_vmid_gds_switch_needed(id, job);
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
259
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
272
!amdgpu_vmid_compatible(*id, job) ||
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
302
r = amdgpu_sync_fence(&(*id)->active, &job->base.s_fence->finished,
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
307
job->vm_needs_flush = needs_flush;
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
308
job->spm_update_needed = true;
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
324
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
334
job->vm_needs_flush = vm->use_cpu_for_update;
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
344
if (!amdgpu_vmid_compatible(*id, job))
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
362
&job->base.s_fence->finished,
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
367
job->vm_needs_flush |= needs_flush;
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
386
struct amdgpu_job *job, struct dma_fence **fence)
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
401
r = amdgpu_vmid_grab_reserved(vm, ring, job, &id, fence);
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
405
r = amdgpu_vmid_grab_used(vm, ring, job, &id);
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
415
&job->base.s_fence->finished,
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
420
job->vm_needs_flush = true;
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
426
job->gds_switch_needed = amdgpu_vmid_gds_switch_needed(id, job);
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
427
if (job->vm_needs_flush) {
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
432
job->vmid = id - id_mgr->ids;
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
433
job->pasid = vm->pasid;
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
435
id->gds_base = job->gds_base;
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
436
id->gds_size = job->gds_size;
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
437
id->gws_base = job->gws_base;
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
438
id->gws_size = job->gws_size;
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
439
id->oa_base = job->oa_base;
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
440
id->oa_size = job->oa_size;
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
441
id->pd_gpu_addr = job->vm_pd_addr;
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c
444
trace_amdgpu_vm_grab_id(vm, ring, job);
drivers/gpu/drm/amd/amdgpu/amdgpu_ids.h
87
struct amdgpu_job *job, struct dma_fence **fence);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
112
amdgpu_job_core_dump(adev, job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
116
amdgpu_ring_soft_recovery(ring, job->vmid, s_job->s_fence->parent)) {
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
123
job->base.sched->name, atomic_read(&ring->fence_drv.last_seq),
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
126
ti = amdgpu_vm_get_task_info_pasid(ring->adev, job->pasid);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
140
r = amdgpu_ring_reset(ring, job->vmid, job->hw_fence);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
172
r = amdgpu_device_gpu_recover(ring->adev, job, &reset_context);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
190
unsigned int num_ibs, struct amdgpu_job **job,
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
199
*job = kzalloc_flex(**job, ibs, num_ibs);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
200
if (!*job)
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
208
(*job)->hw_fence = af;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
215
(*job)->hw_vm_fence = af;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
217
(*job)->vm = vm;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
219
amdgpu_sync_create(&(*job)->explicit_sync);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
220
(*job)->generation = amdgpu_vm_generation(adev, vm);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
221
(*job)->vm_pd_addr = AMDGPU_BO_INVALID_OFFSET;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
226
r = drm_sched_job_init(&(*job)->base, entity, 1, owner, drm_client_id);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
230
kfree((*job)->hw_vm_fence);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
233
kfree((*job)->hw_fence);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
235
kfree(*job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
236
*job = NULL;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
244
struct amdgpu_job **job, u64 k_job_id)
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
248
r = amdgpu_job_alloc(adev, NULL, entity, owner, 1, job,
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
253
(*job)->num_ibs = 1;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
254
r = amdgpu_ib_get(adev, NULL, size, pool_type, &(*job)->ibs[0]);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
257
drm_sched_job_cleanup(&(*job)->base);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
258
kfree((*job)->hw_vm_fence);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
259
kfree((*job)->hw_fence);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
260
kfree(*job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
261
*job = NULL;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
267
void amdgpu_job_set_resources(struct amdgpu_job *job, struct amdgpu_bo *gds,
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
271
job->gds_base = amdgpu_bo_gpu_offset(gds) >> PAGE_SHIFT;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
272
job->gds_size = amdgpu_bo_size(gds) >> PAGE_SHIFT;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
275
job->gws_base = amdgpu_bo_gpu_offset(gws) >> PAGE_SHIFT;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
276
job->gws_size = amdgpu_bo_size(gws) >> PAGE_SHIFT;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
279
job->oa_base = amdgpu_bo_gpu_offset(oa) >> PAGE_SHIFT;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
280
job->oa_size = amdgpu_bo_size(oa) >> PAGE_SHIFT;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
284
void amdgpu_job_free_resources(struct amdgpu_job *job)
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
290
if (job->base.s_fence &&
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
291
dma_fence_was_initialized(&job->base.s_fence->finished))
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
292
f = &job->base.s_fence->finished;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
293
else if (dma_fence_was_initialized(&job->hw_fence->base))
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
294
f = &job->hw_fence->base;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
298
for (i = 0; i < job->num_ibs; ++i)
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
299
amdgpu_ib_free(&job->ibs[i], f);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
304
struct amdgpu_job *job = to_amdgpu_job(s_job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
308
amdgpu_sync_free(&job->explicit_sync);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
310
if (dma_fence_was_initialized(&job->hw_fence->base))
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
311
dma_fence_put(&job->hw_fence->base);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
313
kfree(job->hw_fence);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
314
if (dma_fence_was_initialized(&job->hw_vm_fence->base))
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
315
dma_fence_put(&job->hw_vm_fence->base);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
317
kfree(job->hw_vm_fence);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
319
kfree(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
322
void amdgpu_job_set_gang_leader(struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
327
WARN_ON(job->gang_submit);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
333
if (job != leader)
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
335
job->gang_submit = fence;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
338
void amdgpu_job_free(struct amdgpu_job *job)
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
340
if (job->base.entity)
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
341
drm_sched_job_cleanup(&job->base);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
343
amdgpu_job_free_resources(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
344
amdgpu_sync_free(&job->explicit_sync);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
345
if (job->gang_submit != &job->base.s_fence->scheduled)
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
346
dma_fence_put(job->gang_submit);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
348
if (dma_fence_was_initialized(&job->hw_fence->base))
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
349
dma_fence_put(&job->hw_fence->base);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
351
kfree(job->hw_fence);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
352
if (dma_fence_was_initialized(&job->hw_vm_fence->base))
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
353
dma_fence_put(&job->hw_vm_fence->base);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
355
kfree(job->hw_vm_fence);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
357
kfree(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
360
struct dma_fence *amdgpu_job_submit(struct amdgpu_job *job)
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
364
drm_sched_job_arm(&job->base);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
365
f = dma_fence_get(&job->base.s_fence->finished);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
366
amdgpu_job_free_resources(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
367
drm_sched_entity_push_job(&job->base);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
37
struct amdgpu_job *job)
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
372
int amdgpu_job_submit_direct(struct amdgpu_job *job, struct amdgpu_ring *ring,
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
377
job->base.sched = &ring->sched;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
378
r = amdgpu_ib_schedule(ring, job->num_ibs, job->ibs, job, fence);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
383
amdgpu_job_free(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
394
struct amdgpu_job *job = to_amdgpu_job(sched_job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
402
if (job->gang_submit) {
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
403
fence = amdgpu_device_switch_gang(ring->adev, job->gang_submit);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
408
fence = amdgpu_device_enforce_isolation(ring->adev, ring, job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
412
if (job->vm && !job->vmid) {
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
413
r = amdgpu_vmid_grab(job->vm, ring, job, &fence);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
424
dma_fence_set_error(&job->base.s_fence->finished, r);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
433
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
436
job = to_amdgpu_job(sched_job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
437
finished = &job->base.s_fence->finished;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
439
trace_amdgpu_sched_run_job(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
442
if (job->generation != amdgpu_vm_generation(adev, job->vm) ||
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
443
(job->job_run_counter && job->gang_submit))
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
450
r = amdgpu_ib_schedule(ring, job->num_ibs, job->ibs, job,
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
458
job->job_run_counter++;
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
459
amdgpu_job_free_resources(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
48
amdgpu_coredump(adev, true, false, job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
52
struct amdgpu_job *job)
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
80
amdgpu_job_do_core_dump(tmp_adev, job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
91
struct amdgpu_job *job = to_amdgpu_job(s_job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.h
108
static inline struct amdgpu_ring *amdgpu_job_ring(struct amdgpu_job *job)
drivers/gpu/drm/amd/amdgpu/amdgpu_job.h
111
container_of(job->base.entity->rq, typeof(*sched), rq);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.h
118
unsigned int num_ibs, struct amdgpu_job **job,
drivers/gpu/drm/amd/amdgpu/amdgpu_job.h
123
struct amdgpu_job **job,
drivers/gpu/drm/amd/amdgpu/amdgpu_job.h
125
void amdgpu_job_set_resources(struct amdgpu_job *job, struct amdgpu_bo *gds,
drivers/gpu/drm/amd/amdgpu/amdgpu_job.h
127
void amdgpu_job_free_resources(struct amdgpu_job *job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.h
128
void amdgpu_job_set_gang_leader(struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_job.h
130
void amdgpu_job_free(struct amdgpu_job *job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.h
131
struct dma_fence *amdgpu_job_submit(struct amdgpu_job *job);
drivers/gpu/drm/amd/amdgpu/amdgpu_job.h
132
int amdgpu_job_submit_direct(struct amdgpu_job *job, struct amdgpu_ring *ring,
drivers/gpu/drm/amd/amdgpu/amdgpu_job.h
42
#define AMDGPU_JOB_GET_VMID(job) ((job) ? (job)->vmid : 0)
drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c
192
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c
199
AMDGPU_IB_POOL_DIRECT, &job,
drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c
204
ib = &job->ibs[0];
drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c
214
r = amdgpu_job_submit_direct(job, ring, &f);
drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c
225
amdgpu_job_free(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c
565
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.h
181
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c
325
if (rst_ctxt->job) {
drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c
327
rst_ctxt->job->base.sched->name);
drivers/gpu/drm/amd/amdgpu/amdgpu_reset.h
93
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h
239
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h
242
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h
249
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h
431
#define amdgpu_ring_parse_cs(r, p, job, ib) ((r)->funcs->parse_cs((p), (job), (ib)))
drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h
432
#define amdgpu_ring_patch_cs_in_place(r, p, job, ib) ((r)->funcs->patch_cs_in_place((p), (job), (ib)))
drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h
438
#define amdgpu_ring_emit_ib(r, job, ib, flags) ((r)->funcs->emit_ib((r), (job), (ib), (flags)))
drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h
583
struct amdgpu_ib *ibs, struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
434
int amdgpu_sync_push_to_job(struct amdgpu_sync *sync, struct amdgpu_job *job)
drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
449
r = drm_sched_job_add_dependency(&job->base, f);
drivers/gpu/drm/amd/amdgpu/amdgpu_sync.h
61
int amdgpu_sync_push_to_job(struct amdgpu_sync *sync, struct amdgpu_job *job);
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
144
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
146
TP_ARGS(p, job, ib),
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
156
__entry->sched = container_of(job->base.entity->rq,
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
171
TP_PROTO(struct amdgpu_job *job),
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
172
TP_ARGS(job),
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
174
__string(timeline, AMDGPU_JOB_GET_TIMELINE_NAME(job))
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
178
__string(ring, to_amdgpu_ring(job->base.sched)->name)
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
184
__entry->context = job->base.s_fence->finished.context;
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
185
__entry->seqno = job->base.s_fence->finished.seqno;
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
187
__entry->num_ibs = job->num_ibs;
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
195
TP_PROTO(struct amdgpu_job *job),
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
196
TP_ARGS(job),
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
198
__string(timeline, AMDGPU_JOB_GET_TIMELINE_NAME(job))
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
201
__string(ring, to_amdgpu_ring(job->base.sched)->name)
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
207
__entry->context = job->base.s_fence->finished.context;
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
208
__entry->seqno = job->base.s_fence->finished.seqno;
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
210
__entry->num_ibs = job->num_ibs;
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
220
struct amdgpu_job *job),
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
221
TP_ARGS(vm, ring, job),
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
235
__entry->vmid = job->vmid;
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
237
__entry->pd_addr = job->vm_pd_addr;
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
238
__entry->needs_flush = job->vm_needs_flush;
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
35
#define AMDGPU_JOB_GET_TIMELINE_NAME(job) \
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
36
job->base.s_fence->finished.ops->get_timeline_name(&job->base.s_fence->finished)
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
1573
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
1595
&job,
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
1608
amdgpu_emit_copy_buffer(adev, &job->ibs[0], src_addr, dst_addr,
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
1611
fence = amdgpu_ttm_job_submit(adev, &adev->mman.default_entity, job, num_dw);
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
170
struct amdgpu_job *job, u32 num_dw)
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
175
amdgpu_ring_pad_ib(ring, &job->ibs[0]);
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
176
WARN_ON(job->ibs[0].length_dw > num_dw);
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
180
return amdgpu_job_submit(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
207
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
2439
struct amdgpu_job **job,
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
2446
num_dw * 4, pool, job, k_job_id);
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
2451
(*job)->vm_pd_addr = amdgpu_gmc_pd_addr(adev->gmc.pdb0_bo ?
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
2454
(*job)->vm_needs_flush = true;
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
2459
return drm_sched_job_add_resv_dependencies(&(*job)->base, resv,
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
247
AMDGPU_IB_POOL_DELAYED, &job,
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
2473
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
2490
resv, vm_needs_flush, &job,
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
2498
amdgpu_emit_copy_buffer(adev, &job->ibs[0], src_offset,
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
2505
*fence = amdgpu_ttm_job_submit(adev, entity, job, num_dw);
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
2510
amdgpu_job_free(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
2525
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
253
src_addr += job->ibs[0].gpu_addr;
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
2534
vm_needs_flush, &job, k_job_id);
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
2541
amdgpu_emit_fill_buffer(adev, &job->ibs[0], src_data, dst_addr,
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
2548
*fence = amdgpu_ttm_job_submit(adev, entity, job, num_dw);
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
257
amdgpu_emit_copy_buffer(adev, &job->ibs[0], src_addr,
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
264
cpu_addr = &job->ibs[0].ptr[num_dw];
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
277
dma_fence_put(amdgpu_ttm_job_submit(adev, entity, job, num_dw));
drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
1108
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
1121
job->vm = NULL;
drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
1160
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
1168
AMDGPU_IB_POOL_DELAYED, &job,
drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
1183
ib = &job->ibs[0];
drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
1198
r = amdgpu_job_submit_direct(job, ring, &f);
drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
1202
r = drm_sched_job_add_resv_dependencies(&job->base,
drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
1208
f = amdgpu_job_submit(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
1222
amdgpu_job_free(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.h
87
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
1014
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
1107
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
466
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
476
&job, AMDGPU_KERNEL_JOB_ID_VCN_RING_TEST);
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
488
ib = &job->ibs[0];
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
529
r = amdgpu_job_submit_direct(job, ring, &f);
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
540
amdgpu_job_free(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
558
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
567
AMDGPU_IB_POOL_DELAYED, &job,
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
572
ib = &job->ibs[0];
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
596
r = amdgpu_job_submit_direct(job, ring, &f);
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
598
f = amdgpu_job_submit(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
608
amdgpu_job_free(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
765
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
779
job->vm = NULL;
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.h
65
int amdgpu_vce_ring_parse_cs(struct amdgpu_cs_parser *p, struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.h
68
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.h
70
void amdgpu_vce_ring_emit_ib(struct amdgpu_ring *ring, struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
1011
&job, AMDGPU_KERNEL_JOB_ID_VCN_RING_TEST);
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
1015
ib = &job->ibs[0];
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
1045
r = amdgpu_job_submit_direct(job, ring, &f);
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
1056
amdgpu_job_free(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
628
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
634
&job, AMDGPU_KERNEL_JOB_ID_VCN_RING_TEST);
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
638
ib = &job->ibs[0];
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
651
r = amdgpu_job_submit_direct(job, ring, &f);
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
664
amdgpu_job_free(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
802
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
814
&job, AMDGPU_KERNEL_JOB_ID_VCN_RING_TEST);
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
818
ib = &job->ibs[0];
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
844
r = amdgpu_job_submit_direct(job, ring, &f);
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
857
amdgpu_job_free(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
932
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
944
&job, AMDGPU_KERNEL_JOB_ID_VCN_RING_TEST);
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
948
ib = &job->ibs[0];
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
978
r = amdgpu_job_submit_direct(job, ring, &f);
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
989
amdgpu_job_free(job);
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c
999
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
742
struct amdgpu_job *job)
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
748
if (job->vmid == 0)
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
751
if (job->vm_needs_flush || ring->has_compute_vm_bug)
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
754
if (ring->funcs->emit_gds_switch && job->gds_switch_needed)
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
757
if (amdgpu_vmid_had_gpu_reset(adev, &id_mgr->ids[job->vmid]))
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
772
void amdgpu_vm_flush(struct amdgpu_ring *ring, struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
779
struct amdgpu_vmid *id = &id_mgr->ids[job->vmid];
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
780
bool spm_update_needed = job->spm_update_needed;
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
782
job->gds_switch_needed;
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
783
bool vm_flush_needed = job->vm_needs_flush;
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
797
if (id->pasid != job->pasid || !id->pasid_mapping ||
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
804
job->vm_pd_addr != AMDGPU_BO_INVALID_OFFSET;
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
808
cleaner_shader_needed = job->run_cleaner_shader &&
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
810
ring->funcs->emit_cleaner_shader && job->base.s_fence &&
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
811
&job->base.s_fence->scheduled == isolation->spearhead;
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
840
trace_amdgpu_vm_flush(ring, job->vmid, job->vm_pd_addr);
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
841
amdgpu_ring_emit_vm_flush(ring, job->vmid, job->vm_pd_addr);
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
845
amdgpu_gmc_emit_pasid_mapping(ring, job->vmid, job->pasid);
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
848
adev->gfx.rlc.funcs->update_spm_vmid(adev, ring->xcc_id, ring, job->vmid);
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
852
amdgpu_ring_emit_gds_switch(ring, job->vmid, job->gds_base,
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
853
job->gds_size, job->gws_base,
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
854
job->gws_size, job->oa_base,
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
855
job->oa_size);
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
858
amdgpu_fence_emit(ring, job->hw_vm_fence, 0);
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
859
fence = &job->hw_vm_fence->base;
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
874
id->pasid = job->pasid;
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
304
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
518
void amdgpu_vm_flush(struct amdgpu_ring *ring, struct amdgpu_job *job, bool need_pipe_sync);
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
580
struct amdgpu_job *job);
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c
113
struct amdgpu_ib *ib = p->job->ibs;
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c
123
f = amdgpu_job_submit(p->job);
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c
162
struct amdgpu_ib *ib = p->job->ibs;
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c
192
struct amdgpu_ib *ib = p->job->ibs;
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c
235
r = drm_sched_job_add_dependency(&p->job->base, fence);
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c
246
ndw -= p->job->ibs->length_dw;
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c
279
pte = (uint64_t *)&(p->job->ibs->ptr[p->num_dw_left]);
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c
59
ndw * 4, pool, &p->job, k_job_id);
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c
89
r = amdgpu_sync_push_to_job(sync, p->job);
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.c
92
amdgpu_job_free(p->job);
drivers/gpu/drm/amd/amdgpu/amdgpu_vpe.c
530
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/amdgpu_vpe.c
534
uint32_t vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/cik_sdma.c
222
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/cik_sdma.c
226
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
8644
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
8648
unsigned int vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
8681
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
8685
unsigned int vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
5997
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
6001
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
6031
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
6035
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c
4493
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c
4497
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c
4516
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c
4520
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c
3422
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c
3426
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
1920
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
1924
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
2197
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
2201
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
2228
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
2232
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
6074
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
6078
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
6106
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
6110
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
5448
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
5452
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
5473
job->gds_size > 0 && job->gds_base != 0);
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
5549
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
5553
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c
2923
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c
2927
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/jpeg_v1_0.c
298
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/jpeg_v1_0.c
303
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/jpeg_v1_0.c
39
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/jpeg_v1_0.c
634
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c
555
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c
559
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.h
52
void jpeg_v2_0_dec_ring_emit_ib(struct amdgpu_ring *ring, struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.c
872
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.c
876
unsigned int vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.h
59
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
247
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
251
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
423
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
427
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
807
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
811
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c
374
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c
378
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c
430
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c
434
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c
278
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c
282
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c
266
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c
270
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c
268
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c
272
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/sdma_v7_1.c
262
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/sdma_v7_1.c
266
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/si_dma.c
78
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/si_dma.c
82
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/uvd_v3_1.c
90
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c
550
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c
559
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
1025
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
1029
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
1053
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
1057
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
213
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
220
AMDGPU_IB_POOL_DIRECT, &job,
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
225
ib = &job->ibs[0];
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
248
r = amdgpu_job_submit_direct(job, ring, &f);
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
258
amdgpu_job_free(job);
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
278
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
285
AMDGPU_IB_POOL_DIRECT, &job,
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
290
ib = &job->ibs[0];
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
313
r = amdgpu_job_submit_direct(job, ring, &f);
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
323
amdgpu_job_free(job);
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
1290
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
1293
struct amdgpu_ring *ring = amdgpu_job_ring(job);
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
1322
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
1327
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
1355
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
1359
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
221
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
228
AMDGPU_IB_POOL_DIRECT, &job,
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
233
ib = &job->ibs[0];
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
256
r = amdgpu_job_submit_direct(job, ring, &f);
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
266
amdgpu_job_free(job);
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
285
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
292
AMDGPU_IB_POOL_DIRECT, &job,
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
297
ib = &job->ibs[0];
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
320
r = amdgpu_job_submit_direct(job, ring, &f);
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
330
amdgpu_job_free(job);
drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
865
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
869
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/vce_v4_0.c
717
static void vce_v4_0_ring_emit_ib(struct amdgpu_ring *ring, struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/vce_v4_0.c
720
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/vcn_sw_ring.c
44
void vcn_dec_sw_ring_emit_ib(struct amdgpu_ring *ring, struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/vcn_sw_ring.c
47
uint32_t vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/vcn_sw_ring.h
35
void vcn_dec_sw_ring_emit_ib(struct amdgpu_ring *ring, struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
1588
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
1593
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
1752
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
1756
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
2051
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
2087
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c
2105
r = vcn_v1_0_validate_bo(p, job,
drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c
1575
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c
1580
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c
1750
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c
1754
unsigned vmid = AMDGPU_JOB_GET_VMID(job);
drivers/gpu/drm/amd/amdgpu/vcn_v2_0.h
32
extern void vcn_v2_0_dec_ring_emit_ib(struct amdgpu_ring *ring, struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/vcn_v2_0.h
45
extern void vcn_v2_0_enc_ring_emit_ib(struct amdgpu_ring *ring, struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c
1885
struct amdgpu_job *job)
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c
1895
fence = amdgpu_ctx_get_fence(p->ctx, job->base.entity, ~0ull);
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c
1903
drm_sched_entity_modify_sched(job->base.entity, scheds, 1);
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c
1907
static int vcn_v3_0_dec_msg(struct amdgpu_cs_parser *p, struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c
1997
r = vcn_v3_0_limit_sched(p, job);
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c
2008
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c
2011
struct amdgpu_ring *ring = amdgpu_job_ring(job);
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c
2030
r = vcn_v3_0_dec_msg(p, job,
drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c
1801
struct amdgpu_job *job)
drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c
1811
fence = amdgpu_ctx_get_fence(p->ctx, job->base.entity, ~0ull);
drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c
1819
drm_sched_entity_modify_sched(job->base.entity, scheds, 1);
drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c
1823
static int vcn_v4_0_dec_msg(struct amdgpu_cs_parser *p, struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c
1913
r = vcn_v4_0_limit_sched(p, job);
drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c
1946
struct amdgpu_job *job,
drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c
1949
struct amdgpu_ring *ring = amdgpu_job_ring(job);
drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c
1968
return vcn_v4_0_dec_msg(p, job, msg_buffer_addr);
drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c
1973
return vcn_v4_0_limit_sched(p, job);
drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
54
struct amdgpu_job *job;
drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
71
&job,
drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
77
src_addr += job->ibs[0].gpu_addr;
drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
81
amdgpu_emit_copy_buffer(adev, &job->ibs[0], src_addr,
drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
84
amdgpu_ring_pad_ib(ring, &job->ibs[0]);
drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
85
WARN_ON(job->ibs[0].length_dw > num_dw);
drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
93
cpu_addr = &job->ibs[0].ptr[num_dw];
drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
96
fence = amdgpu_job_submit(job);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
598
struct drm_writeback_job *job;
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
607
job = list_first_entry_or_null(&acrtc->wb_conn->job_queue,
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
613
if (job) {
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
146
struct drm_writeback_job *job)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
151
if (!job->fb)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
154
rbo = gem_to_amdgpu_bo(job->fb->obj[0]);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
84
struct drm_writeback_job *job)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
93
if (!job->fb) {
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
98
afb = to_amdgpu_framebuffer(job->fb);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_wb.c
99
obj = job->fb->obj[0];
drivers/gpu/drm/drm_writeback.c
437
int drm_writeback_prepare_job(struct drm_writeback_job *job)
drivers/gpu/drm/drm_writeback.c
439
struct drm_writeback_connector *connector = job->connector;
drivers/gpu/drm/drm_writeback.c
445
ret = funcs->prepare_writeback_job(connector, job);
drivers/gpu/drm/drm_writeback.c
450
job->prepared = true;
drivers/gpu/drm/drm_writeback.c
477
struct drm_writeback_job *job;
drivers/gpu/drm/drm_writeback.c
480
job = conn_state->writeback_job;
drivers/gpu/drm/drm_writeback.c
484
list_add_tail(&job->list_entry, &wb_connector->job_queue);
drivers/gpu/drm/drm_writeback.c
489
void drm_writeback_cleanup_job(struct drm_writeback_job *job)
drivers/gpu/drm/drm_writeback.c
491
struct drm_writeback_connector *connector = job->connector;
drivers/gpu/drm/drm_writeback.c
495
if (job->prepared && funcs->cleanup_writeback_job)
drivers/gpu/drm/drm_writeback.c
496
funcs->cleanup_writeback_job(connector, job);
drivers/gpu/drm/drm_writeback.c
498
if (job->fb)
drivers/gpu/drm/drm_writeback.c
499
drm_framebuffer_put(job->fb);
drivers/gpu/drm/drm_writeback.c
501
if (job->out_fence)
drivers/gpu/drm/drm_writeback.c
502
dma_fence_put(job->out_fence);
drivers/gpu/drm/drm_writeback.c
504
kfree(job);
drivers/gpu/drm/drm_writeback.c
517
struct drm_writeback_job *job = container_of(work,
drivers/gpu/drm/drm_writeback.c
521
drm_writeback_cleanup_job(job);
drivers/gpu/drm/drm_writeback.c
545
struct drm_writeback_job *job;
drivers/gpu/drm/drm_writeback.c
549
job = list_first_entry_or_null(&wb_connector->job_queue,
drivers/gpu/drm/drm_writeback.c
552
if (job)
drivers/gpu/drm/drm_writeback.c
553
list_del(&job->list_entry);
drivers/gpu/drm/drm_writeback.c
557
if (WARN_ON(!job))
drivers/gpu/drm/drm_writeback.c
560
out_fence = job->out_fence;
drivers/gpu/drm/drm_writeback.c
566
job->out_fence = NULL;
drivers/gpu/drm/drm_writeback.c
569
INIT_WORK(&job->cleanup_work, cleanup_work);
drivers/gpu/drm/drm_writeback.c
570
queue_work(system_long_wq, &job->cleanup_work);
drivers/gpu/drm/imagination/pvr_job.c
143
pvr_geom_job_fw_cmd_init(struct pvr_job *job,
drivers/gpu/drm/imagination/pvr_job.c
152
if (job->ctx->type != DRM_PVR_CTX_TYPE_RENDER)
drivers/gpu/drm/imagination/pvr_job.c
155
if (!job->hwrt)
drivers/gpu/drm/imagination/pvr_job.c
158
job->fw_ccb_cmd_type = ROGUE_FWIF_CCB_CMD_TYPE_GEOM;
drivers/gpu/drm/imagination/pvr_job.c
159
err = pvr_fw_cmd_init(job->pvr_dev, job, &pvr_cmd_geom_stream,
drivers/gpu/drm/imagination/pvr_job.c
164
cmd = job->cmd;
drivers/gpu/drm/imagination/pvr_job.c
167
pvr_fw_object_get_fw_addr(job->hwrt->fw_obj, &cmd->cmd_shared.hwrt_data_fw_addr);
drivers/gpu/drm/imagination/pvr_job.c
172
pvr_frag_job_fw_cmd_init(struct pvr_job *job,
drivers/gpu/drm/imagination/pvr_job.c
181
if (job->ctx->type != DRM_PVR_CTX_TYPE_RENDER)
drivers/gpu/drm/imagination/pvr_job.c
184
if (!job->hwrt)
drivers/gpu/drm/imagination/pvr_job.c
187
job->fw_ccb_cmd_type = (args->flags & DRM_PVR_SUBMIT_JOB_FRAG_CMD_PARTIAL_RENDER) ?
drivers/gpu/drm/imagination/pvr_job.c
190
err = pvr_fw_cmd_init(job->pvr_dev, job, &pvr_cmd_frag_stream,
drivers/gpu/drm/imagination/pvr_job.c
195
cmd = job->cmd;
drivers/gpu/drm/imagination/pvr_job.c
198
pvr_fw_object_get_fw_addr(job->hwrt->fw_obj, &cmd->cmd_shared.hwrt_data_fw_addr);
drivers/gpu/drm/imagination/pvr_job.c
216
pvr_compute_job_fw_cmd_init(struct pvr_job *job,
drivers/gpu/drm/imagination/pvr_job.c
225
if (job->ctx->type != DRM_PVR_CTX_TYPE_COMPUTE)
drivers/gpu/drm/imagination/pvr_job.c
228
job->fw_ccb_cmd_type = ROGUE_FWIF_CCB_CMD_TYPE_CDM;
drivers/gpu/drm/imagination/pvr_job.c
229
err = pvr_fw_cmd_init(job->pvr_dev, job, &pvr_cmd_compute_stream,
drivers/gpu/drm/imagination/pvr_job.c
234
cmd = job->cmd;
drivers/gpu/drm/imagination/pvr_job.c
252
pvr_transfer_job_fw_cmd_init(struct pvr_job *job,
drivers/gpu/drm/imagination/pvr_job.c
26
struct pvr_job *job = container_of(kref, struct pvr_job, ref_count);
drivers/gpu/drm/imagination/pvr_job.c
261
if (job->ctx->type != DRM_PVR_CTX_TYPE_TRANSFER_FRAG)
drivers/gpu/drm/imagination/pvr_job.c
264
job->fw_ccb_cmd_type = ROGUE_FWIF_CCB_CMD_TYPE_TQ_3D;
drivers/gpu/drm/imagination/pvr_job.c
265
err = pvr_fw_cmd_init(job->pvr_dev, job, &pvr_cmd_transfer_stream,
drivers/gpu/drm/imagination/pvr_job.c
270
cmd = job->cmd;
drivers/gpu/drm/imagination/pvr_job.c
277
pvr_job_fw_cmd_init(struct pvr_job *job,
drivers/gpu/drm/imagination/pvr_job.c
28
xa_erase(&job->pvr_dev->job_ids, job->id);
drivers/gpu/drm/imagination/pvr_job.c
282
return pvr_geom_job_fw_cmd_init(job, args);
drivers/gpu/drm/imagination/pvr_job.c
285
return pvr_frag_job_fw_cmd_init(job, args);
drivers/gpu/drm/imagination/pvr_job.c
288
return pvr_compute_job_fw_cmd_init(job, args);
drivers/gpu/drm/imagination/pvr_job.c
291
return pvr_transfer_job_fw_cmd_init(job, args);
drivers/gpu/drm/imagination/pvr_job.c
30
pvr_hwrt_data_put(job->hwrt);
drivers/gpu/drm/imagination/pvr_job.c
304
struct pvr_job *job;
drivers/gpu/drm/imagination/pvr_job.c
31
pvr_context_put(job->ctx);
drivers/gpu/drm/imagination/pvr_job.c
33
WARN_ON(job->paired_job);
drivers/gpu/drm/imagination/pvr_job.c
339
err = pvr_sync_add_deps_to_job(pvr_file, &job_data->job->base,
drivers/gpu/drm/imagination/pvr_job.c
345
if (job_data->job->hwrt) {
drivers/gpu/drm/imagination/pvr_job.c
35
pvr_queue_job_cleanup(job);
drivers/gpu/drm/imagination/pvr_job.c
350
gem_from_pvr_gem(job_data->job->hwrt->fw_obj->gem);
drivers/gpu/drm/imagination/pvr_job.c
352
dma_resv_usage_rw(job_data->job->type ==
drivers/gpu/drm/imagination/pvr_job.c
356
err = drm_sched_job_add_resv_dependencies(&job_data->job->base,
drivers/gpu/drm/imagination/pvr_job.c
36
pvr_job_release_pm_ref(job);
drivers/gpu/drm/imagination/pvr_job.c
364
finished_fence = pvr_queue_job_arm(job_data->job);
drivers/gpu/drm/imagination/pvr_job.c
38
kfree(job->cmd);
drivers/gpu/drm/imagination/pvr_job.c
39
kfree(job);
drivers/gpu/drm/imagination/pvr_job.c
408
struct pvr_job *job = NULL;
drivers/gpu/drm/imagination/pvr_job.c
419
job = kzalloc_obj(*job);
drivers/gpu/drm/imagination/pvr_job.c
420
if (!job)
drivers/gpu/drm/imagination/pvr_job.c
423
kref_init(&job->ref_count);
drivers/gpu/drm/imagination/pvr_job.c
424
job->type = args->type;
drivers/gpu/drm/imagination/pvr_job.c
425
job->pvr_dev = pvr_dev;
drivers/gpu/drm/imagination/pvr_job.c
427
err = xa_alloc(&pvr_dev->job_ids, &job->id, job, xa_limit_32b, GFP_KERNEL);
drivers/gpu/drm/imagination/pvr_job.c
431
job->ctx = pvr_context_lookup(pvr_file, args->context_handle);
drivers/gpu/drm/imagination/pvr_job.c
432
if (!job->ctx) {
drivers/gpu/drm/imagination/pvr_job.c
438
job->hwrt = pvr_hwrt_data_lookup(pvr_file, args->hwrt.set_handle,
drivers/gpu/drm/imagination/pvr_job.c
440
if (!job->hwrt) {
drivers/gpu/drm/imagination/pvr_job.c
446
err = pvr_job_fw_cmd_init(job, args);
drivers/gpu/drm/imagination/pvr_job.c
450
err = pvr_queue_job_init(job, pvr_file->file->client_id);
drivers/gpu/drm/imagination/pvr_job.c
454
return job;
drivers/gpu/drm/imagination/pvr_job.c
457
pvr_job_put(job);
drivers/gpu/drm/imagination/pvr_job.c
47
pvr_job_put(struct pvr_job *job)
drivers/gpu/drm/imagination/pvr_job.c
470
pvr_job_put(job_data[i].job);
drivers/gpu/drm/imagination/pvr_job.c
49
if (job)
drivers/gpu/drm/imagination/pvr_job.c
493
job_data_out[i].job =
drivers/gpu/drm/imagination/pvr_job.c
495
err = PTR_ERR_OR_ZERO(job_data_out[i].job);
drivers/gpu/drm/imagination/pvr_job.c
499
job_data_out[i].job = NULL;
drivers/gpu/drm/imagination/pvr_job.c
50
kref_put(&job->ref_count, pvr_job_release);
drivers/gpu/drm/imagination/pvr_job.c
515
trace_pvr_job_create(pvr_dev, job_data_out[i].job, job_data_out[i].sync_op_count);
drivers/gpu/drm/imagination/pvr_job.c
530
pvr_queue_job_push(job_data[i].job);
drivers/gpu/drm/imagination/pvr_job.c
544
struct pvr_job *job = job_data[i].job;
drivers/gpu/drm/imagination/pvr_job.c
550
gem_from_pvr_gem(job->ctx->fw_obj->gem));
drivers/gpu/drm/imagination/pvr_job.c
555
if (job->hwrt) {
drivers/gpu/drm/imagination/pvr_job.c
557
job->hwrt->fw_obj);
drivers/gpu/drm/imagination/pvr_job.c
582
update_job_resvs(struct pvr_job *job)
drivers/gpu/drm/imagination/pvr_job.c
584
if (job->hwrt) {
drivers/gpu/drm/imagination/pvr_job.c
585
enum dma_resv_usage usage = job->type == DRM_PVR_JOB_TYPE_GEOMETRY ?
drivers/gpu/drm/imagination/pvr_job.c
587
struct drm_gem_object *obj = gem_from_pvr_gem(job->hwrt->fw_obj->gem);
drivers/gpu/drm/imagination/pvr_job.c
589
dma_resv_add_fence(obj->resv, &job->base.s_fence->finished, usage);
drivers/gpu/drm/imagination/pvr_job.c
597
update_job_resvs(job_data[i].job);
drivers/gpu/drm/imagination/pvr_job.c
627
struct pvr_job *job = job_data[i - 1].job;
drivers/gpu/drm/imagination/pvr_job.c
629
if (job->ctx == queue->ctx && job->type == queue->type)
drivers/gpu/drm/imagination/pvr_job.c
630
return dma_fence_get(&job->base.s_fence->scheduled);
drivers/gpu/drm/imagination/pvr_job.c
643
struct pvr_job *geom_job = job_data[i].job;
drivers/gpu/drm/imagination/pvr_job.c
644
struct pvr_job *frag_job = job_data[i + 1].job;
drivers/gpu/drm/imagination/pvr_job.c
648
if (!can_combine_jobs(job_data[i].job, job_data[i + 1].job))
drivers/gpu/drm/imagination/pvr_job.c
70
void *stream, u32 stream_size, struct pvr_job *job)
drivers/gpu/drm/imagination/pvr_job.c
74
job->cmd = kzalloc(cmd_defs->dest_size, GFP_KERNEL);
drivers/gpu/drm/imagination/pvr_job.c
75
if (!job->cmd)
drivers/gpu/drm/imagination/pvr_job.c
78
job->cmd_len = cmd_defs->dest_size;
drivers/gpu/drm/imagination/pvr_job.c
80
err = pvr_stream_process(pvr_dev, cmd_defs, stream, stream_size, job->cmd);
drivers/gpu/drm/imagination/pvr_job.c
82
kfree(job->cmd);
drivers/gpu/drm/imagination/pvr_job.c
87
static int pvr_fw_cmd_init(struct pvr_device *pvr_dev, struct pvr_job *job,
drivers/gpu/drm/imagination/pvr_job.c
98
err = pvr_job_process_stream(pvr_dev, stream_def, stream, stream_len, job);
drivers/gpu/drm/imagination/pvr_job.h
104
pvr_job_get(struct pvr_job *job)
drivers/gpu/drm/imagination/pvr_job.h
106
if (job)
drivers/gpu/drm/imagination/pvr_job.h
107
kref_get(&job->ref_count);
drivers/gpu/drm/imagination/pvr_job.h
109
return job;
drivers/gpu/drm/imagination/pvr_job.h
112
void pvr_job_put(struct pvr_job *job);
drivers/gpu/drm/imagination/pvr_job.h
119
pvr_job_release_pm_ref(struct pvr_job *job)
drivers/gpu/drm/imagination/pvr_job.h
121
if (job->has_pm_ref) {
drivers/gpu/drm/imagination/pvr_job.h
122
pvr_power_put(job->pvr_dev);
drivers/gpu/drm/imagination/pvr_job.h
123
job->has_pm_ref = false;
drivers/gpu/drm/imagination/pvr_job.h
136
pvr_job_get_pm_ref(struct pvr_job *job)
drivers/gpu/drm/imagination/pvr_job.h
140
if (job->has_pm_ref)
drivers/gpu/drm/imagination/pvr_job.h
143
err = pvr_power_get(job->pvr_dev);
drivers/gpu/drm/imagination/pvr_job.h
145
job->has_pm_ref = true;
drivers/gpu/drm/imagination/pvr_job.h
150
int pvr_job_wait_first_non_signaled_native_dep(struct pvr_job *job);
drivers/gpu/drm/imagination/pvr_job.h
152
bool pvr_job_non_native_deps_done(struct pvr_job *job);
drivers/gpu/drm/imagination/pvr_job.h
154
int pvr_job_fits_in_cccb(struct pvr_job *job, unsigned long native_dep_count);
drivers/gpu/drm/imagination/pvr_job.h
156
void pvr_job_submit(struct pvr_job *job);
drivers/gpu/drm/imagination/pvr_queue.c
1002
struct pvr_job *job;
drivers/gpu/drm/imagination/pvr_queue.c
1005
job = queue->cccb_fence_ctx.job;
drivers/gpu/drm/imagination/pvr_queue.c
1006
if (!job)
drivers/gpu/drm/imagination/pvr_queue.c
1012
if (WARN_ON(!job->cccb_fence)) {
drivers/gpu/drm/imagination/pvr_queue.c
1013
job = NULL;
drivers/gpu/drm/imagination/pvr_queue.c
1018
cccb_fence = container_of(job->cccb_fence, struct pvr_queue_fence, base);
drivers/gpu/drm/imagination/pvr_queue.c
1020
job = NULL;
drivers/gpu/drm/imagination/pvr_queue.c
1028
native_deps_remaining = job_count_remaining_native_deps(job);
drivers/gpu/drm/imagination/pvr_queue.c
1029
if (!pvr_cccb_cmdseq_fits(&queue->cccb, job_cmds_size(job, native_deps_remaining))) {
drivers/gpu/drm/imagination/pvr_queue.c
1030
job = NULL;
drivers/gpu/drm/imagination/pvr_queue.c
1034
dma_fence_signal(job->cccb_fence);
drivers/gpu/drm/imagination/pvr_queue.c
1035
pvr_queue_fence_put(job->cccb_fence);
drivers/gpu/drm/imagination/pvr_queue.c
1036
job->cccb_fence = NULL;
drivers/gpu/drm/imagination/pvr_queue.c
1037
queue->cccb_fence_ctx.job = NULL;
drivers/gpu/drm/imagination/pvr_queue.c
1042
pvr_job_put(job);
drivers/gpu/drm/imagination/pvr_queue.c
1138
int pvr_queue_job_init(struct pvr_job *job, u64 drm_client_id)
drivers/gpu/drm/imagination/pvr_queue.c
1141
u32 min_native_dep_count = job->type == DRM_PVR_JOB_TYPE_FRAGMENT ? 1 : 0;
drivers/gpu/drm/imagination/pvr_queue.c
1145
if (atomic_read(&job->ctx->faulty))
drivers/gpu/drm/imagination/pvr_queue.c
1148
queue = pvr_context_get_queue_for_job(job->ctx, job->type);
drivers/gpu/drm/imagination/pvr_queue.c
1152
if (!pvr_cccb_cmdseq_can_fit(&queue->cccb, job_cmds_size(job, min_native_dep_count)))
drivers/gpu/drm/imagination/pvr_queue.c
1155
err = drm_sched_job_init(&job->base, &queue->entity, 1, THIS_MODULE, drm_client_id);
drivers/gpu/drm/imagination/pvr_queue.c
1159
job->cccb_fence = pvr_queue_fence_alloc();
drivers/gpu/drm/imagination/pvr_queue.c
1160
job->kccb_fence = pvr_kccb_fence_alloc();
drivers/gpu/drm/imagination/pvr_queue.c
1161
job->done_fence = pvr_queue_fence_alloc();
drivers/gpu/drm/imagination/pvr_queue.c
1162
if (!job->cccb_fence || !job->kccb_fence || !job->done_fence)
drivers/gpu/drm/imagination/pvr_queue.c
1183
struct dma_fence *pvr_queue_job_arm(struct pvr_job *job)
drivers/gpu/drm/imagination/pvr_queue.c
1185
drm_sched_job_arm(&job->base);
drivers/gpu/drm/imagination/pvr_queue.c
1187
return &job->base.s_fence->finished;
drivers/gpu/drm/imagination/pvr_queue.c
1196
void pvr_queue_job_cleanup(struct pvr_job *job)
drivers/gpu/drm/imagination/pvr_queue.c
1198
pvr_queue_fence_put(job->done_fence);
drivers/gpu/drm/imagination/pvr_queue.c
1199
pvr_queue_fence_put(job->cccb_fence);
drivers/gpu/drm/imagination/pvr_queue.c
1200
pvr_kccb_fence_put(job->kccb_fence);
drivers/gpu/drm/imagination/pvr_queue.c
1202
if (job->base.s_fence)
drivers/gpu/drm/imagination/pvr_queue.c
1203
drm_sched_job_cleanup(&job->base);
drivers/gpu/drm/imagination/pvr_queue.c
1205
trace_pvr_job_done(job);
drivers/gpu/drm/imagination/pvr_queue.c
1218
void pvr_queue_job_push(struct pvr_job *job)
drivers/gpu/drm/imagination/pvr_queue.c
1220
struct pvr_queue *queue = container_of(job->base.sched, struct pvr_queue, scheduler);
drivers/gpu/drm/imagination/pvr_queue.c
1224
queue->last_queued_job_scheduled_fence = dma_fence_get(&job->base.s_fence->scheduled);
drivers/gpu/drm/imagination/pvr_queue.c
1226
pvr_job_get(job);
drivers/gpu/drm/imagination/pvr_queue.c
1227
drm_sched_entity_push_job(&job->base);
drivers/gpu/drm/imagination/pvr_queue.c
376
static u32 job_cmds_size(struct pvr_job *job, u32 ufo_wait_count)
drivers/gpu/drm/imagination/pvr_queue.c
384
pvr_cccb_get_size_of_cmd_with_hdr(job->cmd_len) +
drivers/gpu/drm/imagination/pvr_queue.c
389
is_paired_job_fence(struct dma_fence *fence, struct pvr_job *job)
drivers/gpu/drm/imagination/pvr_queue.c
392
return job->type == DRM_PVR_JOB_TYPE_FRAGMENT &&
drivers/gpu/drm/imagination/pvr_queue.c
393
job->paired_job &&
drivers/gpu/drm/imagination/pvr_queue.c
394
&job->paired_job->base.s_fence->scheduled == fence;
drivers/gpu/drm/imagination/pvr_queue.c
403
static unsigned long job_count_remaining_native_deps(struct pvr_job *job)
drivers/gpu/drm/imagination/pvr_queue.c
409
xa_for_each(&job->base.dependencies, index, fence) {
drivers/gpu/drm/imagination/pvr_queue.c
412
if (is_paired_job_fence(fence, job)) {
drivers/gpu/drm/imagination/pvr_queue.c
447
pvr_queue_get_job_cccb_fence(struct pvr_queue *queue, struct pvr_job *job)
drivers/gpu/drm/imagination/pvr_queue.c
455
if (!job->cccb_fence)
drivers/gpu/drm/imagination/pvr_queue.c
461
native_deps_remaining = job_count_remaining_native_deps(job);
drivers/gpu/drm/imagination/pvr_queue.c
462
if (pvr_cccb_cmdseq_fits(&queue->cccb, job_cmds_size(job, native_deps_remaining))) {
drivers/gpu/drm/imagination/pvr_queue.c
463
pvr_queue_fence_put(job->cccb_fence);
drivers/gpu/drm/imagination/pvr_queue.c
464
job->cccb_fence = NULL;
drivers/gpu/drm/imagination/pvr_queue.c
471
if (WARN_ON(queue->cccb_fence_ctx.job))
drivers/gpu/drm/imagination/pvr_queue.c
472
pvr_job_put(queue->cccb_fence_ctx.job);
drivers/gpu/drm/imagination/pvr_queue.c
474
queue->cccb_fence_ctx.job = pvr_job_get(job);
drivers/gpu/drm/imagination/pvr_queue.c
477
cccb_fence = container_of(job->cccb_fence, struct pvr_queue_fence, base);
drivers/gpu/drm/imagination/pvr_queue.c
479
pvr_queue_cccb_fence_init(job->cccb_fence, queue);
drivers/gpu/drm/imagination/pvr_queue.c
484
return dma_fence_get(job->cccb_fence);
drivers/gpu/drm/imagination/pvr_queue.c
500
pvr_queue_get_job_kccb_fence(struct pvr_queue *queue, struct pvr_job *job)
drivers/gpu/drm/imagination/pvr_queue.c
508
if (!job->kccb_fence)
drivers/gpu/drm/imagination/pvr_queue.c
511
if (!WARN_ON(job->kccb_fence->ops)) {
drivers/gpu/drm/imagination/pvr_queue.c
512
kccb_fence = pvr_kccb_reserve_slot(pvr_dev, job->kccb_fence);
drivers/gpu/drm/imagination/pvr_queue.c
513
job->kccb_fence = NULL;
drivers/gpu/drm/imagination/pvr_queue.c
520
pvr_queue_get_paired_frag_job_dep(struct pvr_job *job)
drivers/gpu/drm/imagination/pvr_queue.c
522
struct pvr_job *frag_job = job->type == DRM_PVR_JOB_TYPE_GEOMETRY ?
drivers/gpu/drm/imagination/pvr_queue.c
523
job->paired_job : NULL;
drivers/gpu/drm/imagination/pvr_queue.c
541
if (f == &job->base.s_fence->scheduled)
drivers/gpu/drm/imagination/pvr_queue.c
565
struct pvr_job *job = container_of(sched_job, struct pvr_job, base);
drivers/gpu/drm/imagination/pvr_queue.c
569
if (job->type == DRM_PVR_JOB_TYPE_FRAGMENT && job->paired_job) {
drivers/gpu/drm/imagination/pvr_queue.c
577
if (job->has_pm_ref)
drivers/gpu/drm/imagination/pvr_queue.c
586
pvr_queue_job_fence_init(job->done_fence, queue);
drivers/gpu/drm/imagination/pvr_queue.c
591
internal_dep = pvr_queue_get_job_cccb_fence(queue, job);
drivers/gpu/drm/imagination/pvr_queue.c
597
internal_dep = pvr_queue_get_job_kccb_fence(queue, job);
drivers/gpu/drm/imagination/pvr_queue.c
608
internal_dep = pvr_queue_get_paired_frag_job_dep(job);
drivers/gpu/drm/imagination/pvr_queue.c
661
static void pvr_queue_submit_job_to_cccb(struct pvr_job *job)
drivers/gpu/drm/imagination/pvr_queue.c
663
struct pvr_queue *queue = container_of(job->base.sched, struct pvr_queue, scheduler);
drivers/gpu/drm/imagination/pvr_queue.c
678
xa_for_each(&job->base.dependencies, index, fence) {
drivers/gpu/drm/imagination/pvr_queue.c
698
if (job->type == DRM_PVR_JOB_TYPE_FRAGMENT && job->paired_job) {
drivers/gpu/drm/imagination/pvr_queue.c
705
jfence = to_pvr_queue_job_fence(job->paired_job->done_fence);
drivers/gpu/drm/imagination/pvr_queue.c
709
ufos[ufo_count++].value = job->paired_job->done_fence->seqno;
drivers/gpu/drm/imagination/pvr_queue.c
718
if (job->type == DRM_PVR_JOB_TYPE_GEOMETRY && job->paired_job) {
drivers/gpu/drm/imagination/pvr_queue.c
719
struct rogue_fwif_cmd_geom *cmd = job->cmd;
drivers/gpu/drm/imagination/pvr_queue.c
726
cmd->partial_render_geom_frag_fence.value = job->done_fence->seqno - 1;
drivers/gpu/drm/imagination/pvr_queue.c
729
trace_pvr_job_submit_fw(job);
drivers/gpu/drm/imagination/pvr_queue.c
732
pvr_cccb_write_command_with_header(cccb, job->fw_ccb_cmd_type, job->cmd_len, job->cmd,
drivers/gpu/drm/imagination/pvr_queue.c
733
job->id, job->id);
drivers/gpu/drm/imagination/pvr_queue.c
737
ufos[0].value = job->done_fence->seqno;
drivers/gpu/drm/imagination/pvr_queue.c
751
struct pvr_job *job = container_of(sched_job, struct pvr_job, base);
drivers/gpu/drm/imagination/pvr_queue.c
752
struct pvr_device *pvr_dev = job->pvr_dev;
drivers/gpu/drm/imagination/pvr_queue.c
759
if (job->paired_job && job->type == DRM_PVR_JOB_TYPE_FRAGMENT &&
drivers/gpu/drm/imagination/pvr_queue.c
760
job->done_fence->ops) {
drivers/gpu/drm/imagination/pvr_queue.c
761
return dma_fence_get(job->done_fence);
drivers/gpu/drm/imagination/pvr_queue.c
768
if (WARN_ON(job->paired_job &&
drivers/gpu/drm/imagination/pvr_queue.c
769
(job->type != DRM_PVR_JOB_TYPE_GEOMETRY ||
drivers/gpu/drm/imagination/pvr_queue.c
770
job->paired_job->type != DRM_PVR_JOB_TYPE_FRAGMENT ||
drivers/gpu/drm/imagination/pvr_queue.c
771
job->hwrt != job->paired_job->hwrt ||
drivers/gpu/drm/imagination/pvr_queue.c
772
job->ctx != job->paired_job->ctx)))
drivers/gpu/drm/imagination/pvr_queue.c
775
err = pvr_job_get_pm_ref(job);
drivers/gpu/drm/imagination/pvr_queue.c
779
if (job->paired_job) {
drivers/gpu/drm/imagination/pvr_queue.c
780
err = pvr_job_get_pm_ref(job->paired_job);
drivers/gpu/drm/imagination/pvr_queue.c
786
pvr_queue_submit_job_to_cccb(job);
drivers/gpu/drm/imagination/pvr_queue.c
788
if (job->paired_job) {
drivers/gpu/drm/imagination/pvr_queue.c
789
struct pvr_job *geom_job = job;
drivers/gpu/drm/imagination/pvr_queue.c
790
struct pvr_job *frag_job = job->paired_job;
drivers/gpu/drm/imagination/pvr_queue.c
791
struct pvr_queue *geom_queue = job->ctx->queues.geometry;
drivers/gpu/drm/imagination/pvr_queue.c
792
struct pvr_queue *frag_queue = job->ctx->queues.fragment;
drivers/gpu/drm/imagination/pvr_queue.c
802
job->hwrt,
drivers/gpu/drm/imagination/pvr_queue.c
806
struct pvr_queue *queue = container_of(job->base.sched,
drivers/gpu/drm/imagination/pvr_queue.c
810
pvr_context_get_fw_addr(job->ctx) + queue->ctx_offset,
drivers/gpu/drm/imagination/pvr_queue.c
811
job->hwrt);
drivers/gpu/drm/imagination/pvr_queue.c
814
return dma_fence_get(job->done_fence);
drivers/gpu/drm/imagination/pvr_queue.c
824
struct pvr_job *job;
drivers/gpu/drm/imagination/pvr_queue.c
831
list_for_each_entry(job, &queue->scheduler.pending_list, base.list) {
drivers/gpu/drm/imagination/pvr_queue.c
832
if (dma_fence_is_signaled(job->done_fence)) {
drivers/gpu/drm/imagination/pvr_queue.c
836
WARN_ON(job->base.s_fence->parent);
drivers/gpu/drm/imagination/pvr_queue.c
837
job->base.s_fence->parent = dma_fence_get(job->done_fence);
drivers/gpu/drm/imagination/pvr_queue.c
867
struct pvr_job *job;
drivers/gpu/drm/imagination/pvr_queue.c
892
list_for_each_entry(job, &sched->pending_list, base.list) {
drivers/gpu/drm/imagination/pvr_queue.c
893
job->base.s_fence->parent = dma_fence_get(job->done_fence);
drivers/gpu/drm/imagination/pvr_queue.c
922
struct pvr_job *job = container_of(sched_job, struct pvr_job, base);
drivers/gpu/drm/imagination/pvr_queue.c
926
if (job->type == DRM_PVR_JOB_TYPE_FRAGMENT && job->paired_job)
drivers/gpu/drm/imagination/pvr_queue.c
927
pvr_job_put(job->paired_job);
drivers/gpu/drm/imagination/pvr_queue.c
929
job->paired_job = NULL;
drivers/gpu/drm/imagination/pvr_queue.c
930
pvr_job_put(job);
drivers/gpu/drm/imagination/pvr_queue.c
971
struct pvr_job *job, *tmp_job;
drivers/gpu/drm/imagination/pvr_queue.c
976
list_for_each_entry_safe(job, tmp_job, &queue->scheduler.pending_list, base.list) {
drivers/gpu/drm/imagination/pvr_queue.c
977
if ((int)(cur_seqno - lower_32_bits(job->done_fence->seqno)) < 0)
drivers/gpu/drm/imagination/pvr_queue.c
980
if (!dma_fence_is_signaled(job->done_fence)) {
drivers/gpu/drm/imagination/pvr_queue.c
981
dma_fence_signal(job->done_fence);
drivers/gpu/drm/imagination/pvr_queue.c
982
pvr_job_release_pm_ref(job);
drivers/gpu/drm/imagination/pvr_queue.h
146
int pvr_queue_job_init(struct pvr_job *job, u64 drm_client_id);
drivers/gpu/drm/imagination/pvr_queue.h
148
void pvr_queue_job_cleanup(struct pvr_job *job);
drivers/gpu/drm/imagination/pvr_queue.h
150
void pvr_queue_job_push(struct pvr_job *job);
drivers/gpu/drm/imagination/pvr_queue.h
152
struct dma_fence *pvr_queue_job_arm(struct pvr_job *job);
drivers/gpu/drm/imagination/pvr_queue.h
52
struct pvr_job *job;
drivers/gpu/drm/imagination/pvr_sync.c
206
pvr_sync_add_dep_to_job(struct drm_sched_job *job, struct dma_fence *f)
drivers/gpu/drm/imagination/pvr_sync.c
220
return drm_sched_job_add_dependency(job, f);
drivers/gpu/drm/imagination/pvr_sync.c
236
err = drm_sched_job_add_dependency(job,
drivers/gpu/drm/imagination/pvr_sync.c
239
err = drm_sched_job_add_dependency(job, dma_fence_get(uf));
drivers/gpu/drm/imagination/pvr_sync.c
248
pvr_sync_add_deps_to_job(struct pvr_file *pvr_file, struct drm_sched_job *job,
drivers/gpu/drm/imagination/pvr_sync.c
283
err = pvr_sync_add_dep_to_job(job, fence);
drivers/gpu/drm/imagination/pvr_sync.h
79
pvr_sync_add_deps_to_job(struct pvr_file *pvr_file, struct drm_sched_job *job,
drivers/gpu/drm/imagination/pvr_trace.h
100
TP_ARGS(job),
drivers/gpu/drm/imagination/pvr_trace.h
101
TP_STRUCT__entry(__field(struct pvr_job *, job)),
drivers/gpu/drm/imagination/pvr_trace.h
102
TP_fast_assign(__entry->job = job;),
drivers/gpu/drm/imagination/pvr_trace.h
103
TP_printk("job=%p", __entry->job)
drivers/gpu/drm/imagination/pvr_trace.h
52
TP_PROTO(struct pvr_device *pvr_dev, struct pvr_job *job,
drivers/gpu/drm/imagination/pvr_trace.h
54
TP_ARGS(pvr_dev, job, sync_op_count),
drivers/gpu/drm/imagination/pvr_trace.h
60
__field(struct pvr_job *, job)
drivers/gpu/drm/imagination/pvr_trace.h
64
__entry->ctx = job->ctx;
drivers/gpu/drm/imagination/pvr_trace.h
65
__entry->fw_obj = job->ctx->fw_obj;
drivers/gpu/drm/imagination/pvr_trace.h
66
pvr_fw_object_get_fw_addr(job->ctx->fw_obj, &__entry->fw_addr);
drivers/gpu/drm/imagination/pvr_trace.h
67
__entry->hwrt_addr = job->hwrt ?
drivers/gpu/drm/imagination/pvr_trace.h
68
job->hwrt->fw_obj->fw_addr_offset :
drivers/gpu/drm/imagination/pvr_trace.h
70
__entry->job = job;
drivers/gpu/drm/imagination/pvr_trace.h
71
__entry->job_type = job->type;
drivers/gpu/drm/imagination/pvr_trace.h
79
__entry->job,
drivers/gpu/drm/imagination/pvr_trace.h
87
TP_PROTO(struct pvr_job *job),
drivers/gpu/drm/imagination/pvr_trace.h
88
TP_ARGS(job),
drivers/gpu/drm/imagination/pvr_trace.h
89
TP_STRUCT__entry(__field(struct pvr_job *, job)
drivers/gpu/drm/imagination/pvr_trace.h
91
TP_fast_assign(__entry->job = job;
drivers/gpu/drm/imagination/pvr_trace.h
92
__entry->done_seqno = job->done_fence->seqno;),
drivers/gpu/drm/imagination/pvr_trace.h
94
__entry->job,
drivers/gpu/drm/imagination/pvr_trace.h
99
TP_PROTO(struct pvr_job *job),
drivers/gpu/drm/lima/lima_sched.c
105
static inline struct lima_sched_task *to_lima_task(struct drm_sched_job *job)
drivers/gpu/drm/lima/lima_sched.c
107
return container_of(job, struct lima_sched_task, base);
drivers/gpu/drm/lima/lima_sched.c
206
static struct dma_fence *lima_sched_run_job(struct drm_sched_job *job)
drivers/gpu/drm/lima/lima_sched.c
208
struct lima_sched_task *task = to_lima_task(job);
drivers/gpu/drm/lima/lima_sched.c
209
struct lima_sched_pipe *pipe = to_lima_pipe(job->sched);
drivers/gpu/drm/lima/lima_sched.c
215
if (job->s_fence->finished.error < 0)
drivers/gpu/drm/lima/lima_sched.c
403
static enum drm_gpu_sched_stat lima_sched_timedout_job(struct drm_sched_job *job)
drivers/gpu/drm/lima/lima_sched.c
405
struct lima_sched_pipe *pipe = to_lima_pipe(job->sched);
drivers/gpu/drm/lima/lima_sched.c
406
struct lima_sched_task *task = to_lima_task(job);
drivers/gpu/drm/lima/lima_sched.c
475
static void lima_sched_free_job(struct drm_sched_job *job)
drivers/gpu/drm/lima/lima_sched.c
477
struct lima_sched_task *task = to_lima_task(job);
drivers/gpu/drm/lima/lima_sched.c
478
struct lima_sched_pipe *pipe = to_lima_pipe(job->sched);
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
1114
struct drm_writeback_job *job)
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
1125
phys->ops.prepare_wb_job(phys, job);
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
1136
struct drm_writeback_job *job)
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
1147
phys->ops.cleanup_wb_job(phys, job);
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h
93
struct drm_writeback_job *job);
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.h
96
struct drm_writeback_job *job);
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h
117
struct drm_writeback_job *job);
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h
119
struct drm_writeback_job *job);
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
560
struct drm_writeback_job *job)
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
567
if (!job->fb)
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
570
wb_enc->wb_job = job;
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
571
wb_enc->wb_conn = job->connector;
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
577
ret = msm_framebuffer_prepare(job->fb, false);
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
583
format = msm_framebuffer_format(job->fb);
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
585
ret = dpu_format_populate_plane_sizes(job->fb, &wb_cfg->dest);
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
591
dpu_format_populate_addrs(job->fb, &wb_cfg->dest);
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
593
wb_cfg->dest.width = job->fb->width;
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
594
wb_cfg->dest.height = job->fb->height;
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
611
struct drm_writeback_job *job)
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
615
if (!job->fb)
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
618
msm_framebuffer_cleanup(job->fb, false);
drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
100
dpu_encoder_prepare_wb_job(dpu_wb_conn->wb_enc, job);
drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
106
struct drm_writeback_job *job)
drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
110
if (!job->fb)
drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
113
dpu_encoder_cleanup_wb_job(dpu_wb_conn->wb_enc, job);
drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
92
struct drm_writeback_job *job)
drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
97
if (!job->fb)
drivers/gpu/drm/msm/msm_gem.h
480
static inline struct msm_gem_submit *to_msm_submit(struct drm_sched_job *job)
drivers/gpu/drm/msm/msm_gem.h
482
return container_of(job, struct msm_gem_submit, base);
drivers/gpu/drm/msm/msm_gem_vma.c
1000
job->ops[i].handle = op->handle;
drivers/gpu/drm/msm/msm_gem_vma.c
1001
job->ops[i].obj_offset = op->obj_offset;
drivers/gpu/drm/msm/msm_gem_vma.c
1002
job->ops[i].iova = op->iova;
drivers/gpu/drm/msm/msm_gem_vma.c
1003
job->ops[i].range = op->range;
drivers/gpu/drm/msm/msm_gem_vma.c
1004
job->ops[i].flags = op->flags;
drivers/gpu/drm/msm/msm_gem_vma.c
1018
if (!drm_gpuvm_range_valid(job->vm, op->iova, op->range))
drivers/gpu/drm/msm/msm_gem_vma.c
1054
vm_bind_job_lookup_ops(struct msm_vm_bind_job *job, struct drm_msm_vm_bind *args,
drivers/gpu/drm/msm/msm_gem_vma.c
1057
struct drm_device *dev = job->vm->drm;
drivers/gpu/drm/msm/msm_gem_vma.c
1064
ret = lookup_op(job, &args->op);
drivers/gpu/drm/msm/msm_gem_vma.c
1074
job->ops[i].flags = 0;
drivers/gpu/drm/msm/msm_gem_vma.c
1081
ret = lookup_op(job, &op);
drivers/gpu/drm/msm/msm_gem_vma.c
1088
job->nr_ops = 0;
drivers/gpu/drm/msm/msm_gem_vma.c
1095
struct msm_vm_bind_op *op = &job->ops[i];
drivers/gpu/drm/msm/msm_gem_vma.c
1132
struct msm_vm_bind_op *op = &job->ops[i];
drivers/gpu/drm/msm/msm_gem_vma.c
1146
prealloc_count(struct msm_vm_bind_job *job,
drivers/gpu/drm/msm/msm_gem_vma.c
1150
struct msm_mmu *mmu = to_msm_vm(job->vm)->mmu;
drivers/gpu/drm/msm/msm_gem_vma.c
1158
mmu->funcs->prealloc_count(mmu, &job->prealloc, start_iova, end_iova - start_iova);
drivers/gpu/drm/msm/msm_gem_vma.c
1182
vm_bind_prealloc_count(struct msm_vm_bind_job *job)
drivers/gpu/drm/msm/msm_gem_vma.c
1185
struct msm_gem_vm *vm = to_msm_vm(job->vm);
drivers/gpu/drm/msm/msm_gem_vma.c
1188
for (int i = 0; i < job->nr_ops; i++) {
drivers/gpu/drm/msm/msm_gem_vma.c
1189
struct msm_vm_bind_op *op = &job->ops[i];
drivers/gpu/drm/msm/msm_gem_vma.c
1209
prealloc_count(job, first, last);
drivers/gpu/drm/msm/msm_gem_vma.c
1214
prealloc_count(job, first, last);
drivers/gpu/drm/msm/msm_gem_vma.c
1226
atomic_add(job->prealloc.count, &vm->prealloc_throttle.in_flight);
drivers/gpu/drm/msm/msm_gem_vma.c
1235
vm_bind_job_lock_objects(struct msm_vm_bind_job *job, struct drm_exec *exec)
drivers/gpu/drm/msm/msm_gem_vma.c
1241
ret = drm_exec_lock_obj(exec, drm_gpuvm_resv_obj(job->vm));
drivers/gpu/drm/msm/msm_gem_vma.c
1246
for (unsigned i = 0; i < job->nr_ops; i++) {
drivers/gpu/drm/msm/msm_gem_vma.c
1247
const struct msm_vm_bind_op *op = &job->ops[i];
drivers/gpu/drm/msm/msm_gem_vma.c
1251
ret = drm_gpuvm_sm_unmap_exec_lock(job->vm, exec,
drivers/gpu/drm/msm/msm_gem_vma.c
1264
ret = drm_gpuvm_sm_map_exec_lock(job->vm, exec, 1, &map_req);
drivers/gpu/drm/msm/msm_gem_vma.c
1290
vm_bind_job_pin_objects(struct msm_vm_bind_job *job)
drivers/gpu/drm/msm/msm_gem_vma.c
1299
job_foreach_bo (obj, job) {
drivers/gpu/drm/msm/msm_gem_vma.c
1307
struct drm_device *dev = job->vm->drm;
drivers/gpu/drm/msm/msm_gem_vma.c
1317
job_foreach_bo (obj, job)
drivers/gpu/drm/msm/msm_gem_vma.c
1321
job->bos_pinned = true;
drivers/gpu/drm/msm/msm_gem_vma.c
1330
vm_bind_job_unpin_objects(struct msm_vm_bind_job *job)
drivers/gpu/drm/msm/msm_gem_vma.c
1334
if (!job->bos_pinned)
drivers/gpu/drm/msm/msm_gem_vma.c
1337
job_foreach_bo (obj, job)
drivers/gpu/drm/msm/msm_gem_vma.c
1340
job->bos_pinned = false;
drivers/gpu/drm/msm/msm_gem_vma.c
1348
vm_bind_job_prepare(struct msm_vm_bind_job *job)
drivers/gpu/drm/msm/msm_gem_vma.c
1350
struct msm_gem_vm *vm = to_msm_vm(job->vm);
drivers/gpu/drm/msm/msm_gem_vma.c
1354
ret = mmu->funcs->prealloc_allocate(mmu, &job->prealloc);
drivers/gpu/drm/msm/msm_gem_vma.c
1358
for (unsigned i = 0; i < job->nr_ops; i++) {
drivers/gpu/drm/msm/msm_gem_vma.c
1359
const struct msm_vm_bind_op *op = &job->ops[i];
drivers/gpu/drm/msm/msm_gem_vma.c
1361
.job = job,
drivers/gpu/drm/msm/msm_gem_vma.c
1367
ret = drm_gpuvm_sm_unmap(job->vm, &arg, op->iova,
drivers/gpu/drm/msm/msm_gem_vma.c
1382
ret = drm_gpuvm_sm_map(job->vm, &arg, &map_req);
drivers/gpu/drm/msm/msm_gem_vma.c
1400
msm_gem_vm_unusable(job->vm);
drivers/gpu/drm/msm/msm_gem_vma.c
1414
vm_bind_job_attach_fences(struct msm_vm_bind_job *job)
drivers/gpu/drm/msm/msm_gem_vma.c
1416
for (unsigned i = 0; i < job->nr_ops; i++) {
drivers/gpu/drm/msm/msm_gem_vma.c
1417
struct drm_gem_object *obj = job->ops[i].obj;
drivers/gpu/drm/msm/msm_gem_vma.c
1422
dma_resv_add_fence(obj->resv, job->fence,
drivers/gpu/drm/msm/msm_gem_vma.c
1433
struct msm_vm_bind_job *job = NULL;
drivers/gpu/drm/msm/msm_gem_vma.c
1482
job = vm_bind_job_create(dev, file, queue, args->nr_ops);
drivers/gpu/drm/msm/msm_gem_vma.c
1483
if (IS_ERR(job)) {
drivers/gpu/drm/msm/msm_gem_vma.c
1484
ret = PTR_ERR(job);
drivers/gpu/drm/msm/msm_gem_vma.c
1502
ret = drm_sched_job_add_dependency(&job->base, in_fence);
drivers/gpu/drm/msm/msm_gem_vma.c
1508
syncobjs_to_reset = msm_syncobj_parse_deps(dev, &job->base,
drivers/gpu/drm/msm/msm_gem_vma.c
1529
ret = vm_bind_job_lookup_ops(job, args, file, &nr_bos);
drivers/gpu/drm/msm/msm_gem_vma.c
153
static inline struct msm_vm_bind_job *to_msm_vm_bind_job(struct drm_sched_job *job)
drivers/gpu/drm/msm/msm_gem_vma.c
1533
ret = vm_bind_prealloc_count(job);
drivers/gpu/drm/msm/msm_gem_vma.c
1541
ret = vm_bind_job_lock_objects(job, &exec);
drivers/gpu/drm/msm/msm_gem_vma.c
1545
ret = vm_bind_job_pin_objects(job);
drivers/gpu/drm/msm/msm_gem_vma.c
1549
ret = vm_bind_job_prepare(job);
drivers/gpu/drm/msm/msm_gem_vma.c
155
return container_of(job, struct msm_vm_bind_job, base);
drivers/gpu/drm/msm/msm_gem_vma.c
1553
drm_sched_job_arm(&job->base);
drivers/gpu/drm/msm/msm_gem_vma.c
1555
job->fence = dma_fence_get(&job->base.s_fence->finished);
drivers/gpu/drm/msm/msm_gem_vma.c
1558
sync_file = sync_file_create(job->fence);
drivers/gpu/drm/msm/msm_gem_vma.c
1566
vm_bind_job_attach_fences(job);
drivers/gpu/drm/msm/msm_gem_vma.c
1572
fence = dma_fence_get(job->fence);
drivers/gpu/drm/msm/msm_gem_vma.c
1574
drm_sched_entity_push_job(&job->base);
drivers/gpu/drm/msm/msm_gem_vma.c
1583
vm_bind_job_unpin_objects(job);
drivers/gpu/drm/msm/msm_gem_vma.c
1599
if (!IS_ERR_OR_NULL(job)) {
drivers/gpu/drm/msm/msm_gem_vma.c
1601
msm_vma_job_free(&job->base);
drivers/gpu/drm/msm/msm_gem_vma.c
466
struct msm_vm_bind_job *job;
drivers/gpu/drm/msm/msm_gem_vma.c
479
list_add_tail(&op->node, &arg->job->vm_ops);
drivers/gpu/drm/msm/msm_gem_vma.c
490
return msm_gem_vma_new(arg->job->vm, op->gem.obj, op->gem.offset,
drivers/gpu/drm/msm/msm_gem_vma.c
498
struct msm_vm_bind_job *job = arg->job;
drivers/gpu/drm/msm/msm_gem_vma.c
531
.queue_id = job->queue->id,
drivers/gpu/drm/msm/msm_gem_vma.c
548
struct msm_vm_bind_job *job = ((struct op_arg *)arg)->job;
drivers/gpu/drm/msm/msm_gem_vma.c
549
struct drm_gpuvm *vm = job->vm;
drivers/gpu/drm/msm/msm_gem_vma.c
570
.queue_id = job->queue->id,
drivers/gpu/drm/msm/msm_gem_vma.c
636
struct msm_vm_bind_job *job = arg->job;
drivers/gpu/drm/msm/msm_gem_vma.c
677
.queue_id = job->queue->id,
drivers/gpu/drm/msm/msm_gem_vma.c
704
struct msm_vm_bind_job *job = to_msm_vm_bind_job(_job);
drivers/gpu/drm/msm/msm_gem_vma.c
705
struct drm_device *dev = job->vm->drm;
drivers/gpu/drm/msm/msm_gem_vma.c
706
struct msm_gem_vm *vm = to_msm_vm(job->vm);
drivers/gpu/drm/msm/msm_gem_vma.c
713
vm->mmu->prealloc = &job->prealloc;
drivers/gpu/drm/msm/msm_gem_vma.c
715
while (!list_empty(&job->vm_ops)) {
drivers/gpu/drm/msm/msm_gem_vma.c
717
list_first_entry(&job->vm_ops, struct msm_vm_op, node);
drivers/gpu/drm/msm/msm_gem_vma.c
746
msm_gem_vm_unusable(job->vm);
drivers/gpu/drm/msm/msm_gem_vma.c
750
job_foreach_bo (obj, job) {
drivers/gpu/drm/msm/msm_gem_vma.c
763
struct msm_vm_bind_job *job = to_msm_vm_bind_job(_job);
drivers/gpu/drm/msm/msm_gem_vma.c
764
struct msm_gem_vm *vm = to_msm_vm(job->vm);
drivers/gpu/drm/msm/msm_gem_vma.c
767
vm->mmu->funcs->prealloc_cleanup(vm->mmu, &job->prealloc);
drivers/gpu/drm/msm/msm_gem_vma.c
769
atomic_sub(job->prealloc.count, &vm->prealloc_throttle.in_flight);
drivers/gpu/drm/msm/msm_gem_vma.c
773
job_foreach_bo (obj, job)
drivers/gpu/drm/msm/msm_gem_vma.c
776
msm_submitqueue_put(job->queue);
drivers/gpu/drm/msm/msm_gem_vma.c
777
dma_fence_put(job->fence);
drivers/gpu/drm/msm/msm_gem_vma.c
780
while (!list_empty(&job->vm_ops)) {
drivers/gpu/drm/msm/msm_gem_vma.c
782
list_first_entry(&job->vm_ops, struct msm_vm_op, node);
drivers/gpu/drm/msm/msm_gem_vma.c
789
kfree(job);
drivers/gpu/drm/msm/msm_gem_vma.c
960
struct msm_vm_bind_job *job;
drivers/gpu/drm/msm/msm_gem_vma.c
963
job = kzalloc_flex(*job, ops, nr_ops, GFP_KERNEL | __GFP_NOWARN);
drivers/gpu/drm/msm/msm_gem_vma.c
964
if (!job)
drivers/gpu/drm/msm/msm_gem_vma.c
967
ret = drm_sched_job_init(&job->base, queue->entity, 1, queue,
drivers/gpu/drm/msm/msm_gem_vma.c
970
kfree(job);
drivers/gpu/drm/msm/msm_gem_vma.c
974
job->vm = msm_context_vm(dev, queue->ctx);
drivers/gpu/drm/msm/msm_gem_vma.c
975
job->queue = queue;
drivers/gpu/drm/msm/msm_gem_vma.c
976
INIT_LIST_HEAD(&job->vm_ops);
drivers/gpu/drm/msm/msm_gem_vma.c
978
return job;
drivers/gpu/drm/msm/msm_gem_vma.c
992
lookup_op(struct msm_vm_bind_job *job, const struct drm_msm_vm_bind_op *op)
drivers/gpu/drm/msm/msm_gem_vma.c
994
struct drm_device *dev = job->vm->drm;
drivers/gpu/drm/msm/msm_gem_vma.c
996
int i = job->nr_ops++;
drivers/gpu/drm/msm/msm_gem_vma.c
999
job->ops[i].op = op->op;
drivers/gpu/drm/msm/msm_ringbuffer.c
14
static struct dma_fence *msm_job_run(struct drm_sched_job *job)
drivers/gpu/drm/msm/msm_ringbuffer.c
16
struct msm_gem_submit *submit = to_msm_submit(job);
drivers/gpu/drm/msm/msm_ringbuffer.c
52
static void msm_job_free(struct drm_sched_job *job)
drivers/gpu/drm/msm/msm_ringbuffer.c
54
struct msm_gem_submit *submit = to_msm_submit(job);
drivers/gpu/drm/msm/msm_ringbuffer.c
56
drm_sched_job_cleanup(job);
drivers/gpu/drm/msm/msm_syncobj.c
11
struct drm_sched_job *job,
drivers/gpu/drm/msm/msm_syncobj.c
48
ret = drm_sched_job_add_syncobj_dependency(job, file,
drivers/gpu/drm/msm/msm_syncobj.h
19
struct drm_sched_job *job,
drivers/gpu/drm/nouveau/nouveau_exec.c
120
nouveau_exec_job_armed_submit(struct nouveau_job *job,
drivers/gpu/drm/nouveau/nouveau_exec.c
123
drm_gpuvm_exec_resv_add_fence(vme, job->done_fence,
drivers/gpu/drm/nouveau/nouveau_exec.c
124
job->resv_usage, job->resv_usage);
drivers/gpu/drm/nouveau/nouveau_exec.c
129
nouveau_exec_job_run(struct nouveau_job *job)
drivers/gpu/drm/nouveau/nouveau_exec.c
131
struct nouveau_exec_job *exec_job = to_nouveau_exec_job(job);
drivers/gpu/drm/nouveau/nouveau_exec.c
138
NV_PRINTK(err, job->cli, "nv50cal_space: %d\n", ret);
drivers/gpu/drm/nouveau/nouveau_exec.c
154
NV_PRINTK(err, job->cli, "error fencing pushbuf: %d\n", ret);
drivers/gpu/drm/nouveau/nouveau_exec.c
168
nouveau_exec_job_free(struct nouveau_job *job)
drivers/gpu/drm/nouveau/nouveau_exec.c
170
struct nouveau_exec_job *exec_job = to_nouveau_exec_job(job);
drivers/gpu/drm/nouveau/nouveau_exec.c
172
nouveau_job_done(job);
drivers/gpu/drm/nouveau/nouveau_exec.c
173
nouveau_job_free(job);
drivers/gpu/drm/nouveau/nouveau_exec.c
181
nouveau_exec_job_timeout(struct nouveau_job *job)
drivers/gpu/drm/nouveau/nouveau_exec.c
183
struct nouveau_exec_job *exec_job = to_nouveau_exec_job(job);
drivers/gpu/drm/nouveau/nouveau_exec.c
189
NV_PRINTK(warn, job->cli, "job timeout, channel %d killed!\n",
drivers/gpu/drm/nouveau/nouveau_exec.c
207
struct nouveau_exec_job *job;
drivers/gpu/drm/nouveau/nouveau_exec.c
222
job = *pjob = kzalloc_obj(*job);
drivers/gpu/drm/nouveau/nouveau_exec.c
223
if (!job)
drivers/gpu/drm/nouveau/nouveau_exec.c
226
job->push.count = __args->push.count;
drivers/gpu/drm/nouveau/nouveau_exec.c
228
job->push.s = kmemdup(__args->push.s,
drivers/gpu/drm/nouveau/nouveau_exec.c
232
if (!job->push.s) {
drivers/gpu/drm/nouveau/nouveau_exec.c
239
job->chan = __args->chan;
drivers/gpu/drm/nouveau/nouveau_exec.c
243
args.credits = job->push.count + 1;
drivers/gpu/drm/nouveau/nouveau_exec.c
254
ret = nouveau_job_init(&job->base, &args);
drivers/gpu/drm/nouveau/nouveau_exec.c
261
kfree(job->push.s);
drivers/gpu/drm/nouveau/nouveau_exec.c
263
kfree(job);
drivers/gpu/drm/nouveau/nouveau_exec.c
272
struct nouveau_exec_job *job;
drivers/gpu/drm/nouveau/nouveau_exec.c
275
ret = nouveau_exec_job_init(&job, args);
drivers/gpu/drm/nouveau/nouveau_exec.c
279
ret = nouveau_job_submit(&job->base);
drivers/gpu/drm/nouveau/nouveau_exec.c
286
nouveau_job_fini(&job->base);
drivers/gpu/drm/nouveau/nouveau_exec.c
89
nouveau_exec_job_submit(struct nouveau_job *job,
drivers/gpu/drm/nouveau/nouveau_exec.c
92
struct nouveau_exec_job *exec_job = to_nouveau_exec_job(job);
drivers/gpu/drm/nouveau/nouveau_exec.c
93
struct nouveau_cli *cli = job->cli;
drivers/gpu/drm/nouveau/nouveau_exec.h
41
#define to_nouveau_exec_job(job) \
drivers/gpu/drm/nouveau/nouveau_exec.h
42
container_of((job), struct nouveau_exec_job, base)
drivers/gpu/drm/nouveau/nouveau_exec.h
44
int nouveau_exec_job_init(struct nouveau_exec_job **job,
drivers/gpu/drm/nouveau/nouveau_sched.c
100
kfree(job->out_sync.objs);
drivers/gpu/drm/nouveau/nouveau_sched.c
102
kfree(job->out_sync.data);
drivers/gpu/drm/nouveau/nouveau_sched.c
104
kfree(job->in_sync.data);
drivers/gpu/drm/nouveau/nouveau_sched.c
109
nouveau_job_fini(struct nouveau_job *job)
drivers/gpu/drm/nouveau/nouveau_sched.c
111
dma_fence_put(job->done_fence);
drivers/gpu/drm/nouveau/nouveau_sched.c
112
drm_sched_job_cleanup(&job->base);
drivers/gpu/drm/nouveau/nouveau_sched.c
114
job->ops->free(job);
drivers/gpu/drm/nouveau/nouveau_sched.c
118
nouveau_job_done(struct nouveau_job *job)
drivers/gpu/drm/nouveau/nouveau_sched.c
120
struct nouveau_sched *sched = job->sched;
drivers/gpu/drm/nouveau/nouveau_sched.c
122
spin_lock(&sched->job.list.lock);
drivers/gpu/drm/nouveau/nouveau_sched.c
123
list_del(&job->entry);
drivers/gpu/drm/nouveau/nouveau_sched.c
124
spin_unlock(&sched->job.list.lock);
drivers/gpu/drm/nouveau/nouveau_sched.c
126
wake_up(&sched->job.wq);
drivers/gpu/drm/nouveau/nouveau_sched.c
130
nouveau_job_free(struct nouveau_job *job)
drivers/gpu/drm/nouveau/nouveau_sched.c
132
kfree(job->in_sync.data);
drivers/gpu/drm/nouveau/nouveau_sched.c
133
kfree(job->out_sync.data);
drivers/gpu/drm/nouveau/nouveau_sched.c
134
kfree(job->out_sync.objs);
drivers/gpu/drm/nouveau/nouveau_sched.c
135
kfree(job->out_sync.chains);
drivers/gpu/drm/nouveau/nouveau_sched.c
139
sync_find_fence(struct nouveau_job *job,
drivers/gpu/drm/nouveau/nouveau_sched.c
154
ret = drm_syncobj_find_fence(job->file_priv,
drivers/gpu/drm/nouveau/nouveau_sched.c
164
nouveau_job_add_deps(struct nouveau_job *job)
drivers/gpu/drm/nouveau/nouveau_sched.c
169
for (i = 0; i < job->in_sync.count; i++) {
drivers/gpu/drm/nouveau/nouveau_sched.c
170
struct drm_nouveau_sync *sync = &job->in_sync.data[i];
drivers/gpu/drm/nouveau/nouveau_sched.c
172
ret = sync_find_fence(job, sync, &in_fence);
drivers/gpu/drm/nouveau/nouveau_sched.c
174
NV_PRINTK(warn, job->cli,
drivers/gpu/drm/nouveau/nouveau_sched.c
180
ret = drm_sched_job_add_dependency(&job->base, in_fence);
drivers/gpu/drm/nouveau/nouveau_sched.c
189
nouveau_job_fence_attach_cleanup(struct nouveau_job *job)
drivers/gpu/drm/nouveau/nouveau_sched.c
193
for (i = 0; i < job->out_sync.count; i++) {
drivers/gpu/drm/nouveau/nouveau_sched.c
194
struct drm_syncobj *obj = job->out_sync.objs[i];
drivers/gpu/drm/nouveau/nouveau_sched.c
195
struct dma_fence_chain *chain = job->out_sync.chains[i];
drivers/gpu/drm/nouveau/nouveau_sched.c
206
nouveau_job_fence_attach_prepare(struct nouveau_job *job)
drivers/gpu/drm/nouveau/nouveau_sched.c
210
for (i = 0; i < job->out_sync.count; i++) {
drivers/gpu/drm/nouveau/nouveau_sched.c
211
struct drm_nouveau_sync *sync = &job->out_sync.data[i];
drivers/gpu/drm/nouveau/nouveau_sched.c
212
struct drm_syncobj **pobj = &job->out_sync.objs[i];
drivers/gpu/drm/nouveau/nouveau_sched.c
213
struct dma_fence_chain **pchain = &job->out_sync.chains[i];
drivers/gpu/drm/nouveau/nouveau_sched.c
222
*pobj = drm_syncobj_find(job->file_priv, sync->handle);
drivers/gpu/drm/nouveau/nouveau_sched.c
224
NV_PRINTK(warn, job->cli,
drivers/gpu/drm/nouveau/nouveau_sched.c
243
nouveau_job_fence_attach_cleanup(job);
drivers/gpu/drm/nouveau/nouveau_sched.c
248
nouveau_job_fence_attach(struct nouveau_job *job)
drivers/gpu/drm/nouveau/nouveau_sched.c
250
struct dma_fence *fence = job->done_fence;
drivers/gpu/drm/nouveau/nouveau_sched.c
253
for (i = 0; i < job->out_sync.count; i++) {
drivers/gpu/drm/nouveau/nouveau_sched.c
254
struct drm_nouveau_sync *sync = &job->out_sync.data[i];
drivers/gpu/drm/nouveau/nouveau_sched.c
255
struct drm_syncobj **pobj = &job->out_sync.objs[i];
drivers/gpu/drm/nouveau/nouveau_sched.c
256
struct dma_fence_chain **pchain = &job->out_sync.chains[i];
drivers/gpu/drm/nouveau/nouveau_sched.c
26
nouveau_job_init(struct nouveau_job *job,
drivers/gpu/drm/nouveau/nouveau_sched.c
273
nouveau_job_submit(struct nouveau_job *job)
drivers/gpu/drm/nouveau/nouveau_sched.c
275
struct nouveau_sched *sched = job->sched;
drivers/gpu/drm/nouveau/nouveau_sched.c
278
.vm = &nouveau_cli_uvmm(job->cli)->base,
drivers/gpu/drm/nouveau/nouveau_sched.c
284
ret = nouveau_job_add_deps(job);
drivers/gpu/drm/nouveau/nouveau_sched.c
288
ret = nouveau_job_fence_attach_prepare(job);
drivers/gpu/drm/nouveau/nouveau_sched.c
300
if (job->ops->submit) {
drivers/gpu/drm/nouveau/nouveau_sched.c
301
ret = job->ops->submit(job, &vm_exec);
drivers/gpu/drm/nouveau/nouveau_sched.c
307
spin_lock(&sched->job.list.lock);
drivers/gpu/drm/nouveau/nouveau_sched.c
308
list_add(&job->entry, &sched->job.list.head);
drivers/gpu/drm/nouveau/nouveau_sched.c
309
spin_unlock(&sched->job.list.lock);
drivers/gpu/drm/nouveau/nouveau_sched.c
311
drm_sched_job_arm(&job->base);
drivers/gpu/drm/nouveau/nouveau_sched.c
312
job->done_fence = dma_fence_get(&job->base.s_fence->finished);
drivers/gpu/drm/nouveau/nouveau_sched.c
313
if (job->sync)
drivers/gpu/drm/nouveau/nouveau_sched.c
314
done_fence = dma_fence_get(job->done_fence);
drivers/gpu/drm/nouveau/nouveau_sched.c
316
if (job->ops->armed_submit)
drivers/gpu/drm/nouveau/nouveau_sched.c
317
job->ops->armed_submit(job, &vm_exec);
drivers/gpu/drm/nouveau/nouveau_sched.c
319
nouveau_job_fence_attach(job);
drivers/gpu/drm/nouveau/nouveau_sched.c
32
INIT_LIST_HEAD(&job->entry);
drivers/gpu/drm/nouveau/nouveau_sched.c
324
job->state = NOUVEAU_JOB_SUBMIT_SUCCESS;
drivers/gpu/drm/nouveau/nouveau_sched.c
326
drm_sched_entity_push_job(&job->base);
drivers/gpu/drm/nouveau/nouveau_sched.c
339
nouveau_job_fence_attach_cleanup(job);
drivers/gpu/drm/nouveau/nouveau_sched.c
34
job->file_priv = args->file_priv;
drivers/gpu/drm/nouveau/nouveau_sched.c
341
job->state = NOUVEAU_JOB_SUBMIT_FAILED;
drivers/gpu/drm/nouveau/nouveau_sched.c
346
nouveau_job_run(struct nouveau_job *job)
drivers/gpu/drm/nouveau/nouveau_sched.c
35
job->cli = nouveau_cli(args->file_priv);
drivers/gpu/drm/nouveau/nouveau_sched.c
350
fence = job->ops->run(job);
drivers/gpu/drm/nouveau/nouveau_sched.c
352
job->state = NOUVEAU_JOB_RUN_FAILED;
drivers/gpu/drm/nouveau/nouveau_sched.c
354
job->state = NOUVEAU_JOB_RUN_SUCCESS;
drivers/gpu/drm/nouveau/nouveau_sched.c
36
job->sched = sched;
drivers/gpu/drm/nouveau/nouveau_sched.c
362
struct nouveau_job *job = to_nouveau_job(sched_job);
drivers/gpu/drm/nouveau/nouveau_sched.c
364
return nouveau_job_run(job);
drivers/gpu/drm/nouveau/nouveau_sched.c
371
struct nouveau_job *job = to_nouveau_job(sched_job);
drivers/gpu/drm/nouveau/nouveau_sched.c
376
if (job->ops->timeout)
drivers/gpu/drm/nouveau/nouveau_sched.c
377
stat = job->ops->timeout(job);
drivers/gpu/drm/nouveau/nouveau_sched.c
379
NV_PRINTK(warn, job->cli, "Generic job timeout.\n");
drivers/gpu/drm/nouveau/nouveau_sched.c
38
job->sync = args->sync;
drivers/gpu/drm/nouveau/nouveau_sched.c
389
struct nouveau_job *job = to_nouveau_job(sched_job);
drivers/gpu/drm/nouveau/nouveau_sched.c
39
job->resv_usage = args->resv_usage;
drivers/gpu/drm/nouveau/nouveau_sched.c
391
nouveau_job_fini(job);
drivers/gpu/drm/nouveau/nouveau_sched.c
41
job->ops = args->ops;
drivers/gpu/drm/nouveau/nouveau_sched.c
43
job->in_sync.count = args->in_sync.count;
drivers/gpu/drm/nouveau/nouveau_sched.c
44
if (job->in_sync.count) {
drivers/gpu/drm/nouveau/nouveau_sched.c
447
spin_lock_init(&sched->job.list.lock);
drivers/gpu/drm/nouveau/nouveau_sched.c
448
INIT_LIST_HEAD(&sched->job.list.head);
drivers/gpu/drm/nouveau/nouveau_sched.c
449
init_waitqueue_head(&sched->job.wq);
drivers/gpu/drm/nouveau/nouveau_sched.c
45
if (job->sync)
drivers/gpu/drm/nouveau/nouveau_sched.c
48
job->in_sync.data = kmemdup(args->in_sync.s,
drivers/gpu/drm/nouveau/nouveau_sched.c
488
spin_lock(&sched->job.list.lock);
drivers/gpu/drm/nouveau/nouveau_sched.c
489
empty = list_empty(&sched->job.list.head);
drivers/gpu/drm/nouveau/nouveau_sched.c
490
spin_unlock(&sched->job.list.lock);
drivers/gpu/drm/nouveau/nouveau_sched.c
501
wait_event(sched->job.wq, nouveau_sched_job_list_empty(sched));
drivers/gpu/drm/nouveau/nouveau_sched.c
52
if (!job->in_sync.data)
drivers/gpu/drm/nouveau/nouveau_sched.c
56
job->out_sync.count = args->out_sync.count;
drivers/gpu/drm/nouveau/nouveau_sched.c
57
if (job->out_sync.count) {
drivers/gpu/drm/nouveau/nouveau_sched.c
58
if (job->sync) {
drivers/gpu/drm/nouveau/nouveau_sched.c
63
job->out_sync.data = kmemdup(args->out_sync.s,
drivers/gpu/drm/nouveau/nouveau_sched.c
67
if (!job->out_sync.data) {
drivers/gpu/drm/nouveau/nouveau_sched.c
72
job->out_sync.objs = kzalloc_objs(*job->out_sync.objs,
drivers/gpu/drm/nouveau/nouveau_sched.c
73
job->out_sync.count);
drivers/gpu/drm/nouveau/nouveau_sched.c
74
if (!job->out_sync.objs) {
drivers/gpu/drm/nouveau/nouveau_sched.c
79
job->out_sync.chains = kzalloc_objs(*job->out_sync.chains,
drivers/gpu/drm/nouveau/nouveau_sched.c
80
job->out_sync.count);
drivers/gpu/drm/nouveau/nouveau_sched.c
81
if (!job->out_sync.chains) {
drivers/gpu/drm/nouveau/nouveau_sched.c
87
ret = drm_sched_job_init(&job->base, &sched->entity,
drivers/gpu/drm/nouveau/nouveau_sched.c
89
job->file_priv->client_id);
drivers/gpu/drm/nouveau/nouveau_sched.c
93
job->state = NOUVEAU_JOB_INITIALIZED;
drivers/gpu/drm/nouveau/nouveau_sched.c
98
kfree(job->out_sync.chains);
drivers/gpu/drm/nouveau/nouveau_sched.h
111
} job;
drivers/gpu/drm/nouveau/nouveau_sched.h
92
int nouveau_job_init(struct nouveau_job *job,
drivers/gpu/drm/nouveau/nouveau_sched.h
94
void nouveau_job_fini(struct nouveau_job *job);
drivers/gpu/drm/nouveau/nouveau_sched.h
95
int nouveau_job_submit(struct nouveau_job *job);
drivers/gpu/drm/nouveau/nouveau_sched.h
96
void nouveau_job_done(struct nouveau_job *job);
drivers/gpu/drm/nouveau/nouveau_sched.h
97
void nouveau_job_free(struct nouveau_job *job);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1035
struct nouveau_uvmm_bind_job *job =
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1039
list_for_each_op_safe(op, next, &job->ops) {
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1044
nouveau_job_free(&job->base);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1045
kfree(job);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1049
nouveau_uvmm_bind_job_get(struct nouveau_uvmm_bind_job *job)
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1051
kref_get(&job->kref);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1055
nouveau_uvmm_bind_job_put(struct nouveau_uvmm_bind_job *job)
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1057
kref_put(&job->kref, nouveau_uvmm_bind_job_free);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1061
bind_validate_op(struct nouveau_job *job,
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1064
struct nouveau_uvmm *uvmm = nouveau_cli_uvmm(job->cli);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1082
bind_validate_map_sparse(struct nouveau_job *job, u64 addr, u64 range)
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1084
struct nouveau_sched *sched = job->sched;
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1090
spin_lock(&sched->job.list.lock);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1091
list_for_each_entry(__job, &sched->job.list.head, entry) {
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1101
spin_unlock(&sched->job.list.lock);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1109
spin_unlock(&sched->job.list.lock);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1113
bind_validate_map_common(struct nouveau_job *job, u64 addr, u64 range,
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1116
struct nouveau_uvmm *uvmm = nouveau_cli_uvmm(job->cli);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1157
bind_validate_region(struct nouveau_job *job)
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1159
struct nouveau_uvmm_bind_job *bind_job = to_uvmm_bind_job(job);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1171
bind_validate_map_sparse(job, op_addr, op_range);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1174
ret = bind_validate_map_common(job, op_addr, op_range,
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1220
bind_lock_validate(struct nouveau_job *job, struct drm_exec *exec,
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1223
struct nouveau_uvmm_bind_job *bind_job = to_uvmm_bind_job(job);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1260
nouveau_uvmm_bind_job_submit(struct nouveau_job *job,
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1263
struct nouveau_uvmm *uvmm = nouveau_cli_uvmm(job->cli);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1264
struct nouveau_uvmm_bind_job *bind_job = to_uvmm_bind_job(job);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1272
drm_gem_object_lookup(job->file_priv,
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1286
ret = bind_validate_op(job, op);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1296
ret = bind_validate_region(job);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1423
ret = bind_lock_validate(job, exec, vme->num_fences);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1503
nouveau_uvmm_bind_job_armed_submit(struct nouveau_job *job,
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1506
drm_gpuvm_exec_resv_add_fence(vme, job->done_fence,
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1507
job->resv_usage, job->resv_usage);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1512
nouveau_uvmm_bind_job_run(struct nouveau_job *job)
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1514
struct nouveau_uvmm_bind_job *bind_job = to_uvmm_bind_job(job);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1515
struct nouveau_uvmm *uvmm = nouveau_cli_uvmm(job->cli);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1541
NV_PRINTK(err, job->cli, "bind job failed: %d\n", ret);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1546
nouveau_uvmm_bind_job_cleanup(struct nouveau_job *job)
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1548
struct nouveau_uvmm_bind_job *bind_job = to_uvmm_bind_job(job);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1549
struct nouveau_uvmm *uvmm = nouveau_cli_uvmm(job->cli);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1602
nouveau_job_done(job);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1663
struct nouveau_uvmm_bind_job *job;
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1668
ret = nouveau_uvmm_bind_job_alloc(&job);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1672
INIT_LIST_HEAD(&job->ops);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1679
list_add_tail(&op->entry, &job->ops);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1682
init_completion(&job->complete);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1699
ret = nouveau_job_init(&job->base, &args);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1703
*pjob = job;
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1707
bind_job_ops_free(&job->ops);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1708
kfree(job);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1717
struct nouveau_uvmm_bind_job *job;
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1720
ret = nouveau_uvmm_bind_job_init(&job, args);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1724
ret = nouveau_job_submit(&job->base);
drivers/gpu/drm/nouveau/nouveau_uvmm.c
1731
nouveau_job_fini(&job->base);
drivers/gpu/drm/nouveau/nouveau_uvmm.h
76
#define to_uvmm_bind_job(job) container_of((job), struct nouveau_uvmm_bind_job, base)
drivers/gpu/drm/panfrost/panfrost_drv.c
192
struct panfrost_job *job)
drivers/gpu/drm/panfrost/panfrost_drv.c
199
job->bo_count = args->bo_handle_count;
drivers/gpu/drm/panfrost/panfrost_drv.c
201
if (!job->bo_count)
drivers/gpu/drm/panfrost/panfrost_drv.c
206
job->bo_count, &job->bos);
drivers/gpu/drm/panfrost/panfrost_drv.c
210
job->mappings = kvmalloc_objs(struct panfrost_gem_mapping *,
drivers/gpu/drm/panfrost/panfrost_drv.c
211
job->bo_count, GFP_KERNEL | __GFP_ZERO);
drivers/gpu/drm/panfrost/panfrost_drv.c
212
if (!job->mappings)
drivers/gpu/drm/panfrost/panfrost_drv.c
215
for (i = 0; i < job->bo_count; i++) {
drivers/gpu/drm/panfrost/panfrost_drv.c
218
bo = to_panfrost_bo(job->bos[i]);
drivers/gpu/drm/panfrost/panfrost_drv.c
226
job->mappings[i] = mapping;
drivers/gpu/drm/panfrost/panfrost_drv.c
249
struct panfrost_job *job)
drivers/gpu/drm/panfrost/panfrost_drv.c
276
ret = drm_sched_job_add_syncobj_dependency(&job->base, file_priv,
drivers/gpu/drm/panfrost/panfrost_drv.c
295
struct panfrost_job *job;
drivers/gpu/drm/panfrost/panfrost_drv.c
319
job = kzalloc_obj(*job);
drivers/gpu/drm/panfrost/panfrost_drv.c
320
if (!job) {
drivers/gpu/drm/panfrost/panfrost_drv.c
325
kref_init(&job->refcount);
drivers/gpu/drm/panfrost/panfrost_drv.c
327
job->pfdev = pfdev;
drivers/gpu/drm/panfrost/panfrost_drv.c
328
job->jc = args->jc;
drivers/gpu/drm/panfrost/panfrost_drv.c
329
job->requirements = args->requirements;
drivers/gpu/drm/panfrost/panfrost_drv.c
330
job->flush_id = panfrost_gpu_get_latest_flush_id(pfdev);
drivers/gpu/drm/panfrost/panfrost_drv.c
331
job->mmu = file_priv->mmu;
drivers/gpu/drm/panfrost/panfrost_drv.c
332
job->ctx = panfrost_jm_ctx_get(jm_ctx);
drivers/gpu/drm/panfrost/panfrost_drv.c
333
job->engine_usage = &file_priv->engine_usage;
drivers/gpu/drm/panfrost/panfrost_drv.c
335
slot = panfrost_job_get_slot(job);
drivers/gpu/drm/panfrost/panfrost_drv.c
337
ret = drm_sched_job_init(&job->base,
drivers/gpu/drm/panfrost/panfrost_drv.c
343
ret = panfrost_copy_in_sync(dev, file, args, job);
drivers/gpu/drm/panfrost/panfrost_drv.c
347
ret = panfrost_lookup_bos(dev, file, args, job);
drivers/gpu/drm/panfrost/panfrost_drv.c
351
ret = panfrost_job_push(job);
drivers/gpu/drm/panfrost/panfrost_drv.c
357
drm_syncobj_replace_fence(sync_out, job->render_done_fence);
drivers/gpu/drm/panfrost/panfrost_drv.c
361
drm_sched_job_cleanup(&job->base);
drivers/gpu/drm/panfrost/panfrost_drv.c
363
panfrost_job_put(job);
drivers/gpu/drm/panfrost/panfrost_dump.c
103
void panfrost_core_dump(struct panfrost_job *job)
drivers/gpu/drm/panfrost/panfrost_dump.c
105
struct panfrost_device *pfdev = job->pfdev;
drivers/gpu/drm/panfrost/panfrost_dump.c
115
as_nr = job->mmu->as;
drivers/gpu/drm/panfrost/panfrost_dump.c
116
slot = panfrost_job_get_slot(job);
drivers/gpu/drm/panfrost/panfrost_dump.c
130
for (i = 0; i < job->bo_count; i++) {
drivers/gpu/drm/panfrost/panfrost_dump.c
138
dbo = job->bos[i];
drivers/gpu/drm/panfrost/panfrost_dump.c
180
iter.hdr->reghdr.jc = job->jc;
drivers/gpu/drm/panfrost/panfrost_dump.c
184
iter.hdr->reghdr.nbos = job->bo_count;
drivers/gpu/drm/panfrost/panfrost_dump.c
189
if (job->bo_count) {
drivers/gpu/drm/panfrost/panfrost_dump.c
196
for (i = 0; i < job->bo_count; i++) {
drivers/gpu/drm/panfrost/panfrost_dump.c
203
bo = to_panfrost_bo(job->bos[i]);
drivers/gpu/drm/panfrost/panfrost_dump.c
204
mapping = job->mappings[i];
drivers/gpu/drm/panfrost/panfrost_dump.h
10
void panfrost_core_dump(struct panfrost_job *job);
drivers/gpu/drm/panfrost/panfrost_job.c
1105
struct panfrost_job *job = pfdev->jobs[i][j];
drivers/gpu/drm/panfrost/panfrost_job.c
1108
if (!job || job->base.entity != entity)
drivers/gpu/drm/panfrost/panfrost_job.c
111
int panfrost_job_get_slot(struct panfrost_job *job)
drivers/gpu/drm/panfrost/panfrost_job.c
1117
job->jc = 0;
drivers/gpu/drm/panfrost/panfrost_job.c
1121
cmd = panfrost_get_job_chain_flag(job) ?
drivers/gpu/drm/panfrost/panfrost_job.c
1131
job->engine_usage = NULL;
drivers/gpu/drm/panfrost/panfrost_job.c
117
if (job->requirements & PANFROST_JD_REQ_FS)
drivers/gpu/drm/panfrost/panfrost_job.c
122
if (job->requirements & PANFROST_JD_REQ_ONLY_COMPUTE) {
drivers/gpu/drm/panfrost/panfrost_job.c
123
if ((job->requirements & PANFROST_JD_REQ_CORE_GRP_MASK) &&
drivers/gpu/drm/panfrost/panfrost_job.c
124
(job->pfdev->features.nr_core_groups == 2))
drivers/gpu/drm/panfrost/panfrost_job.c
126
if (panfrost_has_hw_issue(job->pfdev, HW_ISSUE_8987))
drivers/gpu/drm/panfrost/panfrost_job.c
151
panfrost_get_job_chain_flag(const struct panfrost_job *job)
drivers/gpu/drm/panfrost/panfrost_job.c
153
struct panfrost_fence *f = to_panfrost_fence(job->done_fence);
drivers/gpu/drm/panfrost/panfrost_job.c
155
if (!panfrost_has_hw_feature(job->pfdev, HW_FEATURE_JOBCHAIN_DISAMBIGUATION))
drivers/gpu/drm/panfrost/panfrost_job.c
164
struct panfrost_job *job = pfdev->jobs[slot][0];
drivers/gpu/drm/panfrost/panfrost_job.c
166
WARN_ON(!job);
drivers/gpu/drm/panfrost/panfrost_job.c
168
if (job->is_profiled && job->engine_usage) {
drivers/gpu/drm/panfrost/panfrost_job.c
169
job->engine_usage->elapsed_ns[slot] +=
drivers/gpu/drm/panfrost/panfrost_job.c
170
ktime_to_ns(ktime_sub(ktime_get(), job->start_time));
drivers/gpu/drm/panfrost/panfrost_job.c
171
job->engine_usage->cycles[slot] +=
drivers/gpu/drm/panfrost/panfrost_job.c
172
panfrost_cycle_counter_read(pfdev) - job->start_cycles;
drivers/gpu/drm/panfrost/panfrost_job.c
175
if (job->requirements & PANFROST_JD_REQ_CYCLE_COUNT || job->is_profiled)
drivers/gpu/drm/panfrost/panfrost_job.c
181
return job;
drivers/gpu/drm/panfrost/panfrost_job.c
186
struct panfrost_job *job)
drivers/gpu/drm/panfrost/panfrost_job.c
188
if (WARN_ON(!job))
drivers/gpu/drm/panfrost/panfrost_job.c
192
pfdev->jobs[slot][0] = job;
drivers/gpu/drm/panfrost/panfrost_job.c
197
pfdev->jobs[slot][1] = job;
drivers/gpu/drm/panfrost/panfrost_job.c
198
WARN_ON(panfrost_get_job_chain_flag(job) ==
drivers/gpu/drm/panfrost/panfrost_job.c
203
static int panfrost_job_hw_submit(struct panfrost_job *job, int js)
drivers/gpu/drm/panfrost/panfrost_job.c
205
struct panfrost_device *pfdev = job->pfdev;
drivers/gpu/drm/panfrost/panfrost_job.c
208
u64 jc_head = job->jc;
drivers/gpu/drm/panfrost/panfrost_job.c
220
ret = panfrost_mmu_as_get(pfdev, job->mmu);
drivers/gpu/drm/panfrost/panfrost_job.c
231
panfrost_job_write_affinity(pfdev, job->requirements, js);
drivers/gpu/drm/panfrost/panfrost_job.c
238
panfrost_get_job_chain_flag(job);
drivers/gpu/drm/panfrost/panfrost_job.c
249
job_write(pfdev, JS_FLUSH_ID_NEXT(js), job->flush_id);
drivers/gpu/drm/panfrost/panfrost_job.c
254
subslot = panfrost_enqueue_job(pfdev, js, job);
drivers/gpu/drm/panfrost/panfrost_job.c
257
job->is_profiled = pfdev->profile_mode;
drivers/gpu/drm/panfrost/panfrost_job.c
259
if (job->requirements & PANFROST_JD_REQ_CYCLE_COUNT ||
drivers/gpu/drm/panfrost/panfrost_job.c
260
job->is_profiled)
drivers/gpu/drm/panfrost/panfrost_job.c
263
if (job->is_profiled) {
drivers/gpu/drm/panfrost/panfrost_job.c
264
job->start_time = ktime_get();
drivers/gpu/drm/panfrost/panfrost_job.c
265
job->start_cycles = panfrost_cycle_counter_read(pfdev);
drivers/gpu/drm/panfrost/panfrost_job.c
271
job, js, subslot, jc_head, cfg & 0xf);
drivers/gpu/drm/panfrost/panfrost_job.c
284
struct drm_sched_job *job)
drivers/gpu/drm/panfrost/panfrost_job.c
294
ret = drm_sched_job_add_implicit_dependencies(job, bos[i],
drivers/gpu/drm/panfrost/panfrost_job.c
313
int panfrost_job_push(struct panfrost_job *job)
drivers/gpu/drm/panfrost/panfrost_job.c
315
struct panfrost_device *pfdev = job->pfdev;
drivers/gpu/drm/panfrost/panfrost_job.c
319
ret = drm_gem_lock_reservations(job->bos, job->bo_count,
drivers/gpu/drm/panfrost/panfrost_job.c
325
drm_sched_job_arm(&job->base);
drivers/gpu/drm/panfrost/panfrost_job.c
327
job->render_done_fence = dma_fence_get(&job->base.s_fence->finished);
drivers/gpu/drm/panfrost/panfrost_job.c
329
ret = panfrost_acquire_object_fences(job->bos, job->bo_count,
drivers/gpu/drm/panfrost/panfrost_job.c
330
&job->base);
drivers/gpu/drm/panfrost/panfrost_job.c
336
kref_get(&job->refcount); /* put by scheduler job completion */
drivers/gpu/drm/panfrost/panfrost_job.c
338
drm_sched_entity_push_job(&job->base);
drivers/gpu/drm/panfrost/panfrost_job.c
342
panfrost_attach_object_fences(job->bos, job->bo_count,
drivers/gpu/drm/panfrost/panfrost_job.c
343
job->render_done_fence);
drivers/gpu/drm/panfrost/panfrost_job.c
346
drm_gem_unlock_reservations(job->bos, job->bo_count, &acquire_ctx);
drivers/gpu/drm/panfrost/panfrost_job.c
353
struct panfrost_job *job = container_of(ref, struct panfrost_job,
drivers/gpu/drm/panfrost/panfrost_job.c
357
dma_fence_put(job->done_fence);
drivers/gpu/drm/panfrost/panfrost_job.c
358
dma_fence_put(job->render_done_fence);
drivers/gpu/drm/panfrost/panfrost_job.c
360
if (job->mappings) {
drivers/gpu/drm/panfrost/panfrost_job.c
361
for (i = 0; i < job->bo_count; i++) {
drivers/gpu/drm/panfrost/panfrost_job.c
362
if (!job->mappings[i])
drivers/gpu/drm/panfrost/panfrost_job.c
365
atomic_dec(&job->mappings[i]->obj->gpu_usecount);
drivers/gpu/drm/panfrost/panfrost_job.c
366
panfrost_gem_mapping_put(job->mappings[i]);
drivers/gpu/drm/panfrost/panfrost_job.c
368
kvfree(job->mappings);
drivers/gpu/drm/panfrost/panfrost_job.c
371
if (job->bos) {
drivers/gpu/drm/panfrost/panfrost_job.c
372
for (i = 0; i < job->bo_count; i++)
drivers/gpu/drm/panfrost/panfrost_job.c
373
drm_gem_object_put(job->bos[i]);
drivers/gpu/drm/panfrost/panfrost_job.c
375
kvfree(job->bos);
drivers/gpu/drm/panfrost/panfrost_job.c
378
panfrost_jm_ctx_put(job->ctx);
drivers/gpu/drm/panfrost/panfrost_job.c
379
kfree(job);
drivers/gpu/drm/panfrost/panfrost_job.c
382
void panfrost_job_put(struct panfrost_job *job)
drivers/gpu/drm/panfrost/panfrost_job.c
384
kref_put(&job->refcount, panfrost_job_cleanup);
drivers/gpu/drm/panfrost/panfrost_job.c
389
struct panfrost_job *job = to_panfrost_job(sched_job);
drivers/gpu/drm/panfrost/panfrost_job.c
393
panfrost_job_put(job);
drivers/gpu/drm/panfrost/panfrost_job.c
398
struct panfrost_job *job = to_panfrost_job(sched_job);
drivers/gpu/drm/panfrost/panfrost_job.c
399
struct panfrost_device *pfdev = job->pfdev;
drivers/gpu/drm/panfrost/panfrost_job.c
400
int slot = panfrost_job_get_slot(job);
drivers/gpu/drm/panfrost/panfrost_job.c
404
if (job->ctx->destroyed)
drivers/gpu/drm/panfrost/panfrost_job.c
407
if (unlikely(job->base.s_fence->finished.error))
drivers/gpu/drm/panfrost/panfrost_job.c
413
if (!job->jc)
drivers/gpu/drm/panfrost/panfrost_job.c
420
if (job->done_fence)
drivers/gpu/drm/panfrost/panfrost_job.c
421
dma_fence_put(job->done_fence);
drivers/gpu/drm/panfrost/panfrost_job.c
422
job->done_fence = dma_fence_get(fence);
drivers/gpu/drm/panfrost/panfrost_job.c
424
ret = panfrost_job_hw_submit(job, slot);
drivers/gpu/drm/panfrost/panfrost_job.c
453
struct panfrost_job *job,
drivers/gpu/drm/panfrost/panfrost_job.c
474
job->jc = job_read(pfdev, JS_TAIL_LO(js)) |
drivers/gpu/drm/panfrost/panfrost_job.c
481
dma_fence_set_error(job->done_fence, -ECANCELED);
drivers/gpu/drm/panfrost/panfrost_job.c
482
job->jc = 0;
drivers/gpu/drm/panfrost/panfrost_job.c
488
dma_fence_set_error(job->done_fence, -EINVAL);
drivers/gpu/drm/panfrost/panfrost_job.c
489
job->jc = 0;
drivers/gpu/drm/panfrost/panfrost_job.c
492
panfrost_mmu_as_put(pfdev, job->mmu);
drivers/gpu/drm/panfrost/panfrost_job.c
496
dma_fence_signal_locked(job->done_fence);
drivers/gpu/drm/panfrost/panfrost_job.c
507
struct panfrost_job *job)
drivers/gpu/drm/panfrost/panfrost_job.c
512
job->jc = 0;
drivers/gpu/drm/panfrost/panfrost_job.c
513
panfrost_mmu_as_put(pfdev, job->mmu);
drivers/gpu/drm/panfrost/panfrost_job.c
516
dma_fence_signal_locked(job->done_fence);
drivers/gpu/drm/panfrost/panfrost_job.c
763
struct panfrost_job *job = to_panfrost_job(sched_job);
drivers/gpu/drm/panfrost/panfrost_job.c
764
struct panfrost_device *pfdev = job->pfdev;
drivers/gpu/drm/panfrost/panfrost_job.c
765
int js = panfrost_job_get_slot(job);
drivers/gpu/drm/panfrost/panfrost_job.c
771
if (dma_fence_is_signaled(job->done_fence))
drivers/gpu/drm/panfrost/panfrost_job.c
785
if (dma_fence_is_signaled(job->done_fence)) {
drivers/gpu/drm/panfrost/panfrost_job.c
798
panfrost_core_dump(job);
drivers/gpu/drm/panfrost/panfrost_job.h
73
int panfrost_job_get_slot(struct panfrost_job *job);
drivers/gpu/drm/panfrost/panfrost_job.h
74
int panfrost_job_push(struct panfrost_job *job);
drivers/gpu/drm/panfrost/panfrost_job.h
75
void panfrost_job_put(struct panfrost_job *job);
drivers/gpu/drm/panthor/panthor_drv.c
1129
struct drm_sched_job *job;
drivers/gpu/drm/panthor/panthor_drv.c
1131
job = panthor_job_create(pfile, args->group_handle, qsubmit,
drivers/gpu/drm/panthor/panthor_drv.c
1133
if (IS_ERR(job)) {
drivers/gpu/drm/panthor/panthor_drv.c
1134
ret = PTR_ERR(job);
drivers/gpu/drm/panthor/panthor_drv.c
1138
ret = panthor_submit_ctx_add_job(&ctx, i, job, &qsubmit->syncs);
drivers/gpu/drm/panthor/panthor_drv.c
1171
struct panthor_vm *vm = panthor_job_vm(ctx.jobs[0].job);
drivers/gpu/drm/panthor/panthor_drv.c
1357
struct drm_sched_job *job;
drivers/gpu/drm/panthor/panthor_drv.c
1359
job = panthor_vm_bind_job_create(file, vm, op);
drivers/gpu/drm/panthor/panthor_drv.c
1360
if (IS_ERR(job)) {
drivers/gpu/drm/panthor/panthor_drv.c
1361
ret = PTR_ERR(job);
drivers/gpu/drm/panthor/panthor_drv.c
1365
ret = panthor_submit_ctx_add_job(&ctx, i, job, &op->syncs);
drivers/gpu/drm/panthor/panthor_drv.c
1377
ret = panthor_vm_bind_job_prepare_resvs(&ctx.exec, ctx.jobs[i].job);
drivers/gpu/drm/panthor/panthor_drv.c
276
struct drm_sched_job *job;
drivers/gpu/drm/panthor/panthor_drv.c
458
struct drm_sched_job *job,
drivers/gpu/drm/panthor/panthor_drv.c
463
ctx->jobs[idx].job = job;
drivers/gpu/drm/panthor/panthor_drv.c
508
struct dma_fence *done_fence = &ctx->jobs[job_idx].job->s_fence->finished;
drivers/gpu/drm/panthor/panthor_drv.c
610
struct drm_sched_job *job = ctx->jobs[job_idx].job;
drivers/gpu/drm/panthor/panthor_drv.c
640
ret = drm_sched_job_add_dependency(job, fence);
drivers/gpu/drm/panthor/panthor_drv.c
687
drm_sched_job_arm(ctx->jobs[i].job);
drivers/gpu/drm/panthor/panthor_drv.c
708
upd_resvs(&ctx->exec, ctx->jobs[i].job);
drivers/gpu/drm/panthor/panthor_drv.c
709
drm_sched_entity_push_job(ctx->jobs[i].job);
drivers/gpu/drm/panthor/panthor_drv.c
712
ctx->jobs[i].job = NULL;
drivers/gpu/drm/panthor/panthor_drv.c
760
job_put(ctx->jobs[i].job);
drivers/gpu/drm/panthor/panthor_fw.c
1095
PANTHOR_IRQ_HANDLER(job, panthor_job_irq_handler);
drivers/gpu/drm/panthor/panthor_mmu.c
2643
struct panthor_vm_bind_job *job = container_of(sched_job, struct panthor_vm_bind_job, base);
drivers/gpu/drm/panthor/panthor_mmu.c
2653
ret = panthor_vm_exec_op(job->vm, &job->ctx, true);
drivers/gpu/drm/panthor/panthor_mmu.c
2661
struct panthor_vm_bind_job *job = container_of(kref, struct panthor_vm_bind_job, refcount);
drivers/gpu/drm/panthor/panthor_mmu.c
2663
if (job->base.s_fence)
drivers/gpu/drm/panthor/panthor_mmu.c
2664
drm_sched_job_cleanup(&job->base);
drivers/gpu/drm/panthor/panthor_mmu.c
2666
panthor_vm_cleanup_op_ctx(&job->ctx, job->vm);
drivers/gpu/drm/panthor/panthor_mmu.c
2667
panthor_vm_put(job->vm);
drivers/gpu/drm/panthor/panthor_mmu.c
2668
kfree(job);
drivers/gpu/drm/panthor/panthor_mmu.c
2677
struct panthor_vm_bind_job *job =
drivers/gpu/drm/panthor/panthor_mmu.c
2681
kref_put(&job->refcount, panthor_vm_bind_job_release);
drivers/gpu/drm/panthor/panthor_mmu.c
2687
struct panthor_vm_bind_job *job =
drivers/gpu/drm/panthor/panthor_mmu.c
2695
queue_work(panthor_cleanup_wq, &job->cleanup_op_ctx_work);
drivers/gpu/drm/panthor/panthor_mmu.c
2903
struct panthor_vm_bind_job *job =
drivers/gpu/drm/panthor/panthor_mmu.c
2906
panthor_vm_bind_job_put(&job->base);
drivers/gpu/drm/panthor/panthor_mmu.c
2922
struct panthor_vm_bind_job *job;
drivers/gpu/drm/panthor/panthor_mmu.c
2931
job = kzalloc_obj(*job);
drivers/gpu/drm/panthor/panthor_mmu.c
2932
if (!job)
drivers/gpu/drm/panthor/panthor_mmu.c
2935
ret = panthor_vm_bind_prepare_op_ctx(file, vm, op, &job->ctx);
drivers/gpu/drm/panthor/panthor_mmu.c
2937
kfree(job);
drivers/gpu/drm/panthor/panthor_mmu.c
2941
INIT_WORK(&job->cleanup_op_ctx_work, panthor_vm_bind_job_cleanup_op_ctx_work);
drivers/gpu/drm/panthor/panthor_mmu.c
2942
kref_init(&job->refcount);
drivers/gpu/drm/panthor/panthor_mmu.c
2943
job->vm = panthor_vm_get(vm);
drivers/gpu/drm/panthor/panthor_mmu.c
2945
ret = drm_sched_job_init(&job->base, &vm->entity, 1, vm, file->client_id);
drivers/gpu/drm/panthor/panthor_mmu.c
2949
return &job->base;
drivers/gpu/drm/panthor/panthor_mmu.c
2952
panthor_vm_bind_job_put(&job->base);
drivers/gpu/drm/panthor/panthor_mmu.c
2970
struct panthor_vm_bind_job *job = container_of(sched_job, struct panthor_vm_bind_job, base);
drivers/gpu/drm/panthor/panthor_mmu.c
2974
ret = drm_gpuvm_prepare_vm(&job->vm->base, exec, 1);
drivers/gpu/drm/panthor/panthor_mmu.c
2978
if (job->ctx.map.vm_bo) {
drivers/gpu/drm/panthor/panthor_mmu.c
2980
ret = drm_exec_prepare_obj(exec, job->ctx.map.vm_bo->obj, 1);
drivers/gpu/drm/panthor/panthor_mmu.c
2996
struct panthor_vm_bind_job *job = container_of(sched_job, struct panthor_vm_bind_job, base);
drivers/gpu/drm/panthor/panthor_mmu.c
2999
drm_gpuvm_resv_add_fence(&job->vm->base, exec,
drivers/gpu/drm/panthor/panthor_mmu.h
100
void panthor_vm_bind_job_update_resvs(struct drm_exec *exec, struct drm_sched_job *job);
drivers/gpu/drm/panthor/panthor_mmu.h
61
struct drm_sched_job *job);
drivers/gpu/drm/panthor/panthor_mmu.h
63
struct drm_sched_job *job);
drivers/gpu/drm/panthor/panthor_mmu.h
97
void panthor_vm_bind_job_put(struct drm_sched_job *job);
drivers/gpu/drm/panthor/panthor_mmu.h
99
struct drm_sched_job *job);
drivers/gpu/drm/panthor/panthor_sched.c
1113
struct panthor_job *job;
drivers/gpu/drm/panthor/panthor_sched.c
1122
job = list_first_entry_or_null(&queue->fence_ctx.in_flight_jobs,
drivers/gpu/drm/panthor/panthor_sched.c
1124
group = job ? job->group : NULL;
drivers/gpu/drm/panthor/panthor_sched.c
1132
(group->blocked_queues & BIT(job->queue_idx)) &&
drivers/gpu/drm/panthor/panthor_sched.c
1141
if (!timer_was_active || !job)
drivers/gpu/drm/panthor/panthor_sched.c
1541
struct panthor_job *job;
drivers/gpu/drm/panthor/panthor_sched.c
1544
list_for_each_entry(job, &queue->fence_ctx.in_flight_jobs, node) {
drivers/gpu/drm/panthor/panthor_sched.c
1545
if (cs_extract >= job->ringbuf.end)
drivers/gpu/drm/panthor/panthor_sched.c
1548
if (cs_extract < job->ringbuf.start)
drivers/gpu/drm/panthor/panthor_sched.c
1551
dma_fence_set_error(job->done_fence, -EINVAL);
drivers/gpu/drm/panthor/panthor_sched.c
2162
struct panthor_job *job, *tmp;
drivers/gpu/drm/panthor/panthor_sched.c
2187
list_for_each_entry_safe(job, tmp, &queue->fence_ctx.in_flight_jobs, node) {
drivers/gpu/drm/panthor/panthor_sched.c
2188
list_move_tail(&job->node, &faulty_jobs);
drivers/gpu/drm/panthor/panthor_sched.c
2189
dma_fence_set_error(job->done_fence, err);
drivers/gpu/drm/panthor/panthor_sched.c
2190
dma_fence_signal_locked(job->done_fence);
drivers/gpu/drm/panthor/panthor_sched.c
2202
list_for_each_entry_safe(job, tmp, &faulty_jobs, node) {
drivers/gpu/drm/panthor/panthor_sched.c
2203
list_del_init(&job->node);
drivers/gpu/drm/panthor/panthor_sched.c
2204
panthor_job_put(&job->base);
drivers/gpu/drm/panthor/panthor_sched.c
2749
struct panthor_job *job;
drivers/gpu/drm/panthor/panthor_sched.c
2752
list_for_each_entry(job, &queue->scheduler.pending_list, base.list)
drivers/gpu/drm/panthor/panthor_sched.c
2753
job->base.s_fence->parent = dma_fence_get(job->done_fence);
drivers/gpu/drm/panthor/panthor_sched.c
3021
static void update_fdinfo_stats(struct panthor_job *job)
drivers/gpu/drm/panthor/panthor_sched.c
3023
struct panthor_group *group = job->group;
drivers/gpu/drm/panthor/panthor_sched.c
3024
struct panthor_queue *queue = group->queues[job->queue_idx];
drivers/gpu/drm/panthor/panthor_sched.c
3027
struct panthor_job_profiling_data *data = &slots[job->profiling.slot];
drivers/gpu/drm/panthor/panthor_sched.c
3030
if (job->profiling.mask & PANTHOR_DEVICE_PROFILING_CYCLES)
drivers/gpu/drm/panthor/panthor_sched.c
3032
if (job->profiling.mask & PANTHOR_DEVICE_PROFILING_TIMESTAMP)
drivers/gpu/drm/panthor/panthor_sched.c
3060
struct panthor_job *job, *job_tmp;
drivers/gpu/drm/panthor/panthor_sched.c
3066
list_for_each_entry_safe(job, job_tmp, &queue->fence_ctx.in_flight_jobs, node) {
drivers/gpu/drm/panthor/panthor_sched.c
3068
struct panthor_group *group = job->group;
drivers/gpu/drm/panthor/panthor_sched.c
3071
(job->queue_idx * sizeof(*syncobj));
drivers/gpu/drm/panthor/panthor_sched.c
3074
if (syncobj->seqno < job->done_fence->seqno)
drivers/gpu/drm/panthor/panthor_sched.c
3077
list_move_tail(&job->node, &done_jobs);
drivers/gpu/drm/panthor/panthor_sched.c
3078
dma_fence_signal_locked(job->done_fence);
drivers/gpu/drm/panthor/panthor_sched.c
3100
list_for_each_entry_safe(job, job_tmp, &done_jobs, node) {
drivers/gpu/drm/panthor/panthor_sched.c
3101
if (job->profiling.mask)
drivers/gpu/drm/panthor/panthor_sched.c
3102
update_fdinfo_stats(job);
drivers/gpu/drm/panthor/panthor_sched.c
3103
list_del_init(&job->node);
drivers/gpu/drm/panthor/panthor_sched.c
3104
panthor_job_put(&job->base);
drivers/gpu/drm/panthor/panthor_sched.c
3149
struct panthor_job *job,
drivers/gpu/drm/panthor/panthor_sched.c
3153
u64 start = job->ringbuf.start & (ringbuf_size - 1);
drivers/gpu/drm/panthor/panthor_sched.c
3184
get_job_cs_params(struct panthor_job *job, struct panthor_job_cs_params *params)
drivers/gpu/drm/panthor/panthor_sched.c
3186
struct panthor_group *group = job->group;
drivers/gpu/drm/panthor/panthor_sched.c
3187
struct panthor_queue *queue = group->queues[job->queue_idx];
drivers/gpu/drm/panthor/panthor_sched.c
3198
job->queue_idx * sizeof(struct panthor_syncobj_64b);
drivers/gpu/drm/panthor/panthor_sched.c
3200
(job->profiling.slot * sizeof(struct panthor_job_profiling_data));
drivers/gpu/drm/panthor/panthor_sched.c
3203
params->cs_start = job->call_info.start;
drivers/gpu/drm/panthor/panthor_sched.c
3204
params->cs_size = job->call_info.size;
drivers/gpu/drm/panthor/panthor_sched.c
3205
params->last_flush = job->call_info.latest_flush;
drivers/gpu/drm/panthor/panthor_sched.c
3207
params->profile_mask = job->profiling.mask;
drivers/gpu/drm/panthor/panthor_sched.c
3314
struct panthor_job *job = container_of(sched_job, struct panthor_job, base);
drivers/gpu/drm/panthor/panthor_sched.c
3315
struct panthor_group *group = job->group;
drivers/gpu/drm/panthor/panthor_sched.c
3316
struct panthor_queue *queue = group->queues[job->queue_idx];
drivers/gpu/drm/panthor/panthor_sched.c
3328
if (!job->call_info.size) {
drivers/gpu/drm/panthor/panthor_sched.c
3329
job->done_fence = dma_fence_get(queue->fence_ctx.last_fence);
drivers/gpu/drm/panthor/panthor_sched.c
3330
return dma_fence_get(job->done_fence);
drivers/gpu/drm/panthor/panthor_sched.c
3343
dma_fence_init(job->done_fence,
drivers/gpu/drm/panthor/panthor_sched.c
3349
job->profiling.slot = queue->profiling.seqno++;
drivers/gpu/drm/panthor/panthor_sched.c
3353
job->ringbuf.start = queue->iface.input->insert;
drivers/gpu/drm/panthor/panthor_sched.c
3355
get_job_cs_params(job, &cs_params);
drivers/gpu/drm/panthor/panthor_sched.c
3357
copy_instrs_to_ringbuf(queue, job, &instrs);
drivers/gpu/drm/panthor/panthor_sched.c
3359
job->ringbuf.end = job->ringbuf.start + (instrs.count * sizeof(u64));
drivers/gpu/drm/panthor/panthor_sched.c
3361
panthor_job_get(&job->base);
drivers/gpu/drm/panthor/panthor_sched.c
3363
list_add_tail(&job->node, &queue->fence_ctx.in_flight_jobs);
drivers/gpu/drm/panthor/panthor_sched.c
3371
queue->iface.input->insert = job->ringbuf.end;
drivers/gpu/drm/panthor/panthor_sched.c
3374
group_schedule_locked(group, BIT(job->queue_idx));
drivers/gpu/drm/panthor/panthor_sched.c
3376
u32 queue_mask = BIT(job->queue_idx);
drivers/gpu/drm/panthor/panthor_sched.c
3390
!(group->blocked_queues & BIT(job->queue_idx))) {
drivers/gpu/drm/panthor/panthor_sched.c
3400
queue->fence_ctx.last_fence = dma_fence_get(job->done_fence);
drivers/gpu/drm/panthor/panthor_sched.c
3402
done_fence = dma_fence_get(job->done_fence);
drivers/gpu/drm/panthor/panthor_sched.c
3415
struct panthor_job *job = container_of(sched_job, struct panthor_job, base);
drivers/gpu/drm/panthor/panthor_sched.c
3416
struct panthor_group *group = job->group;
drivers/gpu/drm/panthor/panthor_sched.c
3419
struct panthor_queue *queue = group->queues[job->queue_idx];
drivers/gpu/drm/panthor/panthor_sched.c
3422
group->task_info.pid, group->task_info.comm, job->done_fence->seqno);
drivers/gpu/drm/panthor/panthor_sched.c
3426
queue_stop(queue, job);
drivers/gpu/drm/panthor/panthor_sched.c
3926
struct panthor_job *job = container_of(ref, struct panthor_job, refcount);
drivers/gpu/drm/panthor/panthor_sched.c
3928
drm_WARN_ON(&job->group->ptdev->base, !list_empty(&job->node));
drivers/gpu/drm/panthor/panthor_sched.c
3930
if (job->base.s_fence)
drivers/gpu/drm/panthor/panthor_sched.c
3931
drm_sched_job_cleanup(&job->base);
drivers/gpu/drm/panthor/panthor_sched.c
3933
if (dma_fence_was_initialized(job->done_fence))
drivers/gpu/drm/panthor/panthor_sched.c
3934
dma_fence_put(job->done_fence);
drivers/gpu/drm/panthor/panthor_sched.c
3936
dma_fence_free(job->done_fence);
drivers/gpu/drm/panthor/panthor_sched.c
3938
group_put(job->group);
drivers/gpu/drm/panthor/panthor_sched.c
3940
kfree(job);
drivers/gpu/drm/panthor/panthor_sched.c
3946
struct panthor_job *job = container_of(sched_job, struct panthor_job, base);
drivers/gpu/drm/panthor/panthor_sched.c
3948
kref_get(&job->refcount);
drivers/gpu/drm/panthor/panthor_sched.c
3956
struct panthor_job *job = container_of(sched_job, struct panthor_job, base);
drivers/gpu/drm/panthor/panthor_sched.c
3959
kref_put(&job->refcount, job_release);
drivers/gpu/drm/panthor/panthor_sched.c
3964
struct panthor_job *job = container_of(sched_job, struct panthor_job, base);
drivers/gpu/drm/panthor/panthor_sched.c
3966
return job->group->vm;
drivers/gpu/drm/panthor/panthor_sched.c
3976
struct panthor_job *job;
drivers/gpu/drm/panthor/panthor_sched.c
3997
job = kzalloc_obj(*job);
drivers/gpu/drm/panthor/panthor_sched.c
3998
if (!job)
drivers/gpu/drm/panthor/panthor_sched.c
4001
kref_init(&job->refcount);
drivers/gpu/drm/panthor/panthor_sched.c
4002
job->queue_idx = qsubmit->queue_index;
drivers/gpu/drm/panthor/panthor_sched.c
4003
job->call_info.size = qsubmit->stream_size;
drivers/gpu/drm/panthor/panthor_sched.c
4004
job->call_info.start = qsubmit->stream_addr;
drivers/gpu/drm/panthor/panthor_sched.c
4005
job->call_info.latest_flush = qsubmit->latest_flush;
drivers/gpu/drm/panthor/panthor_sched.c
4006
INIT_LIST_HEAD(&job->node);
drivers/gpu/drm/panthor/panthor_sched.c
4008
job->group = group_from_handle(gpool, group_handle);
drivers/gpu/drm/panthor/panthor_sched.c
4009
if (!job->group) {
drivers/gpu/drm/panthor/panthor_sched.c
4014
if (!group_can_run(job->group)) {
drivers/gpu/drm/panthor/panthor_sched.c
4019
if (job->queue_idx >= job->group->queue_count ||
drivers/gpu/drm/panthor/panthor_sched.c
4020
!job->group->queues[job->queue_idx]) {
drivers/gpu/drm/panthor/panthor_sched.c
4028
if (job->call_info.size) {
drivers/gpu/drm/panthor/panthor_sched.c
4029
job->done_fence = kzalloc_obj(*job->done_fence);
drivers/gpu/drm/panthor/panthor_sched.c
4030
if (!job->done_fence) {
drivers/gpu/drm/panthor/panthor_sched.c
4036
job->profiling.mask = pfile->ptdev->profile_mask;
drivers/gpu/drm/panthor/panthor_sched.c
4037
credits = calc_job_credits(job->profiling.mask);
drivers/gpu/drm/panthor/panthor_sched.c
4043
ret = drm_sched_job_init(&job->base,
drivers/gpu/drm/panthor/panthor_sched.c
4044
&job->group->queues[job->queue_idx]->entity,
drivers/gpu/drm/panthor/panthor_sched.c
4045
credits, job->group, drm_client_id);
drivers/gpu/drm/panthor/panthor_sched.c
4049
return &job->base;
drivers/gpu/drm/panthor/panthor_sched.c
4052
panthor_job_put(&job->base);
drivers/gpu/drm/panthor/panthor_sched.c
4058
struct panthor_job *job = container_of(sched_job, struct panthor_job, base);
drivers/gpu/drm/panthor/panthor_sched.c
4060
panthor_vm_update_resvs(job->group->vm, exec, &sched_job->s_fence->finished,
drivers/gpu/drm/panthor/panthor_sched.h
35
struct drm_sched_job *panthor_job_get(struct drm_sched_job *job);
drivers/gpu/drm/panthor/panthor_sched.h
37
void panthor_job_put(struct drm_sched_job *job);
drivers/gpu/drm/panthor/panthor_sched.h
38
void panthor_job_update_resvs(struct drm_exec *exec, struct drm_sched_job *job);
drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c
51
struct drm_writeback_job *job)
drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c
57
if (!job->fb)
drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c
65
ret = rcar_du_vsp_map_fb(rcrtc->vsp, job->fb, rjob->sg_tables);
drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c
71
job->priv = rjob;
drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c
76
struct drm_writeback_job *job)
drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c
79
struct rcar_du_wb_job *rjob = job->priv;
drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c
81
if (!job->fb)
drivers/gpu/drm/renesas/rcar-du/rcar_du_writeback.c
84
rcar_du_vsp_unmap_fb(rcrtc->vsp, job->fb, rjob->sg_tables);
drivers/gpu/drm/scheduler/sched_entity.c
219
struct drm_sched_job *job = container_of(wrk, typeof(*job), work);
drivers/gpu/drm/scheduler/sched_entity.c
224
xa_for_each(&job->dependencies, index, f) {
drivers/gpu/drm/scheduler/sched_entity.c
242
xa_erase(&job->dependencies, index);
drivers/gpu/drm/scheduler/sched_entity.c
243
if (f && !dma_fence_add_callback(f, &job->finish_cb,
drivers/gpu/drm/scheduler/sched_entity.c
250
drm_sched_fence_scheduled(job->s_fence, NULL);
drivers/gpu/drm/scheduler/sched_entity.c
251
drm_sched_fence_finished(job->s_fence, -ESRCH);
drivers/gpu/drm/scheduler/sched_entity.c
252
WARN_ON(job->s_fence->parent);
drivers/gpu/drm/scheduler/sched_entity.c
253
job->sched->ops->free_job(job);
drivers/gpu/drm/scheduler/sched_entity.c
260
struct drm_sched_job *job = container_of(cb, struct drm_sched_job,
drivers/gpu/drm/scheduler/sched_entity.c
265
INIT_WORK(&job->work, drm_sched_entity_kill_jobs_work);
drivers/gpu/drm/scheduler/sched_entity.c
266
schedule_work(&job->work);
drivers/gpu/drm/scheduler/sched_entity.c
280
struct drm_sched_job *job;
drivers/gpu/drm/scheduler/sched_entity.c
297
while ((job = drm_sched_entity_queue_pop(entity))) {
drivers/gpu/drm/scheduler/sched_entity.c
298
struct drm_sched_fence *s_fence = job->s_fence;
drivers/gpu/drm/scheduler/sched_entity.c
302
dma_fence_add_callback(prev, &job->finish_cb,
drivers/gpu/drm/scheduler/sched_entity.c
309
drm_sched_entity_kill_jobs_cb(NULL, &job->finish_cb);
drivers/gpu/drm/scheduler/sched_entity.c
494
drm_sched_job_dependency(struct drm_sched_job *job,
drivers/gpu/drm/scheduler/sched_entity.c
503
f = xa_load(&job->dependencies, job->last_dependency);
drivers/gpu/drm/scheduler/sched_entity.c
505
job->last_dependency++;
drivers/gpu/drm/scheduler/sched_entity.c
509
if (job->sched->ops->prepare_job)
drivers/gpu/drm/scheduler/sched_entity.c
510
return job->sched->ops->prepare_job(job, entity);
drivers/gpu/drm/scheduler/sched_entity.c
75
ktime_t drm_sched_entity_stats_job_add_gpu_time(struct drm_sched_job *job)
drivers/gpu/drm/scheduler/sched_entity.c
77
struct drm_sched_entity_stats *stats = job->entity_stats;
drivers/gpu/drm/scheduler/sched_entity.c
78
struct drm_sched_fence *s_fence = job->s_fence;
drivers/gpu/drm/scheduler/sched_internal.h
143
ktime_t drm_sched_entity_stats_job_add_gpu_time(struct drm_sched_job *job);
drivers/gpu/drm/scheduler/sched_main.c
1116
struct drm_sched_job *job, *tmp;
drivers/gpu/drm/scheduler/sched_main.c
1119
list_for_each_entry_safe_reverse(job, tmp, &sched->pending_list, list) {
drivers/gpu/drm/scheduler/sched_main.c
1120
sched->ops->cancel_job(job);
drivers/gpu/drm/scheduler/sched_main.c
1121
list_del(&job->list);
drivers/gpu/drm/scheduler/sched_main.c
1122
sched->ops->free_job(job);
drivers/gpu/drm/scheduler/sched_main.c
1265
bool drm_sched_job_is_signaled(struct drm_sched_job *job)
drivers/gpu/drm/scheduler/sched_main.c
1267
struct drm_sched_fence *s_fence = job->s_fence;
drivers/gpu/drm/scheduler/sched_main.c
1269
WARN_ON(!drm_sched_is_stopped(job->sched));
drivers/gpu/drm/scheduler/sched_main.c
310
struct drm_sched_job *job)
drivers/gpu/drm/scheduler/sched_main.c
313
list_add(&job->list, &sched->pending_list);
drivers/gpu/drm/scheduler/sched_main.c
326
struct drm_sched_job *job;
drivers/gpu/drm/scheduler/sched_main.c
333
job = list_first_entry_or_null(&sched->pending_list,
drivers/gpu/drm/scheduler/sched_main.c
336
if (job) {
drivers/gpu/drm/scheduler/sched_main.c
343
list_del_init(&job->list);
drivers/gpu/drm/scheduler/sched_main.c
346
status = job->sched->ops->timedout_job(job);
drivers/gpu/drm/scheduler/sched_main.c
353
job->sched->ops->free_job(job);
drivers/gpu/drm/scheduler/sched_main.c
358
drm_sched_job_reinsert_on_false_timeout(sched, job);
drivers/gpu/drm/scheduler/sched_main.c
586
int drm_sched_job_init(struct drm_sched_job *job,
drivers/gpu/drm/scheduler/sched_main.c
596
dev_err(job->sched->dev, "%s: entity has no rq!\n", __func__);
drivers/gpu/drm/scheduler/sched_main.c
611
memset(job, 0, sizeof(*job));
drivers/gpu/drm/scheduler/sched_main.c
613
job->entity = entity;
drivers/gpu/drm/scheduler/sched_main.c
614
job->credits = credits;
drivers/gpu/drm/scheduler/sched_main.c
615
job->s_fence = drm_sched_fence_alloc(entity, owner, drm_client_id);
drivers/gpu/drm/scheduler/sched_main.c
616
if (!job->s_fence)
drivers/gpu/drm/scheduler/sched_main.c
619
INIT_LIST_HEAD(&job->list);
drivers/gpu/drm/scheduler/sched_main.c
621
xa_init_flags(&job->dependencies, XA_FLAGS_ALLOC);
drivers/gpu/drm/scheduler/sched_main.c
644
void drm_sched_job_arm(struct drm_sched_job *job)
drivers/gpu/drm/scheduler/sched_main.c
647
struct drm_sched_entity *entity = job->entity;
drivers/gpu/drm/scheduler/sched_main.c
653
job->sched = sched;
drivers/gpu/drm/scheduler/sched_main.c
654
job->s_priority = entity->priority;
drivers/gpu/drm/scheduler/sched_main.c
655
job->entity_stats = drm_sched_entity_stats_get(entity->stats);
drivers/gpu/drm/scheduler/sched_main.c
657
drm_sched_fence_init(job->s_fence, job->entity);
drivers/gpu/drm/scheduler/sched_main.c
671
int drm_sched_job_add_dependency(struct drm_sched_job *job,
drivers/gpu/drm/scheduler/sched_main.c
686
xa_for_each(&job->dependencies, index, entry) {
drivers/gpu/drm/scheduler/sched_main.c
692
xa_store(&job->dependencies, index, fence, GFP_KERNEL);
drivers/gpu/drm/scheduler/sched_main.c
699
ret = xa_alloc(&job->dependencies, &id, fence, xa_limit_32b, GFP_KERNEL);
drivers/gpu/drm/scheduler/sched_main.c
719
int drm_sched_job_add_syncobj_dependency(struct drm_sched_job *job,
drivers/gpu/drm/scheduler/sched_main.c
731
return drm_sched_job_add_dependency(job, fence);
drivers/gpu/drm/scheduler/sched_main.c
747
int drm_sched_job_add_resv_dependencies(struct drm_sched_job *job,
drivers/gpu/drm/scheduler/sched_main.c
763
ret = drm_sched_job_add_dependency(job, dma_fence_get(fence));
drivers/gpu/drm/scheduler/sched_main.c
786
int drm_sched_job_add_implicit_dependencies(struct drm_sched_job *job,
drivers/gpu/drm/scheduler/sched_main.c
790
return drm_sched_job_add_resv_dependencies(job, obj->resv,
drivers/gpu/drm/scheduler/sched_main.c
803
bool drm_sched_job_has_dependency(struct drm_sched_job *job,
drivers/gpu/drm/scheduler/sched_main.c
809
xa_for_each(&job->dependencies, index, f) {
drivers/gpu/drm/scheduler/sched_main.c
834
void drm_sched_job_cleanup(struct drm_sched_job *job)
drivers/gpu/drm/scheduler/sched_main.c
839
if (kref_read(&job->s_fence->finished.refcount)) {
drivers/gpu/drm/scheduler/sched_main.c
844
dma_fence_put(&job->s_fence->finished);
drivers/gpu/drm/scheduler/sched_main.c
845
drm_sched_entity_stats_put(job->entity_stats);
drivers/gpu/drm/scheduler/sched_main.c
850
drm_sched_fence_free(job->s_fence);
drivers/gpu/drm/scheduler/sched_main.c
853
job->s_fence = NULL;
drivers/gpu/drm/scheduler/sched_main.c
855
xa_for_each(&job->dependencies, index, fence) {
drivers/gpu/drm/scheduler/sched_main.c
858
xa_destroy(&job->dependencies);
drivers/gpu/drm/scheduler/sched_main.c
888
struct drm_sched_job *job, *next;
drivers/gpu/drm/scheduler/sched_main.c
892
job = list_first_entry_or_null(&sched->pending_list,
drivers/gpu/drm/scheduler/sched_main.c
894
if (job && dma_fence_is_signaled(&job->s_fence->finished)) {
drivers/gpu/drm/scheduler/sched_main.c
896
list_del_init(&job->list);
drivers/gpu/drm/scheduler/sched_main.c
908
dma_fence_timestamp(&job->s_fence->finished);
drivers/gpu/drm/scheduler/sched_main.c
914
job = NULL;
drivers/gpu/drm/scheduler/sched_main.c
919
return job;
drivers/gpu/drm/scheduler/sched_main.c
967
struct drm_sched_job *job;
drivers/gpu/drm/scheduler/sched_main.c
969
while ((job = drm_sched_get_finished_job(sched))) {
drivers/gpu/drm/scheduler/sched_main.c
970
ktime_t duration = drm_sched_entity_stats_job_add_gpu_time(job);
drivers/gpu/drm/scheduler/sched_main.c
976
sched->ops->free_job(job);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
111
struct drm_mock_sched_job *job;
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
114
job = kunit_kzalloc(test, sizeof(*job), GFP_KERNEL);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
115
KUNIT_ASSERT_NOT_NULL(test, job);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
117
ret = drm_sched_job_init(&job->base,
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
124
job->test = test;
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
126
init_completion(&job->done);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
127
INIT_LIST_HEAD(&job->link);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
128
hrtimer_setup(&job->timer, drm_mock_sched_job_signal_timer,
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
131
return job;
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
142
struct drm_mock_sched_job *job =
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
143
container_of(fence, typeof(*job), hw_fence);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
145
return (const char *)job->base.sched->name;
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
150
struct drm_mock_sched_job *job =
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
151
container_of(fence, typeof(*job), hw_fence);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
153
hrtimer_cancel(&job->timer);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
168
struct drm_mock_sched_job *job = drm_sched_job_to_mock_job(sched_job);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
170
dma_fence_init(&job->hw_fence,
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
176
dma_fence_get(&job->hw_fence); /* Reference for the job_list */
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
179
if (job->duration_us) {
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
193
job->finish_at = ktime_add_us(prev_finish_at, job->duration_us);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
195
list_add_tail(&job->link, &sched->job_list);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
196
if (job->finish_at)
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
197
hrtimer_start(&job->timer, job->finish_at, HRTIMER_MODE_ABS);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
200
return &job->hw_fence;
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
218
struct drm_mock_sched_job *job = drm_sched_job_to_mock_job(sched_job);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
221
if (job->flags & DRM_MOCK_SCHED_JOB_DONT_RESET) {
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
222
job->flags |= DRM_MOCK_SCHED_JOB_RESET_SKIPPED;
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
227
if (!dma_fence_is_signaled_locked(&job->hw_fence)) {
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
228
list_del(&job->link);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
229
job->flags |= DRM_MOCK_SCHED_JOB_TIMEDOUT;
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
230
dma_fence_set_error(&job->hw_fence, -ETIMEDOUT);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
231
dma_fence_signal_locked(&job->hw_fence);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
235
dma_fence_put(&job->hw_fence);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
244
struct drm_mock_sched_job *job = drm_sched_job_to_mock_job(sched_job);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
246
dma_fence_put(&job->hw_fence);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
255
struct drm_mock_sched_job *job = drm_sched_job_to_mock_job(sched_job);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
258
hrtimer_cancel(&job->timer);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
261
if (!dma_fence_is_signaled_locked(&job->hw_fence)) {
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
262
list_del(&job->link);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
263
dma_fence_set_error(&job->hw_fence, -ECANCELED);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
264
dma_fence_signal_locked(&job->hw_fence);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
345
struct drm_mock_sched_job *job, *next;
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
355
list_for_each_entry_safe(job, next, &sched->job_list, link) {
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
356
if (sched->hw_timeline.cur_seqno < job->hw_fence.seqno)
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
359
drm_mock_sched_job_complete(job);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
58
static void drm_mock_sched_job_complete(struct drm_mock_sched_job *job)
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
61
drm_sched_to_mock_sched(job->base.sched);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
65
job->flags |= DRM_MOCK_SCHED_JOB_DONE;
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
66
list_del(&job->link);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
67
dma_fence_signal_locked(&job->hw_fence);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
68
complete(&job->done);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
74
struct drm_mock_sched_job *job =
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
75
container_of(hrtimer, typeof(*job), timer);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
77
drm_sched_to_mock_sched(job->base.sched);
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
84
list_for_each_entry_safe(job, next, &sched->job_list, link) {
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
85
if (!job->duration_us)
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
88
if (ktime_before(now, job->finish_at))
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
91
sched->hw_timeline.cur_seqno = job->hw_fence.seqno;
drivers/gpu/drm/scheduler/tests/mock_scheduler.c
92
drm_mock_sched_job_complete(job);
drivers/gpu/drm/scheduler/tests/sched_tests.h
152
static inline void drm_mock_sched_job_submit(struct drm_mock_sched_job *job)
drivers/gpu/drm/scheduler/tests/sched_tests.h
154
drm_sched_job_arm(&job->base);
drivers/gpu/drm/scheduler/tests/sched_tests.h
155
drm_sched_entity_push_job(&job->base);
drivers/gpu/drm/scheduler/tests/sched_tests.h
170
drm_mock_sched_job_set_duration_us(struct drm_mock_sched_job *job,
drivers/gpu/drm/scheduler/tests/sched_tests.h
173
job->duration_us = duration_us;
drivers/gpu/drm/scheduler/tests/sched_tests.h
184
drm_mock_sched_job_is_finished(struct drm_mock_sched_job *job)
drivers/gpu/drm/scheduler/tests/sched_tests.h
186
return job->flags & DRM_MOCK_SCHED_JOB_DONE;
drivers/gpu/drm/scheduler/tests/sched_tests.h
198
drm_mock_sched_job_wait_finished(struct drm_mock_sched_job *job, long timeout)
drivers/gpu/drm/scheduler/tests/sched_tests.h
200
if (job->flags & DRM_MOCK_SCHED_JOB_DONE)
drivers/gpu/drm/scheduler/tests/sched_tests.h
203
return wait_for_completion_timeout(&job->done, timeout) != 0;
drivers/gpu/drm/scheduler/tests/sched_tests.h
215
drm_mock_sched_job_wait_scheduled(struct drm_mock_sched_job *job, long timeout)
drivers/gpu/drm/scheduler/tests/sched_tests.h
217
KUNIT_ASSERT_EQ(job->test, job->flags & DRM_MOCK_SCHED_JOB_DONE, 0);
drivers/gpu/drm/scheduler/tests/sched_tests.h
219
return dma_fence_wait_timeout(&job->base.s_fence->scheduled,
drivers/gpu/drm/scheduler/tests/tests_basic.c
122
struct drm_mock_sched_job *job, *prev = NULL;
drivers/gpu/drm/scheduler/tests/tests_basic.c
137
job = drm_mock_sched_job_new(test, entity[cur_ent++]);
drivers/gpu/drm/scheduler/tests/tests_basic.c
139
drm_mock_sched_job_set_duration_us(job, params->job_us);
drivers/gpu/drm/scheduler/tests/tests_basic.c
141
drm_sched_job_add_dependency(&job->base,
drivers/gpu/drm/scheduler/tests/tests_basic.c
143
drm_mock_sched_job_submit(job);
drivers/gpu/drm/scheduler/tests/tests_basic.c
144
prev = job;
drivers/gpu/drm/scheduler/tests/tests_basic.c
147
done = drm_mock_sched_job_wait_finished(job, HZ);
drivers/gpu/drm/scheduler/tests/tests_basic.c
156
struct drm_mock_sched_job *job, *mid, *prev = NULL;
drivers/gpu/drm/scheduler/tests/tests_basic.c
175
job = drm_mock_sched_job_new(test, entity[cur_ent++]);
drivers/gpu/drm/scheduler/tests/tests_basic.c
177
drm_mock_sched_job_set_duration_us(job, 1000);
drivers/gpu/drm/scheduler/tests/tests_basic.c
179
drm_sched_job_add_dependency(&job->base,
drivers/gpu/drm/scheduler/tests/tests_basic.c
181
drm_mock_sched_job_submit(job);
drivers/gpu/drm/scheduler/tests/tests_basic.c
183
mid = job;
drivers/gpu/drm/scheduler/tests/tests_basic.c
184
prev = job;
drivers/gpu/drm/scheduler/tests/tests_basic.c
213
struct drm_mock_sched_job *job;
drivers/gpu/drm/scheduler/tests/tests_basic.c
225
job = drm_mock_sched_job_new(test, entity);
drivers/gpu/drm/scheduler/tests/tests_basic.c
227
drm_mock_sched_job_submit(job);
drivers/gpu/drm/scheduler/tests/tests_basic.c
229
done = drm_mock_sched_job_wait_scheduled(job, HZ);
drivers/gpu/drm/scheduler/tests/tests_basic.c
235
KUNIT_ASSERT_EQ(test, job->hw_fence.error, -ECANCELED);
drivers/gpu/drm/scheduler/tests/tests_basic.c
254
struct drm_mock_sched_job *job;
drivers/gpu/drm/scheduler/tests/tests_basic.c
266
job = drm_mock_sched_job_new(test, entity);
drivers/gpu/drm/scheduler/tests/tests_basic.c
268
drm_mock_sched_job_submit(job);
drivers/gpu/drm/scheduler/tests/tests_basic.c
270
done = drm_mock_sched_job_wait_scheduled(job, HZ);
drivers/gpu/drm/scheduler/tests/tests_basic.c
273
done = drm_mock_sched_job_wait_finished(job, MOCK_TIMEOUT / 2);
drivers/gpu/drm/scheduler/tests/tests_basic.c
277
job->flags & DRM_MOCK_SCHED_JOB_TIMEDOUT,
drivers/gpu/drm/scheduler/tests/tests_basic.c
280
done = drm_mock_sched_job_wait_finished(job, MOCK_TIMEOUT);
drivers/gpu/drm/scheduler/tests/tests_basic.c
284
job->flags & DRM_MOCK_SCHED_JOB_TIMEDOUT,
drivers/gpu/drm/scheduler/tests/tests_basic.c
294
struct drm_mock_sched_job *job;
drivers/gpu/drm/scheduler/tests/tests_basic.c
307
job = drm_mock_sched_job_new(test, entity);
drivers/gpu/drm/scheduler/tests/tests_basic.c
309
job->flags = DRM_MOCK_SCHED_JOB_DONT_RESET;
drivers/gpu/drm/scheduler/tests/tests_basic.c
311
drm_mock_sched_job_submit(job);
drivers/gpu/drm/scheduler/tests/tests_basic.c
313
done = drm_mock_sched_job_wait_scheduled(job, HZ);
drivers/gpu/drm/scheduler/tests/tests_basic.c
316
done = drm_mock_sched_job_wait_finished(job, 2 * MOCK_TIMEOUT);
drivers/gpu/drm/scheduler/tests/tests_basic.c
320
job->flags & DRM_MOCK_SCHED_JOB_RESET_SKIPPED,
drivers/gpu/drm/scheduler/tests/tests_basic.c
326
done = drm_mock_sched_job_wait_finished(job, HZ);
drivers/gpu/drm/scheduler/tests/tests_basic.c
349
struct drm_mock_sched_job *job;
drivers/gpu/drm/scheduler/tests/tests_basic.c
367
job = drm_mock_sched_job_new(test, entity[cur_ent++]);
drivers/gpu/drm/scheduler/tests/tests_basic.c
369
drm_mock_sched_job_set_duration_us(job, 1000);
drivers/gpu/drm/scheduler/tests/tests_basic.c
370
drm_mock_sched_job_submit(job);
drivers/gpu/drm/scheduler/tests/tests_basic.c
373
done = drm_mock_sched_job_wait_finished(job, HZ);
drivers/gpu/drm/scheduler/tests/tests_basic.c
384
struct drm_mock_sched_job *job;
drivers/gpu/drm/scheduler/tests/tests_basic.c
403
job = drm_mock_sched_job_new(test, entity[cur_ent++]);
drivers/gpu/drm/scheduler/tests/tests_basic.c
405
drm_mock_sched_job_set_duration_us(job, 1000);
drivers/gpu/drm/scheduler/tests/tests_basic.c
406
drm_mock_sched_job_submit(job);
drivers/gpu/drm/scheduler/tests/tests_basic.c
416
} while (!drm_mock_sched_job_is_finished(job));
drivers/gpu/drm/scheduler/tests/tests_basic.c
42
struct drm_mock_sched_job *job;
drivers/gpu/drm/scheduler/tests/tests_basic.c
440
struct drm_mock_sched_job *job;
drivers/gpu/drm/scheduler/tests/tests_basic.c
465
job = drm_mock_sched_job_new(test, entity[cur_ent++]);
drivers/gpu/drm/scheduler/tests/tests_basic.c
467
drm_mock_sched_job_set_duration_us(job, 1000);
drivers/gpu/drm/scheduler/tests/tests_basic.c
468
drm_mock_sched_job_submit(job);
drivers/gpu/drm/scheduler/tests/tests_basic.c
482
} while (!drm_mock_sched_job_is_finished(job));
drivers/gpu/drm/scheduler/tests/tests_basic.c
505
struct drm_mock_sched_job *job[2];
drivers/gpu/drm/scheduler/tests/tests_basic.c
520
job[0] = drm_mock_sched_job_new(test, entity);
drivers/gpu/drm/scheduler/tests/tests_basic.c
521
job[1] = drm_mock_sched_job_new(test, entity);
drivers/gpu/drm/scheduler/tests/tests_basic.c
523
drm_mock_sched_job_submit(job[0]);
drivers/gpu/drm/scheduler/tests/tests_basic.c
524
drm_mock_sched_job_submit(job[1]);
drivers/gpu/drm/scheduler/tests/tests_basic.c
526
done = drm_mock_sched_job_wait_scheduled(job[0], HZ);
drivers/gpu/drm/scheduler/tests/tests_basic.c
529
done = drm_mock_sched_job_wait_scheduled(job[1], HZ);
drivers/gpu/drm/scheduler/tests/tests_basic.c
535
done = drm_mock_sched_job_wait_scheduled(job[1], HZ);
drivers/gpu/drm/scheduler/tests/tests_basic.c
54
job = drm_mock_sched_job_new(test, entity);
drivers/gpu/drm/scheduler/tests/tests_basic.c
541
done = drm_mock_sched_job_wait_finished(job[1], HZ);
drivers/gpu/drm/scheduler/tests/tests_basic.c
56
drm_mock_sched_job_submit(job);
drivers/gpu/drm/scheduler/tests/tests_basic.c
58
done = drm_mock_sched_job_wait_scheduled(job, HZ);
drivers/gpu/drm/scheduler/tests/tests_basic.c
61
done = drm_mock_sched_job_wait_finished(job, HZ / 2);
drivers/gpu/drm/scheduler/tests/tests_basic.c
67
done = drm_mock_sched_job_wait_finished(job, HZ);
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
104
struct drm_mock_sched_job *job, *first, *prev = NULL;
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
131
job = drm_mock_sched_job_new(test, entity[i & 1]);
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
133
first = job; /* Extra first job blocks the queue */
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
135
drm_mock_sched_job_set_duration_us(job, job_us);
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
137
drm_sched_job_add_dependency(&job->base,
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
139
drm_mock_sched_job_submit(job);
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
140
prev = job;
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
151
done = drm_mock_sched_job_wait_finished(job,
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
465
struct drm_mock_sched_job *job = NULL;
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
486
job = drm_mock_sched_job_new(client->test,
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
488
drm_mock_sched_job_set_duration_us(job,
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
490
drm_mock_sched_job_submit(job);
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
494
drm_mock_sched_job_wait_finished(job, sync_wait);
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
515
client->done = drm_mock_sched_job_wait_finished(job, sync_wait);
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
54
struct drm_mock_sched_job *job, *first;
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
74
job = drm_mock_sched_job_new(test, entity);
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
76
first = job; /* Extra first job blocks the queue */
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
78
drm_mock_sched_job_set_duration_us(job, job_us);
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
79
drm_mock_sched_job_submit(job);
drivers/gpu/drm/scheduler/tests/tests_scheduler.c
90
done = drm_mock_sched_job_wait_finished(job,
drivers/gpu/drm/tegra/drm.c
182
struct host1x_job *job;
drivers/gpu/drm/tegra/drm.c
198
job = host1x_job_alloc(context->channel, args->num_cmdbufs,
drivers/gpu/drm/tegra/drm.c
200
if (!job)
drivers/gpu/drm/tegra/drm.c
203
job->num_relocs = args->num_relocs;
drivers/gpu/drm/tegra/drm.c
204
job->client = client;
drivers/gpu/drm/tegra/drm.c
205
job->class = client->class;
drivers/gpu/drm/tegra/drm.c
206
job->serialize = true;
drivers/gpu/drm/tegra/drm.c
207
job->syncpt_recovery = true;
drivers/gpu/drm/tegra/drm.c
264
host1x_job_add_gather(job, bo, cmdbuf.words, cmdbuf.offset);
drivers/gpu/drm/tegra/drm.c
274
err = host1x_reloc_copy_from_user(&job->relocs[num_relocs],
drivers/gpu/drm/tegra/drm.c
280
reloc = &job->relocs[num_relocs];
drivers/gpu/drm/tegra/drm.c
316
job->is_addr_reg = context->client->ops->is_addr_reg;
drivers/gpu/drm/tegra/drm.c
317
job->is_valid_class = context->client->ops->is_valid_class;
drivers/gpu/drm/tegra/drm.c
318
job->syncpt_incrs = syncpt.incrs;
drivers/gpu/drm/tegra/drm.c
319
job->syncpt = sp;
drivers/gpu/drm/tegra/drm.c
320
job->timeout = 10000;
drivers/gpu/drm/tegra/drm.c
323
job->timeout = args->timeout;
drivers/gpu/drm/tegra/drm.c
325
err = host1x_job_pin(job, context->client->base.dev);
drivers/gpu/drm/tegra/drm.c
329
err = host1x_job_submit(job);
drivers/gpu/drm/tegra/drm.c
331
host1x_job_unpin(job);
drivers/gpu/drm/tegra/drm.c
335
args->fence = job->syncpt_end;
drivers/gpu/drm/tegra/drm.c
344
host1x_job_put(job);
drivers/gpu/drm/tegra/submit.c
326
static int submit_get_syncpt(struct tegra_drm_context *context, struct host1x_job *job,
drivers/gpu/drm/tegra/submit.c
343
job->syncpt = host1x_syncpt_get(sp);
drivers/gpu/drm/tegra/submit.c
344
job->syncpt_incrs = args->syncpt.increments;
drivers/gpu/drm/tegra/submit.c
349
static int submit_job_add_gather(struct host1x_job *job, struct tegra_drm_context *context,
drivers/gpu/drm/tegra/submit.c
384
host1x_job_add_gather(job, &bo->base, cmd->words, *offset * 4);
drivers/gpu/drm/tegra/submit.c
398
struct host1x_job *job;
drivers/gpu/drm/tegra/submit.c
411
job = host1x_job_alloc(context->channel, args->num_cmds, 0, true);
drivers/gpu/drm/tegra/submit.c
412
if (!job) {
drivers/gpu/drm/tegra/submit.c
414
job = ERR_PTR(-ENOMEM);
drivers/gpu/drm/tegra/submit.c
418
err = submit_get_syncpt(context, job, syncpoints, args);
drivers/gpu/drm/tegra/submit.c
422
job->client = &context->client->base;
drivers/gpu/drm/tegra/submit.c
423
job->class = context->client->base.class;
drivers/gpu/drm/tegra/submit.c
424
job->serialize = true;
drivers/gpu/drm/tegra/submit.c
436
err = submit_job_add_gather(job, context, &cmd->gather_uptr, bo,
drivers/gpu/drm/tegra/submit.c
447
host1x_job_add_wait(job, cmd->wait_syncpt.id, cmd->wait_syncpt.value,
drivers/gpu/drm/tegra/submit.c
462
host1x_job_add_wait(job, cmd->wait_syncpt.id, cmd->wait_syncpt.value,
drivers/gpu/drm/tegra/submit.c
480
host1x_job_put(job);
drivers/gpu/drm/tegra/submit.c
481
job = ERR_PTR(err);
drivers/gpu/drm/tegra/submit.c
486
return job;
drivers/gpu/drm/tegra/submit.c
489
static void release_job(struct host1x_job *job)
drivers/gpu/drm/tegra/submit.c
491
struct tegra_drm_client *client = container_of(job->client, struct tegra_drm_client, base);
drivers/gpu/drm/tegra/submit.c
492
struct tegra_drm_submit_data *job_data = job->user_data;
drivers/gpu/drm/tegra/submit.c
495
if (job->memory_context)
drivers/gpu/drm/tegra/submit.c
496
host1x_memory_context_put(job->memory_context);
drivers/gpu/drm/tegra/submit.c
516
struct host1x_job *job;
drivers/gpu/drm/tegra/submit.c
575
job = submit_create_job(context, bo, args, job_data, &fpriv->syncpoints);
drivers/gpu/drm/tegra/submit.c
576
if (IS_ERR(job)) {
drivers/gpu/drm/tegra/submit.c
577
err = PTR_ERR(job);
drivers/gpu/drm/tegra/submit.c
582
err = host1x_job_pin(job, context->client->base.dev);
drivers/gpu/drm/tegra/submit.c
590
context->client, &job->engine_streamid_offset);
drivers/gpu/drm/tegra/submit.c
607
job->memory_context = context->memory_context;
drivers/gpu/drm/tegra/submit.c
608
host1x_memory_context_get(job->memory_context);
drivers/gpu/drm/tegra/submit.c
616
&job->engine_fallback_streamid))
drivers/gpu/drm/tegra/submit.c
617
job->engine_fallback_streamid = TEGRA_STREAM_ID_BYPASS;
drivers/gpu/drm/tegra/submit.c
627
job->user_data = job_data;
drivers/gpu/drm/tegra/submit.c
628
job->release = release_job;
drivers/gpu/drm/tegra/submit.c
629
job->timeout = 10000;
drivers/gpu/drm/tegra/submit.c
638
err = host1x_job_submit(job);
drivers/gpu/drm/tegra/submit.c
645
args->syncpt.value = job->syncpt_end;
drivers/gpu/drm/tegra/submit.c
648
struct dma_fence *fence = host1x_fence_create(job->syncpt, job->syncpt_end, true);
drivers/gpu/drm/tegra/submit.c
660
if (job->memory_context)
drivers/gpu/drm/tegra/submit.c
661
host1x_memory_context_put(job->memory_context);
drivers/gpu/drm/tegra/submit.c
663
host1x_job_unpin(job);
drivers/gpu/drm/tegra/submit.c
665
host1x_job_put(job);
drivers/gpu/drm/v3d/v3d_drv.h
402
struct v3d_csd_job *job;
drivers/gpu/drm/v3d/v3d_drv.h
582
void v3d_job_cleanup(struct v3d_job *job);
drivers/gpu/drm/v3d/v3d_drv.h
583
void v3d_job_put(struct v3d_job *job);
drivers/gpu/drm/v3d/v3d_drv.h
626
void v3d_job_update_stats(struct v3d_job *job);
drivers/gpu/drm/v3d/v3d_sched.c
129
v3d_switch_perfmon(struct v3d_dev *v3d, struct v3d_job *job)
drivers/gpu/drm/v3d/v3d_sched.c
134
perfmon = job->perfmon;
drivers/gpu/drm/v3d/v3d_sched.c
155
v3d_job_start_stats(struct v3d_job *job)
drivers/gpu/drm/v3d/v3d_sched.c
160
v3d_stats_start(job->client_stats, now);
drivers/gpu/drm/v3d/v3d_sched.c
161
v3d_stats_start(job->global_stats, now);
drivers/gpu/drm/v3d/v3d_sched.c
176
v3d_job_update_stats(struct v3d_job *job)
drivers/gpu/drm/v3d/v3d_sched.c
181
v3d_stats_update(job->client_stats, now);
drivers/gpu/drm/v3d/v3d_sched.c
182
v3d_stats_update(job->global_stats, now);
drivers/gpu/drm/v3d/v3d_sched.c
188
struct v3d_bin_job *job = to_bin_job(sched_job);
drivers/gpu/drm/v3d/v3d_sched.c
189
struct v3d_dev *v3d = job->base.v3d;
drivers/gpu/drm/v3d/v3d_sched.c
195
if (unlikely(job->base.base.s_fence->finished.error)) {
drivers/gpu/drm/v3d/v3d_sched.c
206
queue->active_job = &job->base;
drivers/gpu/drm/v3d/v3d_sched.c
219
if (job->base.irq_fence)
drivers/gpu/drm/v3d/v3d_sched.c
220
dma_fence_put(job->base.irq_fence);
drivers/gpu/drm/v3d/v3d_sched.c
221
job->base.irq_fence = dma_fence_get(fence);
drivers/gpu/drm/v3d/v3d_sched.c
224
job->start, job->end);
drivers/gpu/drm/v3d/v3d_sched.c
226
v3d_job_start_stats(&job->base);
drivers/gpu/drm/v3d/v3d_sched.c
227
v3d_switch_perfmon(v3d, &job->base);
drivers/gpu/drm/v3d/v3d_sched.c
232
if (job->qma) {
drivers/gpu/drm/v3d/v3d_sched.c
233
V3D_CORE_WRITE(0, V3D_CLE_CT0QMA, job->qma);
drivers/gpu/drm/v3d/v3d_sched.c
234
V3D_CORE_WRITE(0, V3D_CLE_CT0QMS, job->qms);
drivers/gpu/drm/v3d/v3d_sched.c
236
if (job->qts) {
drivers/gpu/drm/v3d/v3d_sched.c
239
job->qts);
drivers/gpu/drm/v3d/v3d_sched.c
241
V3D_CORE_WRITE(0, V3D_CLE_CT0QBA, job->start);
drivers/gpu/drm/v3d/v3d_sched.c
242
V3D_CORE_WRITE(0, V3D_CLE_CT0QEA, job->end);
drivers/gpu/drm/v3d/v3d_sched.c
249
struct v3d_render_job *job = to_render_job(sched_job);
drivers/gpu/drm/v3d/v3d_sched.c
250
struct v3d_dev *v3d = job->base.v3d;
drivers/gpu/drm/v3d/v3d_sched.c
254
if (unlikely(job->base.base.s_fence->finished.error)) {
drivers/gpu/drm/v3d/v3d_sched.c
259
v3d->queue[V3D_RENDER].active_job = &job->base;
drivers/gpu/drm/v3d/v3d_sched.c
273
if (job->base.irq_fence)
drivers/gpu/drm/v3d/v3d_sched.c
274
dma_fence_put(job->base.irq_fence);
drivers/gpu/drm/v3d/v3d_sched.c
275
job->base.irq_fence = dma_fence_get(fence);
drivers/gpu/drm/v3d/v3d_sched.c
278
job->start, job->end);
drivers/gpu/drm/v3d/v3d_sched.c
280
v3d_job_start_stats(&job->base);
drivers/gpu/drm/v3d/v3d_sched.c
281
v3d_switch_perfmon(v3d, &job->base);
drivers/gpu/drm/v3d/v3d_sched.c
288
V3D_CORE_WRITE(0, V3D_CLE_CT1QBA, job->start);
drivers/gpu/drm/v3d/v3d_sched.c
289
V3D_CORE_WRITE(0, V3D_CLE_CT1QEA, job->end);
drivers/gpu/drm/v3d/v3d_sched.c
297
struct v3d_tfu_job *job = to_tfu_job(sched_job);
drivers/gpu/drm/v3d/v3d_sched.c
298
struct v3d_dev *v3d = job->base.v3d;
drivers/gpu/drm/v3d/v3d_sched.c
302
if (unlikely(job->base.base.s_fence->finished.error)) {
drivers/gpu/drm/v3d/v3d_sched.c
307
v3d->queue[V3D_TFU].active_job = &job->base;
drivers/gpu/drm/v3d/v3d_sched.c
313
if (job->base.irq_fence)
drivers/gpu/drm/v3d/v3d_sched.c
314
dma_fence_put(job->base.irq_fence);
drivers/gpu/drm/v3d/v3d_sched.c
315
job->base.irq_fence = dma_fence_get(fence);
drivers/gpu/drm/v3d/v3d_sched.c
319
v3d_job_start_stats(&job->base);
drivers/gpu/drm/v3d/v3d_sched.c
321
V3D_WRITE(V3D_TFU_IIA(v3d->ver), job->args.iia);
drivers/gpu/drm/v3d/v3d_sched.c
322
V3D_WRITE(V3D_TFU_IIS(v3d->ver), job->args.iis);
drivers/gpu/drm/v3d/v3d_sched.c
323
V3D_WRITE(V3D_TFU_ICA(v3d->ver), job->args.ica);
drivers/gpu/drm/v3d/v3d_sched.c
324
V3D_WRITE(V3D_TFU_IUA(v3d->ver), job->args.iua);
drivers/gpu/drm/v3d/v3d_sched.c
325
V3D_WRITE(V3D_TFU_IOA(v3d->ver), job->args.ioa);
drivers/gpu/drm/v3d/v3d_sched.c
327
V3D_WRITE(V3D_V7_TFU_IOC, job->args.v71.ioc);
drivers/gpu/drm/v3d/v3d_sched.c
328
V3D_WRITE(V3D_TFU_IOS(v3d->ver), job->args.ios);
drivers/gpu/drm/v3d/v3d_sched.c
329
V3D_WRITE(V3D_TFU_COEF0(v3d->ver), job->args.coef[0]);
drivers/gpu/drm/v3d/v3d_sched.c
330
if (v3d->ver >= V3D_GEN_71 || (job->args.coef[0] & V3D_TFU_COEF0_USECOEF)) {
drivers/gpu/drm/v3d/v3d_sched.c
331
V3D_WRITE(V3D_TFU_COEF1(v3d->ver), job->args.coef[1]);
drivers/gpu/drm/v3d/v3d_sched.c
332
V3D_WRITE(V3D_TFU_COEF2(v3d->ver), job->args.coef[2]);
drivers/gpu/drm/v3d/v3d_sched.c
333
V3D_WRITE(V3D_TFU_COEF3(v3d->ver), job->args.coef[3]);
drivers/gpu/drm/v3d/v3d_sched.c
336
V3D_WRITE(V3D_TFU_ICFG(v3d->ver), job->args.icfg | V3D_TFU_ICFG_IOC);
drivers/gpu/drm/v3d/v3d_sched.c
344
struct v3d_csd_job *job = to_csd_job(sched_job);
drivers/gpu/drm/v3d/v3d_sched.c
345
struct v3d_dev *v3d = job->base.v3d;
drivers/gpu/drm/v3d/v3d_sched.c
350
if (unlikely(job->base.base.s_fence->finished.error)) {
drivers/gpu/drm/v3d/v3d_sched.c
360
if (!V3D_GET_FIELD(job->args.cfg[0], V3D_CSD_QUEUED_CFG0_NUM_WGS_X) ||
drivers/gpu/drm/v3d/v3d_sched.c
361
!V3D_GET_FIELD(job->args.cfg[1], V3D_CSD_QUEUED_CFG1_NUM_WGS_Y) ||
drivers/gpu/drm/v3d/v3d_sched.c
362
!V3D_GET_FIELD(job->args.cfg[2], V3D_CSD_QUEUED_CFG2_NUM_WGS_Z))
drivers/gpu/drm/v3d/v3d_sched.c
365
v3d->queue[V3D_CSD].active_job = &job->base;
drivers/gpu/drm/v3d/v3d_sched.c
373
if (job->base.irq_fence)
drivers/gpu/drm/v3d/v3d_sched.c
374
dma_fence_put(job->base.irq_fence);
drivers/gpu/drm/v3d/v3d_sched.c
375
job->base.irq_fence = dma_fence_get(fence);
drivers/gpu/drm/v3d/v3d_sched.c
379
v3d_job_start_stats(&job->base);
drivers/gpu/drm/v3d/v3d_sched.c
380
v3d_switch_perfmon(v3d, &job->base);
drivers/gpu/drm/v3d/v3d_sched.c
384
V3D_CORE_WRITE(0, csd_cfg0_reg + 4 * i, job->args.cfg[i]);
drivers/gpu/drm/v3d/v3d_sched.c
395
V3D_CORE_WRITE(0, csd_cfg0_reg, job->args.cfg[0]);
drivers/gpu/drm/v3d/v3d_sched.c
401
v3d_rewrite_csd_job_wg_counts_from_indirect(struct v3d_cpu_job *job)
drivers/gpu/drm/v3d/v3d_sched.c
403
struct v3d_indirect_csd_info *indirect_csd = &job->indirect_csd;
drivers/gpu/drm/v3d/v3d_sched.c
404
struct v3d_bo *bo = to_v3d_bo(job->base.bo[0]);
drivers/gpu/drm/v3d/v3d_sched.c
406
struct drm_v3d_submit_csd *args = &indirect_csd->job->args;
drivers/gpu/drm/v3d/v3d_sched.c
407
struct v3d_dev *v3d = job->base.v3d;
drivers/gpu/drm/v3d/v3d_sched.c
447
v3d_timestamp_query(struct v3d_cpu_job *job)
drivers/gpu/drm/v3d/v3d_sched.c
449
struct v3d_timestamp_query_info *timestamp_query = &job->timestamp_query;
drivers/gpu/drm/v3d/v3d_sched.c
450
struct v3d_bo *bo = to_v3d_bo(job->base.bo[0]);
drivers/gpu/drm/v3d/v3d_sched.c
460
job->base.done_fence);
drivers/gpu/drm/v3d/v3d_sched.c
467
v3d_reset_timestamp_queries(struct v3d_cpu_job *job)
drivers/gpu/drm/v3d/v3d_sched.c
469
struct v3d_timestamp_query_info *timestamp_query = &job->timestamp_query;
drivers/gpu/drm/v3d/v3d_sched.c
471
struct v3d_bo *bo = to_v3d_bo(job->base.bo[0]);
drivers/gpu/drm/v3d/v3d_sched.c
506
v3d_copy_query_results(struct v3d_cpu_job *job)
drivers/gpu/drm/v3d/v3d_sched.c
508
struct v3d_timestamp_query_info *timestamp_query = &job->timestamp_query;
drivers/gpu/drm/v3d/v3d_sched.c
510
struct v3d_bo *bo = to_v3d_bo(job->base.bo[0]);
drivers/gpu/drm/v3d/v3d_sched.c
511
struct v3d_bo *timestamp = to_v3d_bo(job->base.bo[1]);
drivers/gpu/drm/v3d/v3d_sched.c
512
struct v3d_copy_query_results_info *copy = &job->copy;
drivers/gpu/drm/v3d/v3d_sched.c
547
v3d_reset_performance_queries(struct v3d_cpu_job *job)
drivers/gpu/drm/v3d/v3d_sched.c
549
struct v3d_performance_query_info *performance_query = &job->performance_query;
drivers/gpu/drm/v3d/v3d_sched.c
550
struct v3d_file_priv *v3d_priv = job->base.file_priv;
drivers/gpu/drm/v3d/v3d_sched.c
551
struct v3d_dev *v3d = job->base.v3d;
drivers/gpu/drm/v3d/v3d_sched.c
575
v3d_write_performance_query_result(struct v3d_cpu_job *job, void *data,
drivers/gpu/drm/v3d/v3d_sched.c
579
&job->performance_query;
drivers/gpu/drm/v3d/v3d_sched.c
580
struct v3d_file_priv *v3d_priv = job->base.file_priv;
drivers/gpu/drm/v3d/v3d_sched.c
583
struct v3d_dev *v3d = job->base.v3d;
drivers/gpu/drm/v3d/v3d_sched.c
600
if (job->copy.do_64bit) {
drivers/gpu/drm/v3d/v3d_sched.c
615
v3d_copy_performance_query(struct v3d_cpu_job *job)
drivers/gpu/drm/v3d/v3d_sched.c
617
struct v3d_performance_query_info *performance_query = &job->performance_query;
drivers/gpu/drm/v3d/v3d_sched.c
618
struct v3d_copy_query_results_info *copy = &job->copy;
drivers/gpu/drm/v3d/v3d_sched.c
619
struct v3d_bo *bo = to_v3d_bo(job->base.bo[0]);
drivers/gpu/drm/v3d/v3d_sched.c
634
v3d_write_performance_query_result(job, data, i);
drivers/gpu/drm/v3d/v3d_sched.c
660
struct v3d_cpu_job *job = to_cpu_job(sched_job);
drivers/gpu/drm/v3d/v3d_sched.c
661
struct v3d_dev *v3d = job->base.v3d;
drivers/gpu/drm/v3d/v3d_sched.c
663
if (job->job_type >= ARRAY_SIZE(cpu_job_function)) {
drivers/gpu/drm/v3d/v3d_sched.c
664
drm_dbg(&v3d->drm, "Unknown CPU job: %d\n", job->job_type);
drivers/gpu/drm/v3d/v3d_sched.c
668
v3d_job_start_stats(&job->base);
drivers/gpu/drm/v3d/v3d_sched.c
669
trace_v3d_cpu_job_begin(&v3d->drm, job->job_type);
drivers/gpu/drm/v3d/v3d_sched.c
671
cpu_job_function[job->job_type](job);
drivers/gpu/drm/v3d/v3d_sched.c
673
trace_v3d_cpu_job_end(&v3d->drm, job->job_type);
drivers/gpu/drm/v3d/v3d_sched.c
674
v3d_job_update_stats(&job->base);
drivers/gpu/drm/v3d/v3d_sched.c
683
struct v3d_job *job = to_v3d_job(sched_job);
drivers/gpu/drm/v3d/v3d_sched.c
684
struct v3d_dev *v3d = job->v3d;
drivers/gpu/drm/v3d/v3d_sched.c
686
v3d_job_start_stats(job);
drivers/gpu/drm/v3d/v3d_sched.c
690
v3d_job_update_stats(job);
drivers/gpu/drm/v3d/v3d_sched.c
700
struct v3d_job *job = to_v3d_job(sched_job);
drivers/gpu/drm/v3d/v3d_sched.c
716
atomic_inc(&job->client_stats->reset_counter);
drivers/gpu/drm/v3d/v3d_sched.c
734
struct v3d_job *job = to_v3d_job(sched_job);
drivers/gpu/drm/v3d/v3d_sched.c
735
struct v3d_dev *v3d = job->v3d;
drivers/gpu/drm/v3d/v3d_sched.c
757
struct v3d_bin_job *job = to_bin_job(sched_job);
drivers/gpu/drm/v3d/v3d_sched.c
760
&job->timedout_ctca, &job->timedout_ctra);
drivers/gpu/drm/v3d/v3d_sched.c
766
struct v3d_render_job *job = to_render_job(sched_job);
drivers/gpu/drm/v3d/v3d_sched.c
769
&job->timedout_ctca, &job->timedout_ctra);
drivers/gpu/drm/v3d/v3d_sched.c
775
struct v3d_job *job = to_v3d_job(sched_job);
drivers/gpu/drm/v3d/v3d_sched.c
777
return v3d_gpu_reset_for_timeout(job->v3d, sched_job, V3D_TFU);
drivers/gpu/drm/v3d/v3d_sched.c
783
struct v3d_csd_job *job = to_csd_job(sched_job);
drivers/gpu/drm/v3d/v3d_sched.c
784
struct v3d_dev *v3d = job->base.v3d;
drivers/gpu/drm/v3d/v3d_sched.c
790
if (job->timedout_batches != batches) {
drivers/gpu/drm/v3d/v3d_sched.c
791
job->timedout_batches = batches;
drivers/gpu/drm/v3d/v3d_sched.c
93
struct v3d_job *job = to_v3d_job(sched_job);
drivers/gpu/drm/v3d/v3d_sched.c
95
v3d_job_cleanup(job);
drivers/gpu/drm/v3d/v3d_submit.c
100
dma_fence_put(job->irq_fence);
drivers/gpu/drm/v3d/v3d_submit.c
101
dma_fence_put(job->done_fence);
drivers/gpu/drm/v3d/v3d_submit.c
103
if (job->perfmon)
drivers/gpu/drm/v3d/v3d_submit.c
104
v3d_perfmon_put(job->perfmon);
drivers/gpu/drm/v3d/v3d_submit.c
106
v3d_stats_put(job->client_stats);
drivers/gpu/drm/v3d/v3d_submit.c
107
v3d_stats_put(job->global_stats);
drivers/gpu/drm/v3d/v3d_submit.c
1088
struct v3d_tfu_job *job = NULL;
drivers/gpu/drm/v3d/v3d_submit.c
109
if (job->has_pm_ref)
drivers/gpu/drm/v3d/v3d_submit.c
110
v3d_pm_runtime_put(job->v3d);
drivers/gpu/drm/v3d/v3d_submit.c
1107
ret = v3d_job_allocate(v3d, (void *)&job, sizeof(*job));
drivers/gpu/drm/v3d/v3d_submit.c
1111
ret = v3d_job_init(v3d, file_priv, &job->base,
drivers/gpu/drm/v3d/v3d_submit.c
1114
v3d_job_deallocate((void *)&job);
drivers/gpu/drm/v3d/v3d_submit.c
1118
job->base.bo = kzalloc_objs(*job->base.bo, ARRAY_SIZE(args->bo_handles));
drivers/gpu/drm/v3d/v3d_submit.c
1119
if (!job->base.bo) {
drivers/gpu/drm/v3d/v3d_submit.c
112
kfree(job);
drivers/gpu/drm/v3d/v3d_submit.c
1124
job->args = *args;
drivers/gpu/drm/v3d/v3d_submit.c
1126
for (job->base.bo_count = 0;
drivers/gpu/drm/v3d/v3d_submit.c
1127
job->base.bo_count < ARRAY_SIZE(args->bo_handles);
drivers/gpu/drm/v3d/v3d_submit.c
1128
job->base.bo_count++) {
drivers/gpu/drm/v3d/v3d_submit.c
1131
if (!args->bo_handles[job->base.bo_count])
drivers/gpu/drm/v3d/v3d_submit.c
1134
bo = drm_gem_object_lookup(file_priv, args->bo_handles[job->base.bo_count]);
drivers/gpu/drm/v3d/v3d_submit.c
1137
job->base.bo_count,
drivers/gpu/drm/v3d/v3d_submit.c
1138
args->bo_handles[job->base.bo_count]);
drivers/gpu/drm/v3d/v3d_submit.c
1142
job->base.bo[job->base.bo_count] = bo;
drivers/gpu/drm/v3d/v3d_submit.c
1145
ret = v3d_lock_bo_reservations(&job->base, &acquire_ctx);
drivers/gpu/drm/v3d/v3d_submit.c
1150
v3d_push_job(&job->base);
drivers/gpu/drm/v3d/v3d_submit.c
1154
&job->base, &acquire_ctx,
drivers/gpu/drm/v3d/v3d_submit.c
1157
job->base.done_fence);
drivers/gpu/drm/v3d/v3d_submit.c
1159
v3d_job_put(&job->base);
drivers/gpu/drm/v3d/v3d_submit.c
1164
v3d_job_cleanup((void *)job);
drivers/gpu/drm/v3d/v3d_submit.c
118
struct v3d_render_job *job = container_of(ref, struct v3d_render_job,
drivers/gpu/drm/v3d/v3d_submit.c
1187
struct v3d_csd_job *job = NULL;
drivers/gpu/drm/v3d/v3d_submit.c
1216
&job, &clean_job, &se,
drivers/gpu/drm/v3d/v3d_submit.c
122
list_for_each_entry_safe(bo, save, &job->unref_list, unref_head) {
drivers/gpu/drm/v3d/v3d_submit.c
1227
job->base.perfmon = v3d_perfmon_find(v3d_priv,
drivers/gpu/drm/v3d/v3d_submit.c
1229
if (!job->base.perfmon) {
drivers/gpu/drm/v3d/v3d_submit.c
1236
v3d_push_job(&job->base);
drivers/gpu/drm/v3d/v3d_submit.c
1239
dma_fence_get(job->base.done_fence));
drivers/gpu/drm/v3d/v3d_submit.c
1253
v3d_job_put(&job->base);
drivers/gpu/drm/v3d/v3d_submit.c
1264
v3d_job_cleanup((void *)job);
drivers/gpu/drm/v3d/v3d_submit.c
132
struct v3d_cpu_job *job = container_of(ref, struct v3d_cpu_job,
drivers/gpu/drm/v3d/v3d_submit.c
1343
csd_job = cpu_job->indirect_csd.job;
drivers/gpu/drm/v3d/v3d_submit.c
135
v3d_timestamp_query_info_free(&job->timestamp_query,
drivers/gpu/drm/v3d/v3d_submit.c
136
job->timestamp_query.count);
drivers/gpu/drm/v3d/v3d_submit.c
138
v3d_performance_query_info_free(&job->performance_query,
drivers/gpu/drm/v3d/v3d_submit.c
139
job->performance_query.count);
drivers/gpu/drm/v3d/v3d_submit.c
141
if (job->indirect_csd.indirect)
drivers/gpu/drm/v3d/v3d_submit.c
142
drm_gem_object_put(job->indirect_csd.indirect);
drivers/gpu/drm/v3d/v3d_submit.c
147
void v3d_job_cleanup(struct v3d_job *job)
drivers/gpu/drm/v3d/v3d_submit.c
149
if (!job)
drivers/gpu/drm/v3d/v3d_submit.c
152
drm_sched_job_cleanup(&job->base);
drivers/gpu/drm/v3d/v3d_submit.c
153
v3d_job_put(job);
drivers/gpu/drm/v3d/v3d_submit.c
156
void v3d_job_put(struct v3d_job *job)
drivers/gpu/drm/v3d/v3d_submit.c
158
if (!job)
drivers/gpu/drm/v3d/v3d_submit.c
161
kref_put(&job->refcount, job->free);
drivers/gpu/drm/v3d/v3d_submit.c
185
struct v3d_job *job, void (*free)(struct kref *ref),
drivers/gpu/drm/v3d/v3d_submit.c
192
job->v3d = v3d;
drivers/gpu/drm/v3d/v3d_submit.c
193
job->free = free;
drivers/gpu/drm/v3d/v3d_submit.c
194
job->file_priv = v3d_priv;
drivers/gpu/drm/v3d/v3d_submit.c
196
ret = drm_sched_job_init(&job->base, &v3d_priv->sched_entity[queue],
drivers/gpu/drm/v3d/v3d_submit.c
213
ret = drm_sched_job_add_syncobj_dependency(&job->base, file_priv, in.handle, 0);
drivers/gpu/drm/v3d/v3d_submit.c
221
ret = drm_sched_job_add_syncobj_dependency(&job->base, file_priv, in_sync, 0);
drivers/gpu/drm/v3d/v3d_submit.c
23
v3d_lock_bo_reservations(struct v3d_job *job,
drivers/gpu/drm/v3d/v3d_submit.c
233
job->has_pm_ref = true;
drivers/gpu/drm/v3d/v3d_submit.c
236
kref_init(&job->refcount);
drivers/gpu/drm/v3d/v3d_submit.c
238
job->client_stats = v3d_stats_get(v3d_priv->stats[queue]);
drivers/gpu/drm/v3d/v3d_submit.c
239
job->global_stats = v3d_stats_get(v3d->queue[queue].stats);
drivers/gpu/drm/v3d/v3d_submit.c
244
drm_sched_job_cleanup(&job->base);
drivers/gpu/drm/v3d/v3d_submit.c
249
v3d_push_job(struct v3d_job *job)
drivers/gpu/drm/v3d/v3d_submit.c
251
drm_sched_job_arm(&job->base);
drivers/gpu/drm/v3d/v3d_submit.c
253
job->done_fence = dma_fence_get(&job->base.s_fence->finished);
drivers/gpu/drm/v3d/v3d_submit.c
256
kref_get(&job->refcount);
drivers/gpu/drm/v3d/v3d_submit.c
258
drm_sched_entity_push_job(&job->base);
drivers/gpu/drm/v3d/v3d_submit.c
263
struct v3d_job *job,
drivers/gpu/drm/v3d/v3d_submit.c
273
for (i = 0; i < job->bo_count; i++) {
drivers/gpu/drm/v3d/v3d_submit.c
275
dma_resv_add_fence(job->bo[i]->resv, job->done_fence,
drivers/gpu/drm/v3d/v3d_submit.c
279
drm_gem_unlock_reservations(job->bo, job->bo_count, acquire_ctx);
drivers/gpu/drm/v3d/v3d_submit.c
28
ret = drm_gem_lock_reservations(job->bo, job->bo_count, acquire_ctx);
drivers/gpu/drm/v3d/v3d_submit.c
307
struct v3d_csd_job **job,
drivers/gpu/drm/v3d/v3d_submit.c
314
ret = v3d_job_allocate(v3d, (void *)job, sizeof(**job));
drivers/gpu/drm/v3d/v3d_submit.c
318
ret = v3d_job_init(v3d, file_priv, &(*job)->base,
drivers/gpu/drm/v3d/v3d_submit.c
32
for (i = 0; i < job->bo_count; i++) {
drivers/gpu/drm/v3d/v3d_submit.c
321
v3d_job_deallocate((void *)job);
drivers/gpu/drm/v3d/v3d_submit.c
33
ret = dma_resv_reserve_fences(job->bo[i]->resv, 1);
drivers/gpu/drm/v3d/v3d_submit.c
336
(*job)->args = *args;
drivers/gpu/drm/v3d/v3d_submit.c
37
ret = drm_sched_job_add_implicit_dependencies(&job->base,
drivers/gpu/drm/v3d/v3d_submit.c
38
job->bo[i], true);
drivers/gpu/drm/v3d/v3d_submit.c
451
v3d_validate_cpu_job(struct drm_file *file_priv, struct v3d_cpu_job *job)
drivers/gpu/drm/v3d/v3d_submit.c
456
if (!job) {
drivers/gpu/drm/v3d/v3d_submit.c
46
drm_gem_unlock_reservations(job->bo, job->bo_count, acquire_ctx);
drivers/gpu/drm/v3d/v3d_submit.c
461
if (job->job_type) {
drivers/gpu/drm/v3d/v3d_submit.c
473
struct v3d_cpu_job *job)
drivers/gpu/drm/v3d/v3d_submit.c
478
struct v3d_indirect_csd_info *info = &job->indirect_csd;
drivers/gpu/drm/v3d/v3d_submit.c
480
if (!v3d_validate_cpu_job(file_priv, job))
drivers/gpu/drm/v3d/v3d_submit.c
491
job->job_type = V3D_CPU_JOB_TYPE_INDIRECT_CSD;
drivers/gpu/drm/v3d/v3d_submit.c
502
&info->job, &info->clean_job,
drivers/gpu/drm/v3d/v3d_submit.c
510
struct v3d_cpu_job *job)
drivers/gpu/drm/v3d/v3d_submit.c
514
struct v3d_timestamp_query_info *query_info = &job->timestamp_query;
drivers/gpu/drm/v3d/v3d_submit.c
518
if (!v3d_validate_cpu_job(file_priv, job))
drivers/gpu/drm/v3d/v3d_submit.c
527
job->job_type = V3D_CPU_JOB_TYPE_TIMESTAMP_QUERY;
drivers/gpu/drm/v3d/v3d_submit.c
564
v3d_timestamp_query_info_free(&job->timestamp_query, i);
drivers/gpu/drm/v3d/v3d_submit.c
571
struct v3d_cpu_job *job)
drivers/gpu/drm/v3d/v3d_submit.c
575
struct v3d_timestamp_query_info *query_info = &job->timestamp_query;
drivers/gpu/drm/v3d/v3d_submit.c
579
if (!v3d_validate_cpu_job(file_priv, job))
drivers/gpu/drm/v3d/v3d_submit.c
585
job->job_type = V3D_CPU_JOB_TYPE_RESET_TIMESTAMP_QUERY;
drivers/gpu/drm/v3d/v3d_submit.c
616
v3d_timestamp_query_info_free(&job->timestamp_query, i);
drivers/gpu/drm/v3d/v3d_submit.c
624
struct v3d_cpu_job *job)
drivers/gpu/drm/v3d/v3d_submit.c
628
struct v3d_timestamp_query_info *query_info = &job->timestamp_query;
drivers/gpu/drm/v3d/v3d_submit.c
632
if (!v3d_validate_cpu_job(file_priv, job))
drivers/gpu/drm/v3d/v3d_submit.c
641
job->job_type = V3D_CPU_JOB_TYPE_COPY_TIMESTAMP_QUERY;
drivers/gpu/drm/v3d/v3d_submit.c
675
job->copy.do_64bit = copy.do_64bit;
drivers/gpu/drm/v3d/v3d_submit.c
676
job->copy.do_partial = copy.do_partial;
drivers/gpu/drm/v3d/v3d_submit.c
677
job->copy.availability_bit = copy.availability_bit;
drivers/gpu/drm/v3d/v3d_submit.c
678
job->copy.offset = copy.offset;
drivers/gpu/drm/v3d/v3d_submit.c
679
job->copy.stride = copy.stride;
drivers/gpu/drm/v3d/v3d_submit.c
684
v3d_timestamp_query_info_free(&job->timestamp_query, i);
drivers/gpu/drm/v3d/v3d_submit.c
69
struct v3d_job *job,
drivers/gpu/drm/v3d/v3d_submit.c
73
job->bo_count = bo_count;
drivers/gpu/drm/v3d/v3d_submit.c
75
if (!job->bo_count) {
drivers/gpu/drm/v3d/v3d_submit.c
754
struct v3d_cpu_job *job)
drivers/gpu/drm/v3d/v3d_submit.c
756
struct v3d_performance_query_info *query_info = &job->performance_query;
drivers/gpu/drm/v3d/v3d_submit.c
760
if (!v3d_validate_cpu_job(file_priv, job))
drivers/gpu/drm/v3d/v3d_submit.c
766
job->job_type = V3D_CPU_JOB_TYPE_RESET_PERFORMANCE_QUERY;
drivers/gpu/drm/v3d/v3d_submit.c
791
struct v3d_cpu_job *job)
drivers/gpu/drm/v3d/v3d_submit.c
793
struct v3d_performance_query_info *query_info = &job->performance_query;
drivers/gpu/drm/v3d/v3d_submit.c
797
if (!v3d_validate_cpu_job(file_priv, job))
drivers/gpu/drm/v3d/v3d_submit.c
806
job->job_type = V3D_CPU_JOB_TYPE_COPY_PERFORMANCE_QUERY;
drivers/gpu/drm/v3d/v3d_submit.c
826
job->copy.do_64bit = copy.do_64bit;
drivers/gpu/drm/v3d/v3d_submit.c
827
job->copy.do_partial = copy.do_partial;
drivers/gpu/drm/v3d/v3d_submit.c
828
job->copy.availability_bit = copy.availability_bit;
drivers/gpu/drm/v3d/v3d_submit.c
829
job->copy.offset = copy.offset;
drivers/gpu/drm/v3d/v3d_submit.c
830
job->copy.stride = copy.stride;
drivers/gpu/drm/v3d/v3d_submit.c
842
struct v3d_cpu_job *job)
drivers/gpu/drm/v3d/v3d_submit.c
85
job->bo_count, &job->bo);
drivers/gpu/drm/v3d/v3d_submit.c
863
ret = v3d_get_cpu_indirect_csd_params(file_priv, user_ext, job);
drivers/gpu/drm/v3d/v3d_submit.c
866
ret = v3d_get_cpu_timestamp_query_params(file_priv, user_ext, job);
drivers/gpu/drm/v3d/v3d_submit.c
869
ret = v3d_get_cpu_reset_timestamp_params(file_priv, user_ext, job);
drivers/gpu/drm/v3d/v3d_submit.c
872
ret = v3d_get_cpu_copy_query_results_params(file_priv, user_ext, job);
drivers/gpu/drm/v3d/v3d_submit.c
875
ret = v3d_get_cpu_reset_performance_params(file_priv, user_ext, job);
drivers/gpu/drm/v3d/v3d_submit.c
878
ret = v3d_get_cpu_copy_performance_query_params(file_priv, user_ext, job);
drivers/gpu/drm/v3d/v3d_submit.c
91
struct v3d_job *job = container_of(ref, struct v3d_job, refcount);
drivers/gpu/drm/v3d/v3d_submit.c
94
if (job->bo) {
drivers/gpu/drm/v3d/v3d_submit.c
95
for (i = 0; i < job->bo_count; i++)
drivers/gpu/drm/v3d/v3d_submit.c
96
drm_gem_object_put(job->bo[i]);
drivers/gpu/drm/v3d/v3d_submit.c
97
kvfree(job->bo);
drivers/gpu/drm/vkms/vkms_writeback.c
107
struct drm_writeback_job *job)
drivers/gpu/drm/vkms/vkms_writeback.c
109
struct vkms_writeback_job *vkmsjob = job->priv;
drivers/gpu/drm/vkms/vkms_writeback.c
114
if (!job->fb)
drivers/gpu/drm/vkms/vkms_writeback.c
117
drm_gem_fb_vunmap(job->fb, vkmsjob->wb_frame_info.map);
drivers/gpu/drm/vkms/vkms_writeback.c
76
struct drm_writeback_job *job)
drivers/gpu/drm/vkms/vkms_writeback.c
81
if (!job->fb)
drivers/gpu/drm/vkms/vkms_writeback.c
88
ret = drm_gem_fb_vmap(job->fb, vkmsjob->wb_frame_info.map, vkmsjob->data);
drivers/gpu/drm/vkms/vkms_writeback.c
94
vkmsjob->wb_frame_info.fb = job->fb;
drivers/gpu/drm/vkms/vkms_writeback.c
97
job->priv = vkmsjob;
drivers/gpu/drm/xe/tests/xe_migrate.c
399
struct xe_sched_job *job;
drivers/gpu/drm/xe/tests/xe_migrate.c
43
struct xe_sched_job *job = xe_bb_create_migration_job(m->q, bb,
drivers/gpu/drm/xe/tests/xe_migrate.c
456
job = xe_bb_create_migration_job(m->q, bb,
drivers/gpu/drm/xe/tests/xe_migrate.c
459
if (IS_ERR(job)) {
drivers/gpu/drm/xe/tests/xe_migrate.c
460
err = PTR_ERR(job);
drivers/gpu/drm/xe/tests/xe_migrate.c
464
xe_sched_job_add_migrate_flush(job, flush_flags);
drivers/gpu/drm/xe/tests/xe_migrate.c
467
xe_sched_job_arm(job);
drivers/gpu/drm/xe/tests/xe_migrate.c
469
fence = dma_fence_get(&job->drm.s_fence->finished);
drivers/gpu/drm/xe/tests/xe_migrate.c
470
xe_sched_job_push(job);
drivers/gpu/drm/xe/tests/xe_migrate.c
48
if (IS_ERR(job)) {
drivers/gpu/drm/xe/tests/xe_migrate.c
50
PTR_ERR(job));
drivers/gpu/drm/xe/tests/xe_migrate.c
51
return PTR_ERR(job);
drivers/gpu/drm/xe/tests/xe_migrate.c
54
xe_sched_job_arm(job);
drivers/gpu/drm/xe/tests/xe_migrate.c
55
fence = dma_fence_get(&job->drm.s_fence->finished);
drivers/gpu/drm/xe/tests/xe_migrate.c
56
xe_sched_job_push(job);
drivers/gpu/drm/xe/xe_dep_job_types.h
16
struct dma_fence *(*run_job)(struct xe_dep_job *job);
drivers/gpu/drm/xe/xe_dep_job_types.h
18
void (*free_job)(struct xe_dep_job *job);
drivers/gpu/drm/xe/xe_devcoredump.c
126
xe_sched_job_snapshot_print(ss->job, &p);
drivers/gpu/drm/xe/xe_devcoredump.c
159
xe_sched_job_snapshot_free(ss->job);
drivers/gpu/drm/xe/xe_devcoredump.c
160
ss->job = NULL;
drivers/gpu/drm/xe/xe_devcoredump.c
327
struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_devcoredump.c
355
if (job)
drivers/gpu/drm/xe/xe_devcoredump.c
356
ss->job = xe_sched_job_snapshot_capture(job);
drivers/gpu/drm/xe/xe_devcoredump.c
377
void xe_devcoredump(struct xe_exec_queue *q, struct xe_sched_job *job, const char *fmt, ...)
drivers/gpu/drm/xe/xe_devcoredump.c
397
devcoredump_snapshot(coredump, q, job);
drivers/gpu/drm/xe/xe_devcoredump.h
17
void xe_devcoredump(struct xe_exec_queue *q, struct xe_sched_job *job, const char *fmt, ...);
drivers/gpu/drm/xe/xe_devcoredump.h
21
struct xe_sched_job *job,
drivers/gpu/drm/xe/xe_devcoredump_types.h
55
struct xe_sched_job_snapshot *job;
drivers/gpu/drm/xe/xe_exec.c
125
struct xe_sched_job *job;
drivers/gpu/drm/xe/xe_exec.c
288
job = xe_sched_job_create(q, xe_exec_queue_is_parallel(q) ?
drivers/gpu/drm/xe/xe_exec.c
290
if (IS_ERR(job)) {
drivers/gpu/drm/xe/xe_exec.c
291
err = PTR_ERR(job);
drivers/gpu/drm/xe/xe_exec.c
307
err = xe_sched_job_add_deps(job, obj->resv,
drivers/gpu/drm/xe/xe_exec.c
315
err = xe_sync_entry_add_deps(&syncs[i], job);
drivers/gpu/drm/xe/xe_exec.c
333
xe_sched_job_arm(job);
drivers/gpu/drm/xe/xe_exec.c
335
drm_gpuvm_resv_add_fence(&vm->gpuvm, exec, &job->drm.s_fence->finished,
drivers/gpu/drm/xe/xe_exec.c
340
xe_sync_entry_signal(&syncs[i], &job->drm.s_fence->finished);
drivers/gpu/drm/xe/xe_exec.c
341
xe_sched_job_init_user_fence(job, &syncs[i]);
drivers/gpu/drm/xe/xe_exec.c
345
xe_exec_queue_last_fence_set(q, vm, &job->drm.s_fence->finished);
drivers/gpu/drm/xe/xe_exec.c
346
xe_sched_job_push(job);
drivers/gpu/drm/xe/xe_exec.c
363
xe_sched_job_put(job);
drivers/gpu/drm/xe/xe_execlist.c
303
struct xe_sched_job *job = to_xe_sched_job(drm_job);
drivers/gpu/drm/xe/xe_execlist.c
304
struct xe_exec_queue *q = job->q;
drivers/gpu/drm/xe/xe_execlist.c
305
struct xe_execlist_exec_queue *exl = job->q->execlist;
drivers/gpu/drm/xe/xe_execlist.c
307
q->ring_ops->emit_job(job);
drivers/gpu/drm/xe/xe_execlist.c
310
return job->fence;
drivers/gpu/drm/xe/xe_execlist.c
315
struct xe_sched_job *job = to_xe_sched_job(drm_job);
drivers/gpu/drm/xe/xe_execlist.c
317
xe_exec_queue_update_run_ticks(job->q);
drivers/gpu/drm/xe/xe_execlist.c
318
xe_sched_job_put(job);
drivers/gpu/drm/xe/xe_gpu_scheduler.h
67
xe_sched_invalidate_job(struct xe_sched_job *job, int threshold)
drivers/gpu/drm/xe/xe_gpu_scheduler.h
69
return drm_sched_invalidate_job(&job->drm, threshold);
drivers/gpu/drm/xe/xe_gpu_scheduler.h
81
struct drm_sched_job *job;
drivers/gpu/drm/xe/xe_gpu_scheduler.h
83
drm_sched_for_each_pending_job(job, &sched->base, NULL)
drivers/gpu/drm/xe/xe_gpu_scheduler.h
84
if (!drm_sched_job_is_signaled(job))
drivers/gpu/drm/xe/xe_gpu_scheduler.h
85
return to_xe_sched_job(job);
drivers/gpu/drm/xe/xe_gsc.c
75
struct xe_sched_job *job;
drivers/gpu/drm/xe/xe_gsc.c
89
job = xe_bb_create_job(gsc->q, bb);
drivers/gpu/drm/xe/xe_gsc.c
90
if (IS_ERR(job)) {
drivers/gpu/drm/xe/xe_gsc.c
92
return PTR_ERR(job);
drivers/gpu/drm/xe/xe_gsc.c
95
xe_sched_job_arm(job);
drivers/gpu/drm/xe/xe_gsc.c
96
fence = dma_fence_get(&job->drm.s_fence->finished);
drivers/gpu/drm/xe/xe_gsc.c
97
xe_sched_job_push(job);
drivers/gpu/drm/xe/xe_gsc_submit.c
176
struct xe_sched_job *job;
drivers/gpu/drm/xe/xe_gsc_submit.c
199
job = xe_bb_create_job(gsc->q, bb);
drivers/gpu/drm/xe/xe_gsc_submit.c
200
if (IS_ERR(job)) {
drivers/gpu/drm/xe/xe_gsc_submit.c
202
return PTR_ERR(job);
drivers/gpu/drm/xe/xe_gsc_submit.c
205
xe_sched_job_arm(job);
drivers/gpu/drm/xe/xe_gsc_submit.c
206
fence = dma_fence_get(&job->drm.s_fence->finished);
drivers/gpu/drm/xe/xe_gsc_submit.c
207
xe_sched_job_push(job);
drivers/gpu/drm/xe/xe_gt.c
178
struct xe_sched_job *job;
drivers/gpu/drm/xe/xe_gt.c
182
job = xe_bb_create_job(q, bb);
drivers/gpu/drm/xe/xe_gt.c
183
if (IS_ERR(job))
drivers/gpu/drm/xe/xe_gt.c
184
return PTR_ERR(job);
drivers/gpu/drm/xe/xe_gt.c
186
job->ring_ops_force_reset = force_reset;
drivers/gpu/drm/xe/xe_gt.c
188
xe_sched_job_arm(job);
drivers/gpu/drm/xe/xe_gt.c
189
fence = dma_fence_get(&job->drm.s_fence->finished);
drivers/gpu/drm/xe/xe_gt.c
190
xe_sched_job_push(job);
drivers/gpu/drm/xe/xe_guc_submit.c
1123
static void submit_exec_queue(struct xe_exec_queue *q, struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_guc_submit.c
1135
if (!job->restore_replay || job->last_replay) {
drivers/gpu/drm/xe/xe_guc_submit.c
1140
job->last_replay = false;
drivers/gpu/drm/xe/xe_guc_submit.c
1189
struct xe_sched_job *job = to_xe_sched_job(drm_job);
drivers/gpu/drm/xe/xe_guc_submit.c
1190
struct xe_exec_queue *q = job->q;
drivers/gpu/drm/xe/xe_guc_submit.c
1198
trace_xe_sched_job_run(job);
drivers/gpu/drm/xe/xe_guc_submit.c
1200
if (!killed_or_banned_or_wedged && !xe_sched_job_is_error(job)) {
drivers/gpu/drm/xe/xe_guc_submit.c
1213
if (!job->restore_replay)
drivers/gpu/drm/xe/xe_guc_submit.c
1214
q->ring_ops->emit_job(job);
drivers/gpu/drm/xe/xe_guc_submit.c
1215
submit_exec_queue(q, job);
drivers/gpu/drm/xe/xe_guc_submit.c
1216
job->restore_replay = false;
drivers/gpu/drm/xe/xe_guc_submit.c
1221
return job->fence;
drivers/gpu/drm/xe/xe_guc_submit.c
1226
struct xe_sched_job *job = to_xe_sched_job(drm_job);
drivers/gpu/drm/xe/xe_guc_submit.c
1228
trace_xe_sched_job_free(job);
drivers/gpu/drm/xe/xe_guc_submit.c
1229
xe_sched_job_put(job);
drivers/gpu/drm/xe/xe_guc_submit.c
1347
static bool check_timeout(struct xe_exec_queue *q, struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_guc_submit.c
1355
if (!xe_sched_job_started(job)) {
drivers/gpu/drm/xe/xe_guc_submit.c
1357
xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
drivers/gpu/drm/xe/xe_guc_submit.c
1365
if (ctx_timestamp == job->sample_timestamp) {
drivers/gpu/drm/xe/xe_guc_submit.c
1368
xe_sched_job_seqno(job),
drivers/gpu/drm/xe/xe_guc_submit.c
1369
xe_sched_job_lrc_seqno(job), q->guc->id);
drivers/gpu/drm/xe/xe_guc_submit.c
1372
xe_sched_job_seqno(job),
drivers/gpu/drm/xe/xe_guc_submit.c
1373
xe_sched_job_lrc_seqno(job), q->guc->id);
drivers/gpu/drm/xe/xe_guc_submit.c
1375
return xe_sched_invalidate_job(job, 0);
drivers/gpu/drm/xe/xe_guc_submit.c
1378
job->sample_timestamp = ctx_timestamp;
drivers/gpu/drm/xe/xe_guc_submit.c
1397
xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
drivers/gpu/drm/xe/xe_guc_submit.c
1464
static bool timeout_needs_gt_reset(struct xe_exec_queue *q, struct xe_sched_job *job,
drivers/gpu/drm/xe/xe_guc_submit.c
1470
return !skip_timeout_check && !xe_sched_job_started(job);
drivers/gpu/drm/xe/xe_guc_submit.c
1476
struct xe_sched_job *job = to_xe_sched_job(drm_job);
drivers/gpu/drm/xe/xe_guc_submit.c
1478
struct xe_exec_queue *q = job->q, *primary;
drivers/gpu/drm/xe/xe_guc_submit.c
1497
if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &job->fence->flags) ||
drivers/gpu/drm/xe/xe_guc_submit.c
1537
if (!skip_timeout_check && !check_timeout(q, job))
drivers/gpu/drm/xe/xe_guc_submit.c
1593
xe_devcoredump(primary, job,
drivers/gpu/drm/xe/xe_guc_submit.c
1610
xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
drivers/gpu/drm/xe/xe_guc_submit.c
1613
trace_xe_sched_job_timedout(job);
drivers/gpu/drm/xe/xe_guc_submit.c
1616
xe_devcoredump(q, job,
drivers/gpu/drm/xe/xe_guc_submit.c
1618
xe_sched_job_seqno(job), xe_sched_job_lrc_seqno(job),
drivers/gpu/drm/xe/xe_guc_submit.c
1622
if (timeout_needs_gt_reset(q, job, skip_timeout_check)) {
drivers/gpu/drm/xe/xe_guc_submit.c
1623
if (!xe_sched_invalidate_job(job, 2)) {
drivers/gpu/drm/xe/xe_guc_submit.c
1638
xe_sched_job_set_error(job, err);
drivers/gpu/drm/xe/xe_guc_submit.c
2319
struct xe_sched_job *job = xe_sched_first_pending_job(sched);
drivers/gpu/drm/xe/xe_guc_submit.c
2322
if (job) {
drivers/gpu/drm/xe/xe_guc_submit.c
2323
if ((xe_sched_job_started(job) &&
drivers/gpu/drm/xe/xe_guc_submit.c
2324
!xe_sched_job_completed(job)) ||
drivers/gpu/drm/xe/xe_guc_submit.c
2325
xe_sched_invalidate_job(job, 2)) {
drivers/gpu/drm/xe/xe_guc_submit.c
2326
trace_xe_sched_job_ban(job);
drivers/gpu/drm/xe/xe_guc_submit.c
2477
struct xe_sched_job *job;
drivers/gpu/drm/xe/xe_guc_submit.c
2502
job = xe_sched_first_pending_job(sched);
drivers/gpu/drm/xe/xe_guc_submit.c
2503
if (job) {
drivers/gpu/drm/xe/xe_guc_submit.c
2504
job->restore_replay = true;
drivers/gpu/drm/xe/xe_guc_submit.c
2511
q->lrc[i]->ring.tail = job->ptrs[i].head;
drivers/gpu/drm/xe/xe_guc_submit.c
2558
struct xe_sched_job *job = xe_sched_first_pending_job(sched);
drivers/gpu/drm/xe/xe_guc_submit.c
2562
if (job) {
drivers/gpu/drm/xe/xe_guc_submit.c
2572
q->lrc[i]->ring.tail = job->ptrs[i].head;
drivers/gpu/drm/xe/xe_guc_submit.c
2611
struct xe_sched_job *job = NULL;
drivers/gpu/drm/xe/xe_guc_submit.c
2616
job = to_xe_sched_job(s_job);
drivers/gpu/drm/xe/xe_guc_submit.c
2617
restore_replay |= job->restore_replay;
drivers/gpu/drm/xe/xe_guc_submit.c
2620
q->guc->id, xe_sched_job_seqno(job));
drivers/gpu/drm/xe/xe_guc_submit.c
2622
q->ring_ops->emit_job(job);
drivers/gpu/drm/xe/xe_guc_submit.c
2623
job->restore_replay = true;
drivers/gpu/drm/xe/xe_guc_submit.c
2627
if (job)
drivers/gpu/drm/xe/xe_guc_submit.c
2628
job->last_replay = true;
drivers/gpu/drm/xe/xe_migrate.c
1027
job = xe_bb_create_migration_job(m->q, bb,
drivers/gpu/drm/xe/xe_migrate.c
1030
if (IS_ERR(job)) {
drivers/gpu/drm/xe/xe_migrate.c
1031
err = PTR_ERR(job);
drivers/gpu/drm/xe/xe_migrate.c
1035
xe_sched_job_add_migrate_flush(job, flush_flags | MI_INVALIDATE_TLB);
drivers/gpu/drm/xe/xe_migrate.c
1037
err = xe_sched_job_add_deps(job, src_bo->ttm.base.resv,
drivers/gpu/drm/xe/xe_migrate.c
1040
err = xe_sched_job_add_deps(job, dst_bo->ttm.base.resv,
drivers/gpu/drm/xe/xe_migrate.c
1047
xe_sched_job_arm(job);
drivers/gpu/drm/xe/xe_migrate.c
1049
fence = dma_fence_get(&job->drm.s_fence->finished);
drivers/gpu/drm/xe/xe_migrate.c
1050
xe_sched_job_push(job);
drivers/gpu/drm/xe/xe_migrate.c
1062
xe_sched_job_put(job);
drivers/gpu/drm/xe/xe_migrate.c
1419
struct xe_sched_job *job;
drivers/gpu/drm/xe/xe_migrate.c
1459
job = xe_bb_create_migration_job(m->q, bb, xe_migrate_batch_base(m, usm),
drivers/gpu/drm/xe/xe_migrate.c
1461
if (IS_ERR(job)) {
drivers/gpu/drm/xe/xe_migrate.c
1463
err = PTR_ERR(job);
drivers/gpu/drm/xe/xe_migrate.c
1467
xe_sched_job_add_migrate_flush(job, MI_INVALIDATE_TLB);
drivers/gpu/drm/xe/xe_migrate.c
1475
xe_sched_job_arm(job);
drivers/gpu/drm/xe/xe_migrate.c
1477
fence = dma_fence_get(&job->drm.s_fence->finished);
drivers/gpu/drm/xe/xe_migrate.c
1478
xe_sched_job_push(job);
drivers/gpu/drm/xe/xe_migrate.c
1635
struct xe_sched_job *job;
drivers/gpu/drm/xe/xe_migrate.c
1689
job = xe_bb_create_migration_job(m->q, bb,
drivers/gpu/drm/xe/xe_migrate.c
1692
if (IS_ERR(job)) {
drivers/gpu/drm/xe/xe_migrate.c
1693
err = PTR_ERR(job);
drivers/gpu/drm/xe/xe_migrate.c
1697
xe_sched_job_add_migrate_flush(job, flush_flags);
drivers/gpu/drm/xe/xe_migrate.c
1705
err = xe_sched_job_add_deps(job, bo->ttm.base.resv,
drivers/gpu/drm/xe/xe_migrate.c
1712
xe_sched_job_arm(job);
drivers/gpu/drm/xe/xe_migrate.c
1714
fence = dma_fence_get(&job->drm.s_fence->finished);
drivers/gpu/drm/xe/xe_migrate.c
1715
xe_sched_job_push(job);
drivers/gpu/drm/xe/xe_migrate.c
1726
xe_sched_job_put(job);
drivers/gpu/drm/xe/xe_migrate.c
1827
pt_update->job = NULL;
drivers/gpu/drm/xe/xe_migrate.c
1868
struct xe_sched_job *job;
drivers/gpu/drm/xe/xe_migrate.c
2013
job = xe_bb_create_migration_job(pt_update_ops->q, bb,
drivers/gpu/drm/xe/xe_migrate.c
2016
if (IS_ERR(job)) {
drivers/gpu/drm/xe/xe_migrate.c
2017
err = PTR_ERR(job);
drivers/gpu/drm/xe/xe_migrate.c
2021
xe_sched_job_add_migrate_flush(job, MI_INVALIDATE_TLB);
drivers/gpu/drm/xe/xe_migrate.c
2024
pt_update->job = job;
drivers/gpu/drm/xe/xe_migrate.c
2032
xe_sched_job_arm(job);
drivers/gpu/drm/xe/xe_migrate.c
2033
fence = dma_fence_get(&job->drm.s_fence->finished);
drivers/gpu/drm/xe/xe_migrate.c
2034
xe_sched_job_push(job);
drivers/gpu/drm/xe/xe_migrate.c
2045
xe_sched_job_put(job);
drivers/gpu/drm/xe/xe_migrate.c
2229
struct xe_sched_job *job;
drivers/gpu/drm/xe/xe_migrate.c
2299
job = xe_bb_create_migration_job(m->q, bb,
drivers/gpu/drm/xe/xe_migrate.c
2302
if (IS_ERR(job)) {
drivers/gpu/drm/xe/xe_migrate.c
2303
err = PTR_ERR(job);
drivers/gpu/drm/xe/xe_migrate.c
2307
xe_sched_job_add_migrate_flush(job, MI_INVALIDATE_TLB);
drivers/gpu/drm/xe/xe_migrate.c
2311
err = drm_sched_job_add_dependency(&job->drm, deps);
drivers/gpu/drm/xe/xe_migrate.c
2318
xe_sched_job_arm(job);
drivers/gpu/drm/xe/xe_migrate.c
2319
fence = dma_fence_get(&job->drm.s_fence->finished);
drivers/gpu/drm/xe/xe_migrate.c
2320
xe_sched_job_push(job);
drivers/gpu/drm/xe/xe_migrate.c
945
struct xe_sched_job *job;
drivers/gpu/drm/xe/xe_migrate.h
100
struct xe_sched_job *job;
drivers/gpu/drm/xe/xe_oa.c
652
struct xe_sched_job *job;
drivers/gpu/drm/xe/xe_oa.c
658
job = xe_bb_create_job(q, bb);
drivers/gpu/drm/xe/xe_oa.c
659
if (IS_ERR(job)) {
drivers/gpu/drm/xe/xe_oa.c
660
err = PTR_ERR(job);
drivers/gpu/drm/xe/xe_oa.c
663
job->ggtt = true;
drivers/gpu/drm/xe/xe_oa.c
667
err = xe_sync_entry_add_deps(&stream->syncs[i], job);
drivers/gpu/drm/xe/xe_oa.c
674
xe_sched_job_arm(job);
drivers/gpu/drm/xe/xe_oa.c
675
fence = dma_fence_get(&job->drm.s_fence->finished);
drivers/gpu/drm/xe/xe_oa.c
676
xe_sched_job_push(job);
drivers/gpu/drm/xe/xe_oa.c
682
xe_sched_job_put(job);
drivers/gpu/drm/xe/xe_pt.c
1264
static int job_test_add_deps(struct xe_sched_job *job,
drivers/gpu/drm/xe/xe_pt.c
1268
if (!job) {
drivers/gpu/drm/xe/xe_pt.c
1275
return xe_sched_job_add_deps(job, resv, usage);
drivers/gpu/drm/xe/xe_pt.c
1278
static int vma_add_deps(struct xe_vma *vma, struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_pt.c
1285
return job_test_add_deps(job, bo->ttm.base.resv,
drivers/gpu/drm/xe/xe_pt.c
1292
struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_pt.c
1306
err = vma_add_deps(op->map.vma, job);
drivers/gpu/drm/xe/xe_pt.c
1310
err = vma_add_deps(op->remap.prev, job);
drivers/gpu/drm/xe/xe_pt.c
1312
err = vma_add_deps(op->remap.next, job);
drivers/gpu/drm/xe/xe_pt.c
1317
err = vma_add_deps(gpuva_to_vma(op->base.prefetch.va), job);
drivers/gpu/drm/xe/xe_pt.c
1328
static int xe_pt_vm_dependencies(struct xe_sched_job *job,
drivers/gpu/drm/xe/xe_pt.c
1343
if (!job && !no_in_syncs(vops->syncs, vops->num_syncs))
drivers/gpu/drm/xe/xe_pt.c
1346
if (!job && !xe_exec_queue_is_idle(pt_update_ops->q))
drivers/gpu/drm/xe/xe_pt.c
1350
err = job_test_add_deps(job, xe_vm_resv(vm),
drivers/gpu/drm/xe/xe_pt.c
1368
if (!job)
drivers/gpu/drm/xe/xe_pt.c
1372
err = drm_sched_job_add_dependency(&job->drm, fence);
drivers/gpu/drm/xe/xe_pt.c
1383
err = op_add_deps(vm, op, job);
drivers/gpu/drm/xe/xe_pt.c
1388
for (i = 0; job && !err && i < vops->num_syncs; i++)
drivers/gpu/drm/xe/xe_pt.c
1389
err = xe_sync_entry_add_deps(&vops->syncs[i], job);
drivers/gpu/drm/xe/xe_pt.c
1391
if (job) {
drivers/gpu/drm/xe/xe_pt.c
1416
return xe_pt_vm_dependencies(pt_update->job, pt_update->ijob,
drivers/gpu/drm/xe/xe_pxp_submit.c
304
struct xe_sched_job *job;
drivers/gpu/drm/xe/xe_pxp_submit.c
314
job = xe_sched_job_create(pxp->vcs_exec.q, &addr);
drivers/gpu/drm/xe/xe_pxp_submit.c
315
if (IS_ERR(job))
drivers/gpu/drm/xe/xe_pxp_submit.c
316
return PTR_ERR(job);
drivers/gpu/drm/xe/xe_pxp_submit.c
318
xe_sched_job_arm(job);
drivers/gpu/drm/xe/xe_pxp_submit.c
319
fence = dma_fence_get(&job->drm.s_fence->finished);
drivers/gpu/drm/xe/xe_pxp_submit.c
320
xe_sched_job_push(job);
drivers/gpu/drm/xe/xe_pxp_submit.c
371
struct xe_sched_job *job;
drivers/gpu/drm/xe/xe_pxp_submit.c
377
job = xe_sched_job_create(q, &batch_addr);
drivers/gpu/drm/xe/xe_pxp_submit.c
378
if (IS_ERR(job))
drivers/gpu/drm/xe/xe_pxp_submit.c
379
return PTR_ERR(job);
drivers/gpu/drm/xe/xe_pxp_submit.c
381
xe_sched_job_arm(job);
drivers/gpu/drm/xe/xe_pxp_submit.c
382
fence = dma_fence_get(&job->drm.s_fence->finished);
drivers/gpu/drm/xe/xe_pxp_submit.c
383
xe_sched_job_push(job);
drivers/gpu/drm/xe/xe_ring_ops.c
211
static int emit_render_cache_flush(struct xe_sched_job *job, u32 *dw, int i)
drivers/gpu/drm/xe/xe_ring_ops.c
213
struct xe_exec_queue *q = job->q;
drivers/gpu/drm/xe/xe_ring_ops.c
234
else if (job->q->class == XE_ENGINE_CLASS_COMPUTE)
drivers/gpu/drm/xe/xe_ring_ops.c
261
static u32 get_ppgtt_flag(struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_ring_ops.c
263
if (job->q->vm && !job->ggtt)
drivers/gpu/drm/xe/xe_ring_ops.c
323
static void __emit_job_gen12_simple(struct xe_sched_job *job, struct xe_lrc *lrc,
drivers/gpu/drm/xe/xe_ring_ops.c
327
u32 ppgtt_flag = get_ppgtt_flag(job);
drivers/gpu/drm/xe/xe_ring_ops.c
328
struct xe_gt *gt = job->q->gt;
drivers/gpu/drm/xe/xe_ring_ops.c
332
if (job->ring_ops_force_reset)
drivers/gpu/drm/xe/xe_ring_ops.c
337
if (job->ring_ops_flush_tlb) {
drivers/gpu/drm/xe/xe_ring_ops.c
352
if (job->user_fence.used) {
drivers/gpu/drm/xe/xe_ring_ops.c
354
i = emit_store_imm_ppgtt_posted(job->user_fence.addr,
drivers/gpu/drm/xe/xe_ring_ops.c
355
job->user_fence.value,
drivers/gpu/drm/xe/xe_ring_ops.c
382
static void __emit_job_gen12_video(struct xe_sched_job *job, struct xe_lrc *lrc,
drivers/gpu/drm/xe/xe_ring_ops.c
386
u32 ppgtt_flag = get_ppgtt_flag(job);
drivers/gpu/drm/xe/xe_ring_ops.c
387
struct xe_gt *gt = job->q->gt;
drivers/gpu/drm/xe/xe_ring_ops.c
392
if (job->ring_ops_force_reset)
drivers/gpu/drm/xe/xe_ring_ops.c
400
i = emit_aux_table_inv(job->q->hwe, dw, i);
drivers/gpu/drm/xe/xe_ring_ops.c
402
if (job->ring_ops_flush_tlb)
drivers/gpu/drm/xe/xe_ring_ops.c
408
if (!job->ring_ops_flush_tlb)
drivers/gpu/drm/xe/xe_ring_ops.c
417
if (job->user_fence.used) {
drivers/gpu/drm/xe/xe_ring_ops.c
419
i = emit_store_imm_ppgtt_posted(job->user_fence.addr,
drivers/gpu/drm/xe/xe_ring_ops.c
420
job->user_fence.value,
drivers/gpu/drm/xe/xe_ring_ops.c
433
static void __emit_job_gen12_render_compute(struct xe_sched_job *job,
drivers/gpu/drm/xe/xe_ring_ops.c
439
u32 ppgtt_flag = get_ppgtt_flag(job);
drivers/gpu/drm/xe/xe_ring_ops.c
440
struct xe_gt *gt = job->q->gt;
drivers/gpu/drm/xe/xe_ring_ops.c
447
if (job->ring_ops_force_reset)
drivers/gpu/drm/xe/xe_ring_ops.c
457
i = emit_render_cache_flush(job, dw, i);
drivers/gpu/drm/xe/xe_ring_ops.c
462
else if (job->q->class == XE_ENGINE_CLASS_COMPUTE)
drivers/gpu/drm/xe/xe_ring_ops.c
466
i = emit_pipe_invalidate(job->q, mask_flags, job->ring_ops_flush_tlb, dw, i);
drivers/gpu/drm/xe/xe_ring_ops.c
469
i = emit_aux_table_inv(job->q->hwe, dw, i);
drivers/gpu/drm/xe/xe_ring_ops.c
481
i = emit_render_cache_flush(job, dw, i);
drivers/gpu/drm/xe/xe_ring_ops.c
483
if (job->user_fence.used)
drivers/gpu/drm/xe/xe_ring_ops.c
484
i = emit_store_imm_ppgtt_posted(job->user_fence.addr,
drivers/gpu/drm/xe/xe_ring_ops.c
485
job->user_fence.value,
drivers/gpu/drm/xe/xe_ring_ops.c
488
i = emit_pipe_imm_ggtt(job->q, xe_lrc_seqno_ggtt_addr(lrc), seqno, lacks_render, dw, i);
drivers/gpu/drm/xe/xe_ring_ops.c
497
static void emit_migration_job_gen12(struct xe_sched_job *job,
drivers/gpu/drm/xe/xe_ring_ops.c
501
struct xe_gt *gt = job->q->gt;
drivers/gpu/drm/xe/xe_ring_ops.c
508
xe_gt_assert(gt, !job->ring_ops_force_reset);
drivers/gpu/drm/xe/xe_ring_ops.c
516
i = emit_bb_start(job->ptrs[0].batch_addr, BIT(8), dw, i);
drivers/gpu/drm/xe/xe_ring_ops.c
519
i = emit_flush_invalidate(saddr, seqno, job->migrate_flush_flags, dw, i);
drivers/gpu/drm/xe/xe_ring_ops.c
522
i = emit_bb_start(job->ptrs[1].batch_addr, BIT(8), dw, i);
drivers/gpu/drm/xe/xe_ring_ops.c
525
job->migrate_flush_flags,
drivers/gpu/drm/xe/xe_ring_ops.c
530
xe_gt_assert(job->q->gt, i <= MAX_JOB_SIZE_DW);
drivers/gpu/drm/xe/xe_ring_ops.c
535
static void emit_job_gen12_gsc(struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_ring_ops.c
537
struct xe_gt *gt = job->q->gt;
drivers/gpu/drm/xe/xe_ring_ops.c
539
xe_gt_assert(gt, job->q->width <= 1); /* no parallel submission for GSCCS */
drivers/gpu/drm/xe/xe_ring_ops.c
541
__emit_job_gen12_simple(job, job->q->lrc[0],
drivers/gpu/drm/xe/xe_ring_ops.c
542
job->ptrs[0].batch_addr,
drivers/gpu/drm/xe/xe_ring_ops.c
543
&job->ptrs[0].head,
drivers/gpu/drm/xe/xe_ring_ops.c
544
xe_sched_job_lrc_seqno(job));
drivers/gpu/drm/xe/xe_ring_ops.c
547
static void emit_job_gen12_copy(struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_ring_ops.c
551
if (xe_sched_job_is_migration(job->q)) {
drivers/gpu/drm/xe/xe_ring_ops.c
552
emit_migration_job_gen12(job, job->q->lrc[0],
drivers/gpu/drm/xe/xe_ring_ops.c
553
&job->ptrs[0].head,
drivers/gpu/drm/xe/xe_ring_ops.c
554
xe_sched_job_lrc_seqno(job));
drivers/gpu/drm/xe/xe_ring_ops.c
558
for (i = 0; i < job->q->width; ++i)
drivers/gpu/drm/xe/xe_ring_ops.c
559
__emit_job_gen12_simple(job, job->q->lrc[i],
drivers/gpu/drm/xe/xe_ring_ops.c
560
job->ptrs[i].batch_addr,
drivers/gpu/drm/xe/xe_ring_ops.c
561
&job->ptrs[i].head,
drivers/gpu/drm/xe/xe_ring_ops.c
562
xe_sched_job_lrc_seqno(job));
drivers/gpu/drm/xe/xe_ring_ops.c
565
static void emit_job_gen12_video(struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_ring_ops.c
570
for (i = 0; i < job->q->width; ++i)
drivers/gpu/drm/xe/xe_ring_ops.c
571
__emit_job_gen12_video(job, job->q->lrc[i],
drivers/gpu/drm/xe/xe_ring_ops.c
572
job->ptrs[i].batch_addr,
drivers/gpu/drm/xe/xe_ring_ops.c
573
&job->ptrs[i].head,
drivers/gpu/drm/xe/xe_ring_ops.c
574
xe_sched_job_lrc_seqno(job));
drivers/gpu/drm/xe/xe_ring_ops.c
577
static void emit_job_gen12_render_compute(struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_ring_ops.c
581
for (i = 0; i < job->q->width; ++i)
drivers/gpu/drm/xe/xe_ring_ops.c
582
__emit_job_gen12_render_compute(job, job->q->lrc[i],
drivers/gpu/drm/xe/xe_ring_ops.c
583
job->ptrs[i].batch_addr,
drivers/gpu/drm/xe/xe_ring_ops.c
584
&job->ptrs[i].head,
drivers/gpu/drm/xe/xe_ring_ops.c
585
xe_sched_job_lrc_seqno(job));
drivers/gpu/drm/xe/xe_ring_ops_types.h
22
void (*emit_job)(struct xe_sched_job *job);
drivers/gpu/drm/xe/xe_sched_job.c
100
struct xe_sched_job *job;
drivers/gpu/drm/xe/xe_sched_job.c
108
job = job_alloc(xe_exec_queue_is_parallel(q) || is_migration);
drivers/gpu/drm/xe/xe_sched_job.c
109
if (!job)
drivers/gpu/drm/xe/xe_sched_job.c
112
job->q = q;
drivers/gpu/drm/xe/xe_sched_job.c
113
job->sample_timestamp = U64_MAX;
drivers/gpu/drm/xe/xe_sched_job.c
114
kref_init(&job->refcount);
drivers/gpu/drm/xe/xe_sched_job.c
115
xe_exec_queue_get(job->q);
drivers/gpu/drm/xe/xe_sched_job.c
117
err = drm_sched_job_init(&job->drm, q->entity, 1, NULL,
drivers/gpu/drm/xe/xe_sched_job.c
130
job->ptrs[i].lrc_fence = fence;
drivers/gpu/drm/xe/xe_sched_job.c
140
job->ptrs[i].chain_fence = chain;
drivers/gpu/drm/xe/xe_sched_job.c
148
job->ptrs[i].batch_addr = batch_addr[i];
drivers/gpu/drm/xe/xe_sched_job.c
151
xe_pm_runtime_get_noresume(job_to_xe(job));
drivers/gpu/drm/xe/xe_sched_job.c
152
trace_xe_sched_job_create(job);
drivers/gpu/drm/xe/xe_sched_job.c
153
return job;
drivers/gpu/drm/xe/xe_sched_job.c
156
xe_sched_job_free_fences(job);
drivers/gpu/drm/xe/xe_sched_job.c
157
drm_sched_job_cleanup(&job->drm);
drivers/gpu/drm/xe/xe_sched_job.c
160
job_free(job);
drivers/gpu/drm/xe/xe_sched_job.c
173
struct xe_sched_job *job =
drivers/gpu/drm/xe/xe_sched_job.c
175
struct xe_device *xe = job_to_xe(job);
drivers/gpu/drm/xe/xe_sched_job.c
176
struct xe_exec_queue *q = job->q;
drivers/gpu/drm/xe/xe_sched_job.c
178
xe_sched_job_free_fences(job);
drivers/gpu/drm/xe/xe_sched_job.c
179
dma_fence_put(job->fence);
drivers/gpu/drm/xe/xe_sched_job.c
180
drm_sched_job_cleanup(&job->drm);
drivers/gpu/drm/xe/xe_sched_job.c
181
job_free(job);
drivers/gpu/drm/xe/xe_sched_job.c
202
void xe_sched_job_set_error(struct xe_sched_job *job, int error)
drivers/gpu/drm/xe/xe_sched_job.c
204
if (xe_fence_set_error(job->fence, error))
drivers/gpu/drm/xe/xe_sched_job.c
207
if (dma_fence_is_chain(job->fence)) {
drivers/gpu/drm/xe/xe_sched_job.c
210
dma_fence_chain_for_each(iter, job->fence)
drivers/gpu/drm/xe/xe_sched_job.c
215
trace_xe_sched_job_set_error(job);
drivers/gpu/drm/xe/xe_sched_job.c
217
dma_fence_enable_sw_signaling(job->fence);
drivers/gpu/drm/xe/xe_sched_job.c
218
xe_hw_fence_irq_run(job->q->fence_irq);
drivers/gpu/drm/xe/xe_sched_job.c
221
bool xe_sched_job_started(struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_sched_job.c
223
struct dma_fence *fence = dma_fence_chain_contained(job->fence);
drivers/gpu/drm/xe/xe_sched_job.c
224
struct xe_lrc *lrc = job->q->lrc[0];
drivers/gpu/drm/xe/xe_sched_job.c
227
xe_sched_job_lrc_seqno(job),
drivers/gpu/drm/xe/xe_sched_job.c
231
bool xe_sched_job_completed(struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_sched_job.c
233
struct dma_fence *fence = dma_fence_chain_contained(job->fence);
drivers/gpu/drm/xe/xe_sched_job.c
234
struct xe_lrc *lrc = job->q->lrc[0];
drivers/gpu/drm/xe/xe_sched_job.c
242
xe_sched_job_lrc_seqno(job),
drivers/gpu/drm/xe/xe_sched_job.c
246
void xe_sched_job_arm(struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_sched_job.c
248
struct xe_exec_queue *q = job->q;
drivers/gpu/drm/xe/xe_sched_job.c
266
job->ring_ops_flush_tlb = true;
drivers/gpu/drm/xe/xe_sched_job.c
273
fence = job->ptrs[i].lrc_fence;
drivers/gpu/drm/xe/xe_sched_job.c
275
job->ptrs[i].lrc_fence = NULL;
drivers/gpu/drm/xe/xe_sched_job.c
277
job->lrc_seqno = fence->seqno;
drivers/gpu/drm/xe/xe_sched_job.c
280
xe_assert(gt_to_xe(q->gt), job->lrc_seqno == fence->seqno);
drivers/gpu/drm/xe/xe_sched_job.c
283
chain = job->ptrs[i - 1].chain_fence;
drivers/gpu/drm/xe/xe_sched_job.c
285
job->ptrs[i - 1].chain_fence = NULL;
drivers/gpu/drm/xe/xe_sched_job.c
289
job->fence = dma_fence_get(fence); /* Pairs with put in scheduler */
drivers/gpu/drm/xe/xe_sched_job.c
290
drm_sched_job_arm(&job->drm);
drivers/gpu/drm/xe/xe_sched_job.c
293
void xe_sched_job_push(struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_sched_job.c
295
xe_sched_job_get(job);
drivers/gpu/drm/xe/xe_sched_job.c
296
trace_xe_sched_job_exec(job);
drivers/gpu/drm/xe/xe_sched_job.c
297
drm_sched_entity_push_job(&job->drm);
drivers/gpu/drm/xe/xe_sched_job.c
298
xe_sched_job_put(job);
drivers/gpu/drm/xe/xe_sched_job.c
306
void xe_sched_job_init_user_fence(struct xe_sched_job *job,
drivers/gpu/drm/xe/xe_sched_job.c
312
job->user_fence.used = true;
drivers/gpu/drm/xe/xe_sched_job.c
313
job->user_fence.addr = sync->addr;
drivers/gpu/drm/xe/xe_sched_job.c
314
job->user_fence.value = sync->timeline_value;
drivers/gpu/drm/xe/xe_sched_job.c
318
xe_sched_job_snapshot_capture(struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_sched_job.c
320
struct xe_exec_queue *q = job->q;
drivers/gpu/drm/xe/xe_sched_job.c
333
xe_device_uncanonicalize_addr(xe, job->ptrs[i].batch_addr);
drivers/gpu/drm/xe/xe_sched_job.c
356
int xe_sched_job_add_deps(struct xe_sched_job *job, struct dma_resv *resv,
drivers/gpu/drm/xe/xe_sched_job.c
359
return drm_sched_job_add_resv_dependencies(&job->drm, resv, usage);
drivers/gpu/drm/xe/xe_sched_job.c
68
static void job_free(struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_sched_job.c
70
struct xe_exec_queue *q = job->q;
drivers/gpu/drm/xe/xe_sched_job.c
73
kmem_cache_free(xe_exec_queue_is_parallel(job->q) || is_migration ?
drivers/gpu/drm/xe/xe_sched_job.c
74
xe_sched_job_parallel_slab : xe_sched_job_slab, job);
drivers/gpu/drm/xe/xe_sched_job.c
77
static struct xe_device *job_to_xe(struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_sched_job.c
79
return gt_to_xe(job->q->gt);
drivers/gpu/drm/xe/xe_sched_job.c
83
static void xe_sched_job_free_fences(struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_sched_job.c
87
for (i = 0; i < job->q->width; ++i) {
drivers/gpu/drm/xe/xe_sched_job.c
88
struct xe_job_ptrs *ptrs = &job->ptrs[i];
drivers/gpu/drm/xe/xe_sched_job.h
31
static inline struct xe_sched_job *xe_sched_job_get(struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_sched_job.h
33
kref_get(&job->refcount);
drivers/gpu/drm/xe/xe_sched_job.h
34
return job;
drivers/gpu/drm/xe/xe_sched_job.h
44
static inline void xe_sched_job_put(struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_sched_job.h
46
kref_put(&job->refcount, xe_sched_job_destroy);
drivers/gpu/drm/xe/xe_sched_job.h
49
void xe_sched_job_set_error(struct xe_sched_job *job, int error);
drivers/gpu/drm/xe/xe_sched_job.h
50
static inline bool xe_sched_job_is_error(struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_sched_job.h
52
return job->fence->error < 0;
drivers/gpu/drm/xe/xe_sched_job.h
55
bool xe_sched_job_started(struct xe_sched_job *job);
drivers/gpu/drm/xe/xe_sched_job.h
56
bool xe_sched_job_completed(struct xe_sched_job *job);
drivers/gpu/drm/xe/xe_sched_job.h
58
void xe_sched_job_arm(struct xe_sched_job *job);
drivers/gpu/drm/xe/xe_sched_job.h
59
void xe_sched_job_push(struct xe_sched_job *job);
drivers/gpu/drm/xe/xe_sched_job.h
61
void xe_sched_job_init_user_fence(struct xe_sched_job *job,
drivers/gpu/drm/xe/xe_sched_job.h
70
static inline u32 xe_sched_job_seqno(struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_sched_job.h
72
return job->fence ? job->fence->seqno : 0;
drivers/gpu/drm/xe/xe_sched_job.h
75
static inline u32 xe_sched_job_lrc_seqno(struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_sched_job.h
77
return job->lrc_seqno;
drivers/gpu/drm/xe/xe_sched_job.h
81
xe_sched_job_add_migrate_flush(struct xe_sched_job *job, u32 flags)
drivers/gpu/drm/xe/xe_sched_job.h
83
job->migrate_flush_flags = flags;
drivers/gpu/drm/xe/xe_sched_job.h
88
struct xe_sched_job_snapshot *xe_sched_job_snapshot_capture(struct xe_sched_job *job);
drivers/gpu/drm/xe/xe_sched_job.h
92
int xe_sched_job_add_deps(struct xe_sched_job *job, struct dma_resv *resv,
drivers/gpu/drm/xe/xe_sync.c
234
int xe_sync_entry_add_deps(struct xe_sync_entry *sync, struct xe_sched_job *job)
drivers/gpu/drm/xe/xe_sync.c
237
return drm_sched_job_add_dependency(&job->drm,
drivers/gpu/drm/xe/xe_sync.h
29
struct xe_sched_job *job);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
102
struct xe_tlb_inval_job *job;
drivers/gpu/drm/xe/xe_tlb_inval_job.c
111
job = kmalloc_obj(*job);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
112
if (!job)
drivers/gpu/drm/xe/xe_tlb_inval_job.c
115
job->q = q;
drivers/gpu/drm/xe/xe_tlb_inval_job.c
116
job->vm = vm;
drivers/gpu/drm/xe/xe_tlb_inval_job.c
117
job->tlb_inval = tlb_inval;
drivers/gpu/drm/xe/xe_tlb_inval_job.c
118
job->start = start;
drivers/gpu/drm/xe/xe_tlb_inval_job.c
119
job->end = end;
drivers/gpu/drm/xe/xe_tlb_inval_job.c
120
job->fence_armed = false;
drivers/gpu/drm/xe/xe_tlb_inval_job.c
121
xe_page_reclaim_list_init(&job->prl);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
122
job->dep.ops = &dep_job_ops;
drivers/gpu/drm/xe/xe_tlb_inval_job.c
123
job->type = type;
drivers/gpu/drm/xe/xe_tlb_inval_job.c
124
kref_init(&job->refcount);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
133
job->fence = &ifence->base;
drivers/gpu/drm/xe/xe_tlb_inval_job.c
135
err = drm_sched_job_init(&job->dep.drm, entity, 1, NULL,
drivers/gpu/drm/xe/xe_tlb_inval_job.c
143
return job;
drivers/gpu/drm/xe/xe_tlb_inval_job.c
150
kfree(job);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
163
void xe_tlb_inval_job_add_page_reclaim(struct xe_tlb_inval_job *job,
drivers/gpu/drm/xe/xe_tlb_inval_job.c
166
struct xe_device *xe = gt_to_xe(job->q->gt);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
168
xe_gt_WARN_ON(job->q->gt, !xe->info.has_page_reclaim_hw_assist);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
169
job->prl = *prl;
drivers/gpu/drm/xe/xe_tlb_inval_job.c
171
xe_page_reclaim_entries_get(job->prl.entries);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
176
struct xe_tlb_inval_job *job = container_of(ref, typeof(*job),
drivers/gpu/drm/xe/xe_tlb_inval_job.c
179
container_of(job->fence, typeof(*ifence), base);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
180
struct xe_exec_queue *q = job->q;
drivers/gpu/drm/xe/xe_tlb_inval_job.c
182
struct xe_vm *vm = job->vm;
drivers/gpu/drm/xe/xe_tlb_inval_job.c
185
xe_page_reclaim_entries_put(job->prl.entries);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
187
if (!job->fence_armed)
drivers/gpu/drm/xe/xe_tlb_inval_job.c
191
dma_fence_put(job->fence);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
193
drm_sched_job_cleanup(&job->dep.drm);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
194
kfree(job);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
210
int xe_tlb_inval_job_alloc_dep(struct xe_tlb_inval_job *job)
drivers/gpu/drm/xe/xe_tlb_inval_job.c
212
xe_assert(gt_to_xe(job->q->gt), !xa_load(&job->dep.drm.dependencies, 0));
drivers/gpu/drm/xe/xe_tlb_inval_job.c
215
return drm_sched_job_add_dependency(&job->dep.drm,
drivers/gpu/drm/xe/xe_tlb_inval_job.c
233
struct dma_fence *xe_tlb_inval_job_push(struct xe_tlb_inval_job *job,
drivers/gpu/drm/xe/xe_tlb_inval_job.c
238
container_of(job->fence, typeof(*ifence), base);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
248
xe_assert(gt_to_xe(job->q->gt),
drivers/gpu/drm/xe/xe_tlb_inval_job.c
249
xa_load(&job->dep.drm.dependencies, 0) ==
drivers/gpu/drm/xe/xe_tlb_inval_job.c
253
ptr = xa_store(&job->dep.drm.dependencies, 0, fence,
drivers/gpu/drm/xe/xe_tlb_inval_job.c
255
xe_assert(gt_to_xe(job->q->gt), !xa_is_err(ptr));
drivers/gpu/drm/xe/xe_tlb_inval_job.c
258
xe_tlb_inval_job_get(job); /* Pairs with put in free_job */
drivers/gpu/drm/xe/xe_tlb_inval_job.c
259
job->fence_armed = true;
drivers/gpu/drm/xe/xe_tlb_inval_job.c
266
xe_migrate_job_lock(m, job->q);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
269
xe_tlb_inval_fence_init(job->tlb_inval, ifence, false);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
270
dma_fence_get(job->fence); /* Pairs with put in DRM scheduler */
drivers/gpu/drm/xe/xe_tlb_inval_job.c
272
drm_sched_job_arm(&job->dep.drm);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
277
dma_fence_get(&job->dep.drm.s_fence->finished);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
278
drm_sched_entity_push_job(&job->dep.drm);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
281
xe_exec_queue_tlb_inval_last_fence_set(job->q, job->vm,
drivers/gpu/drm/xe/xe_tlb_inval_job.c
282
&job->dep.drm.s_fence->finished,
drivers/gpu/drm/xe/xe_tlb_inval_job.c
283
job->type);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
285
xe_migrate_job_unlock(m, job->q);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
293
return &job->dep.drm.s_fence->finished;
drivers/gpu/drm/xe/xe_tlb_inval_job.c
302
void xe_tlb_inval_job_get(struct xe_tlb_inval_job *job)
drivers/gpu/drm/xe/xe_tlb_inval_job.c
304
kref_get(&job->refcount);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
315
void xe_tlb_inval_job_put(struct xe_tlb_inval_job *job)
drivers/gpu/drm/xe/xe_tlb_inval_job.c
317
if (!IS_ERR_OR_NULL(job))
drivers/gpu/drm/xe/xe_tlb_inval_job.c
318
kref_put(&job->refcount, xe_tlb_inval_job_destroy);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
50
struct xe_tlb_inval_job *job =
drivers/gpu/drm/xe/xe_tlb_inval_job.c
51
container_of(dep_job, typeof(*job), dep);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
53
container_of(job->fence, typeof(*ifence), base);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
56
if (xe_page_reclaim_list_valid(&job->prl)) {
drivers/gpu/drm/xe/xe_tlb_inval_job.c
57
prl_sa = xe_page_reclaim_create_prl_bo(job->tlb_inval, &job->prl, ifence);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
62
xe_tlb_inval_range(job->tlb_inval, ifence, job->start,
drivers/gpu/drm/xe/xe_tlb_inval_job.c
63
job->end, job->vm->usm.asid, prl_sa);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
65
return job->fence;
drivers/gpu/drm/xe/xe_tlb_inval_job.c
70
struct xe_tlb_inval_job *job =
drivers/gpu/drm/xe/xe_tlb_inval_job.c
71
container_of(dep_job, typeof(*job), dep);
drivers/gpu/drm/xe/xe_tlb_inval_job.c
74
xe_tlb_inval_job_put(job);
drivers/gpu/drm/xe/xe_tlb_inval_job.h
25
void xe_tlb_inval_job_add_page_reclaim(struct xe_tlb_inval_job *job,
drivers/gpu/drm/xe/xe_tlb_inval_job.h
28
int xe_tlb_inval_job_alloc_dep(struct xe_tlb_inval_job *job);
drivers/gpu/drm/xe/xe_tlb_inval_job.h
30
struct dma_fence *xe_tlb_inval_job_push(struct xe_tlb_inval_job *job,
drivers/gpu/drm/xe/xe_tlb_inval_job.h
34
void xe_tlb_inval_job_get(struct xe_tlb_inval_job *job);
drivers/gpu/drm/xe/xe_tlb_inval_job.h
36
void xe_tlb_inval_job_put(struct xe_tlb_inval_job *job);
drivers/gpu/drm/xe/xe_trace.h
232
TP_PROTO(struct xe_sched_job *job),
drivers/gpu/drm/xe/xe_trace.h
233
TP_ARGS(job),
drivers/gpu/drm/xe/xe_trace.h
236
__string(dev, __dev_name_eq(job->q))
drivers/gpu/drm/xe/xe_trace.h
250
__entry->seqno = xe_sched_job_seqno(job);
drivers/gpu/drm/xe/xe_trace.h
251
__entry->lrc_seqno = xe_sched_job_lrc_seqno(job);
drivers/gpu/drm/xe/xe_trace.h
252
__entry->gt_id = job->q->gt->info.id;
drivers/gpu/drm/xe/xe_trace.h
253
__entry->guc_id = job->q->guc->id;
drivers/gpu/drm/xe/xe_trace.h
255
atomic_read(&job->q->guc->state);
drivers/gpu/drm/xe/xe_trace.h
256
__entry->flags = job->q->flags;
drivers/gpu/drm/xe/xe_trace.h
257
__entry->error = job->fence ? job->fence->error : 0;
drivers/gpu/drm/xe/xe_trace.h
258
__entry->fence = job->fence;
drivers/gpu/drm/xe/xe_trace.h
259
__entry->batch_addr = (u64)job->ptrs[0].batch_addr;
drivers/gpu/drm/xe/xe_trace.h
270
TP_PROTO(struct xe_sched_job *job),
drivers/gpu/drm/xe/xe_trace.h
271
TP_ARGS(job)
drivers/gpu/drm/xe/xe_trace.h
275
TP_PROTO(struct xe_sched_job *job),
drivers/gpu/drm/xe/xe_trace.h
276
TP_ARGS(job)
drivers/gpu/drm/xe/xe_trace.h
280
TP_PROTO(struct xe_sched_job *job),
drivers/gpu/drm/xe/xe_trace.h
281
TP_ARGS(job)
drivers/gpu/drm/xe/xe_trace.h
285
TP_PROTO(struct xe_sched_job *job),
drivers/gpu/drm/xe/xe_trace.h
286
TP_ARGS(job)
drivers/gpu/drm/xe/xe_trace.h
290
TP_PROTO(struct xe_sched_job *job),
drivers/gpu/drm/xe/xe_trace.h
291
TP_ARGS(job)
drivers/gpu/drm/xe/xe_trace.h
295
TP_PROTO(struct xe_sched_job *job),
drivers/gpu/drm/xe/xe_trace.h
296
TP_ARGS(job)
drivers/gpu/drm/xe/xe_trace.h
300
TP_PROTO(struct xe_sched_job *job),
drivers/gpu/drm/xe/xe_trace.h
301
TP_ARGS(job)
drivers/gpu/host1x/cdma.c
272
struct host1x_job *job)
drivers/gpu/host1x/cdma.c
279
cdma->timeout.client = job->client;
drivers/gpu/host1x/cdma.c
280
cdma->timeout.syncpt = job->syncpt;
drivers/gpu/host1x/cdma.c
281
cdma->timeout.syncpt_val = job->syncpt_end;
drivers/gpu/host1x/cdma.c
285
msecs_to_jiffies(job->timeout));
drivers/gpu/host1x/cdma.c
311
struct host1x_job *job, *n;
drivers/gpu/host1x/cdma.c
317
list_for_each_entry_safe(job, n, &cdma->sync_queue, list) {
drivers/gpu/host1x/cdma.c
318
struct host1x_syncpt *sp = job->syncpt;
drivers/gpu/host1x/cdma.c
321
if (!host1x_syncpt_is_expired(sp, job->syncpt_end) &&
drivers/gpu/host1x/cdma.c
322
!job->cancelled) {
drivers/gpu/host1x/cdma.c
324
if (job->timeout)
drivers/gpu/host1x/cdma.c
325
cdma_start_timer_locked(cdma, job);
drivers/gpu/host1x/cdma.c
335
host1x_job_unpin(job);
drivers/gpu/host1x/cdma.c
338
if (job->num_slots) {
drivers/gpu/host1x/cdma.c
341
host1x_pushbuffer_pop(pb, job->num_slots);
drivers/gpu/host1x/cdma.c
347
list_del(&job->list);
drivers/gpu/host1x/cdma.c
348
host1x_job_put(job);
drivers/gpu/host1x/cdma.c
366
struct host1x_job *job, *next_job = NULL;
drivers/gpu/host1x/cdma.c
383
list_for_each_entry(job, &cdma->sync_queue, list) {
drivers/gpu/host1x/cdma.c
384
if (syncpt_val < job->syncpt_end) {
drivers/gpu/host1x/cdma.c
386
if (!list_is_last(&job->list, &cdma->sync_queue))
drivers/gpu/host1x/cdma.c
387
next_job = list_next_entry(job, list);
drivers/gpu/host1x/cdma.c
392
host1x_job_dump(dev, job);
drivers/gpu/host1x/cdma.c
396
job = NULL;
drivers/gpu/host1x/cdma.c
411
if (!job)
drivers/gpu/host1x/cdma.c
415
if (job->syncpt_recovery) {
drivers/gpu/host1x/cdma.c
420
job->timeout = 0;
drivers/gpu/host1x/cdma.c
422
syncpt_incrs = job->syncpt_end - syncpt_val;
drivers/gpu/host1x/cdma.c
425
host1x_job_dump(dev, job);
drivers/gpu/host1x/cdma.c
428
host1x_hw_cdma_timeout_cpu_incr(host1x, cdma, job->first_get,
drivers/gpu/host1x/cdma.c
429
syncpt_incrs, job->syncpt_end,
drivers/gpu/host1x/cdma.c
430
job->num_slots);
drivers/gpu/host1x/cdma.c
435
struct host1x_job *failed_job = job;
drivers/gpu/host1x/cdma.c
437
host1x_job_dump(dev, job);
drivers/gpu/host1x/cdma.c
439
host1x_syncpt_set_locked(job->syncpt);
drivers/gpu/host1x/cdma.c
442
list_for_each_entry_continue(job, &cdma->sync_queue, list) {
drivers/gpu/host1x/cdma.c
445
if (job->syncpt != failed_job->syncpt)
drivers/gpu/host1x/cdma.c
448
for (i = 0; i < job->num_slots; i++) {
drivers/gpu/host1x/cdma.c
449
unsigned int slot = (job->first_get/8 + i) %
drivers/gpu/host1x/cdma.c
468
unsigned int next_job = (job->first_get/8 + job->num_slots)
drivers/gpu/host1x/cdma.c
478
job->cancelled = true;
drivers/gpu/host1x/cdma.c
546
int host1x_cdma_begin(struct host1x_cdma *cdma, struct host1x_job *job)
drivers/gpu/host1x/cdma.c
557
if (job->syncpt->locked) {
drivers/gpu/host1x/cdma.c
562
if (job->timeout) {
drivers/gpu/host1x/cdma.c
582
trace_host1x_cdma_begin(dev_name(job->channel->dev));
drivers/gpu/host1x/cdma.c
661
struct host1x_job *job)
drivers/gpu/host1x/cdma.c
668
job->first_get = cdma->first_get;
drivers/gpu/host1x/cdma.c
669
job->num_slots = cdma->slots_used;
drivers/gpu/host1x/cdma.c
670
host1x_job_get(job);
drivers/gpu/host1x/cdma.c
671
list_add_tail(&job->list, &cdma->sync_queue);
drivers/gpu/host1x/cdma.c
674
if (job->timeout && idle)
drivers/gpu/host1x/cdma.c
675
cdma_start_timer_locked(cdma, job);
drivers/gpu/host1x/cdma.c
677
trace_host1x_cdma_end(dev_name(job->channel->dev));
drivers/gpu/host1x/cdma.h
82
int host1x_cdma_begin(struct host1x_cdma *cdma, struct host1x_job *job);
drivers/gpu/host1x/cdma.h
86
void host1x_cdma_end(struct host1x_cdma *cdma, struct host1x_job *job);
drivers/gpu/host1x/channel.c
40
int host1x_job_submit(struct host1x_job *job)
drivers/gpu/host1x/channel.c
42
struct host1x *host = dev_get_drvdata(job->channel->dev->parent);
drivers/gpu/host1x/channel.c
44
return host1x_hw_channel_submit(host, job);
drivers/gpu/host1x/dev.h
272
struct host1x_job *job)
drivers/gpu/host1x/dev.h
274
return host->channel_op->submit(job);
drivers/gpu/host1x/dev.h
35
int (*submit)(struct host1x_job *job);
drivers/gpu/host1x/hw/channel_hw.c
109
static void submit_gathers(struct host1x_job *job, struct host1x_job_cmd *cmds, u32 num_cmds,
drivers/gpu/host1x/hw/channel_hw.c
112
struct host1x_cdma *cdma = &job->channel->cdma;
drivers/gpu/host1x/hw/channel_hw.c
114
struct device *dev = job->channel->dev;
drivers/gpu/host1x/hw/channel_hw.c
128
submit_wait(job, cmd->wait.id, threshold);
drivers/gpu/host1x/hw/channel_hw.c
129
submit_setclass(job, cmd->wait.next_class);
drivers/gpu/host1x/hw/channel_hw.c
161
static inline void synchronize_syncpt_base(struct host1x_job *job)
drivers/gpu/host1x/hw/channel_hw.c
163
struct host1x_syncpt *sp = job->syncpt;
drivers/gpu/host1x/hw/channel_hw.c
170
host1x_cdma_push(&job->channel->cdma,
drivers/gpu/host1x/hw/channel_hw.c
210
static void channel_program_cdma(struct host1x_job *job)
drivers/gpu/host1x/hw/channel_hw.c
212
struct host1x_cdma *cdma = &job->channel->cdma;
drivers/gpu/host1x/hw/channel_hw.c
213
struct host1x_syncpt *sp = job->syncpt;
drivers/gpu/host1x/hw/channel_hw.c
219
if (job->num_cmds == 0)
drivers/gpu/host1x/hw/channel_hw.c
221
if (!job->cmds[0].is_wait || job->cmds[0].wait.relative)
drivers/gpu/host1x/hw/channel_hw.c
231
for (i = 0; i < job->num_cmds; i++) {
drivers/gpu/host1x/hw/channel_hw.c
232
struct host1x_job_cmd *cmd = &job->cmds[i];
drivers/gpu/host1x/hw/channel_hw.c
237
submit_wait(job, cmd->wait.id, cmd->wait.threshold);
drivers/gpu/host1x/hw/channel_hw.c
247
host1x_opcode_acquire_mlock(job->class),
drivers/gpu/host1x/hw/channel_hw.c
248
host1x_opcode_setclass(job->class, 0, 0),
drivers/gpu/host1x/hw/channel_hw.c
250
host1x_opcode_setstreamid(job->engine_streamid_offset / 4));
drivers/gpu/host1x/hw/channel_hw.c
254
host1x_cdma_push(&job->channel->cdma,
drivers/gpu/host1x/hw/channel_hw.c
256
HOST1X_UCLASS_INCR_SYNCPT_INDX_F(job->syncpt->id) |
drivers/gpu/host1x/hw/channel_hw.c
258
submit_wait(job, job->syncpt->id, fence);
drivers/gpu/host1x/hw/channel_hw.c
259
submit_setclass(job, job->class);
drivers/gpu/host1x/hw/channel_hw.c
262
job->syncpt_end = host1x_syncpt_incr_max(sp, job->syncpt_incrs);
drivers/gpu/host1x/hw/channel_hw.c
263
submit_gathers(job, job->cmds + i, job->num_cmds - i, job->syncpt_end - job->syncpt_incrs);
drivers/gpu/host1x/hw/channel_hw.c
267
host1x_cdma_push(&job->channel->cdma,
drivers/gpu/host1x/hw/channel_hw.c
269
HOST1X_UCLASS_INCR_SYNCPT_INDX_F(job->syncpt->id) |
drivers/gpu/host1x/hw/channel_hw.c
271
submit_wait(job, job->syncpt->id, fence);
drivers/gpu/host1x/hw/channel_hw.c
275
HOST1X_OPCODE_NOP, host1x_opcode_release_mlock(job->class));
drivers/gpu/host1x/hw/channel_hw.c
277
if (job->serialize) {
drivers/gpu/host1x/hw/channel_hw.c
285
host1x_class_host_wait_syncpt(job->syncpt->id,
drivers/gpu/host1x/hw/channel_hw.c
291
synchronize_syncpt_base(job);
drivers/gpu/host1x/hw/channel_hw.c
294
if (job->class)
drivers/gpu/host1x/hw/channel_hw.c
296
host1x_opcode_setclass(job->class, 0, 0),
drivers/gpu/host1x/hw/channel_hw.c
299
job->syncpt_end = host1x_syncpt_incr_max(sp, job->syncpt_incrs);
drivers/gpu/host1x/hw/channel_hw.c
301
submit_gathers(job, job->cmds, job->num_cmds, job->syncpt_end - job->syncpt_incrs);
drivers/gpu/host1x/hw/channel_hw.c
307
struct host1x_job *job = container_of(cb, struct host1x_job, fence_cb);
drivers/gpu/host1x/hw/channel_hw.c
310
host1x_cdma_update(&job->channel->cdma);
drivers/gpu/host1x/hw/channel_hw.c
313
static int channel_submit(struct host1x_job *job)
drivers/gpu/host1x/hw/channel_hw.c
315
struct host1x_channel *ch = job->channel;
drivers/gpu/host1x/hw/channel_hw.c
316
struct host1x_syncpt *sp = job->syncpt;
drivers/gpu/host1x/hw/channel_hw.c
323
job->num_cmds, job->num_relocs,
drivers/gpu/host1x/hw/channel_hw.c
324
job->syncpt->id, job->syncpt_incrs);
drivers/gpu/host1x/hw/channel_hw.c
327
prev_max = job->syncpt_end = host1x_syncpt_read_max(sp);
drivers/gpu/host1x/hw/channel_hw.c
339
err = host1x_cdma_begin(&ch->cdma, job);
drivers/gpu/host1x/hw/channel_hw.c
345
channel_program_cdma(job);
drivers/gpu/host1x/hw/channel_hw.c
352
job->fence = host1x_fence_create(sp, syncval, true);
drivers/gpu/host1x/hw/channel_hw.c
353
if (WARN(IS_ERR(job->fence), "Failed to create submit complete fence")) {
drivers/gpu/host1x/hw/channel_hw.c
354
job->fence = NULL;
drivers/gpu/host1x/hw/channel_hw.c
356
err = dma_fence_add_callback(job->fence, &job->fence_cb,
drivers/gpu/host1x/hw/channel_hw.c
361
host1x_cdma_end(&ch->cdma, job);
drivers/gpu/host1x/hw/channel_hw.c
50
static void submit_wait(struct host1x_job *job, u32 id, u32 threshold)
drivers/gpu/host1x/hw/channel_hw.c
52
struct host1x_cdma *cdma = &job->channel->cdma;
drivers/gpu/host1x/hw/channel_hw.c
79
static void submit_setclass(struct host1x_job *job, u32 next_class)
drivers/gpu/host1x/hw/channel_hw.c
81
struct host1x_cdma *cdma = &job->channel->cdma;
drivers/gpu/host1x/hw/channel_hw.c
91
if (job->memory_context)
drivers/gpu/host1x/hw/channel_hw.c
92
stream_id = job->memory_context->stream_id;
drivers/gpu/host1x/hw/channel_hw.c
94
stream_id = job->engine_fallback_streamid;
drivers/gpu/host1x/hw/channel_hw.c
99
host1x_opcode_setstreamid(job->engine_streamid_offset / 4),
drivers/gpu/host1x/hw/debug_hw.c
205
struct host1x_job *job;
drivers/gpu/host1x/hw/debug_hw.c
207
list_for_each_entry(job, &cdma->sync_queue, list) {
drivers/gpu/host1x/hw/debug_hw.c
211
job->syncpt->id, job->syncpt_end, job->timeout,
drivers/gpu/host1x/hw/debug_hw.c
212
job->num_slots, job->num_unpins);
drivers/gpu/host1x/hw/debug_hw.c
214
show_gather(o, pb->dma + job->first_get, job->num_slots * 2, cdma,
drivers/gpu/host1x/hw/debug_hw.c
217
for (i = 0; i < job->num_cmds; i++) {
drivers/gpu/host1x/hw/debug_hw.c
221
if (job->cmds[i].is_wait)
drivers/gpu/host1x/hw/debug_hw.c
224
g = &job->cmds[i].gather;
drivers/gpu/host1x/hw/debug_hw.c
226
if (job->gather_copy_mapped)
drivers/gpu/host1x/hw/debug_hw.c
227
mapped = (u32 *)job->gather_copy_mapped;
drivers/gpu/host1x/hw/debug_hw.c
242
if (!job->gather_copy_mapped)
drivers/gpu/host1x/job.c
101
if (job->syncpt)
drivers/gpu/host1x/job.c
102
host1x_syncpt_put(job->syncpt);
drivers/gpu/host1x/job.c
104
kfree(job);
drivers/gpu/host1x/job.c
107
void host1x_job_put(struct host1x_job *job)
drivers/gpu/host1x/job.c
109
kref_put(&job->ref, job_free);
drivers/gpu/host1x/job.c
113
void host1x_job_add_gather(struct host1x_job *job, struct host1x_bo *bo,
drivers/gpu/host1x/job.c
116
struct host1x_job_gather *gather = &job->cmds[job->num_cmds].gather;
drivers/gpu/host1x/job.c
122
job->num_cmds++;
drivers/gpu/host1x/job.c
126
void host1x_job_add_wait(struct host1x_job *job, u32 id, u32 thresh,
drivers/gpu/host1x/job.c
129
struct host1x_job_cmd *cmd = &job->cmds[job->num_cmds];
drivers/gpu/host1x/job.c
137
job->num_cmds++;
drivers/gpu/host1x/job.c
141
static unsigned int pin_job(struct host1x *host, struct host1x_job *job)
drivers/gpu/host1x/job.c
144
struct host1x_client *client = job->client;
drivers/gpu/host1x/job.c
150
job->num_unpins = 0;
drivers/gpu/host1x/job.c
152
for (i = 0; i < job->num_relocs; i++) {
drivers/gpu/host1x/job.c
153
struct host1x_reloc *reloc = &job->relocs[i];
drivers/gpu/host1x/job.c
200
job->addr_phys[job->num_unpins] = map->phys;
drivers/gpu/host1x/job.c
201
job->unpins[job->num_unpins].map = map;
drivers/gpu/host1x/job.c
202
job->num_unpins++;
drivers/gpu/host1x/job.c
209
if (job->enable_firewall)
drivers/gpu/host1x/job.c
212
for (i = 0; i < job->num_cmds; i++) {
drivers/gpu/host1x/job.c
220
if (job->cmds[i].is_wait)
drivers/gpu/host1x/job.c
223
g = &job->cmds[i].gather;
drivers/gpu/host1x/job.c
265
job->addr_phys[job->num_unpins] = map->phys;
drivers/gpu/host1x/job.c
266
job->unpins[job->num_unpins].map = map;
drivers/gpu/host1x/job.c
267
job->num_unpins++;
drivers/gpu/host1x/job.c
269
job->gather_addr_phys[i] = map->phys;
drivers/gpu/host1x/job.c
277
host1x_job_unpin(job);
drivers/gpu/host1x/job.c
281
static int do_relocs(struct host1x_job *job, struct host1x_job_gather *g)
drivers/gpu/host1x/job.c
288
for (i = 0; i < job->num_relocs; i++) {
drivers/gpu/host1x/job.c
289
struct host1x_reloc *reloc = &job->relocs[i];
drivers/gpu/host1x/job.c
290
u32 reloc_addr = (job->reloc_addr_phys[i] +
drivers/gpu/host1x/job.c
298
if (job->enable_firewall) {
drivers/gpu/host1x/job.c
299
target = (u32 *)job->gather_copy_mapped +
drivers/gpu/host1x/job.c
30
struct host1x_job *job = NULL;
drivers/gpu/host1x/job.c
341
struct host1x_job *job;
drivers/gpu/host1x/job.c
359
if (!fw->job->is_addr_reg)
drivers/gpu/host1x/job.c
362
if (fw->job->is_addr_reg(fw->dev, fw->class, offset)) {
drivers/gpu/host1x/job.c
378
if (!fw->job->is_valid_class) {
drivers/gpu/host1x/job.c
382
if (!fw->job->is_valid_class(fw->class))
drivers/gpu/host1x/job.c
460
u32 *cmdbuf_base = (u32 *)fw->job->gather_copy_mapped +
drivers/gpu/host1x/job.c
51
mem = job = kzalloc(total, GFP_KERNEL);
drivers/gpu/host1x/job.c
52
if (!job)
drivers/gpu/host1x/job.c
526
static inline int copy_gathers(struct device *host, struct host1x_job *job,
drivers/gpu/host1x/job.c
534
fw.job = job;
drivers/gpu/host1x/job.c
536
fw.reloc = job->relocs;
drivers/gpu/host1x/job.c
537
fw.num_relocs = job->num_relocs;
drivers/gpu/host1x/job.c
538
fw.class = job->class;
drivers/gpu/host1x/job.c
540
for (i = 0; i < job->num_cmds; i++) {
drivers/gpu/host1x/job.c
543
if (job->cmds[i].is_wait)
drivers/gpu/host1x/job.c
546
g = &job->cmds[i].gather;
drivers/gpu/host1x/job.c
55
job->enable_firewall = enable_firewall;
drivers/gpu/host1x/job.c
555
job->gather_copy_mapped = dma_alloc_wc(host, size, &job->gather_copy,
drivers/gpu/host1x/job.c
559
if (!job->gather_copy_mapped)
drivers/gpu/host1x/job.c
560
job->gather_copy_mapped = dma_alloc_wc(host, size,
drivers/gpu/host1x/job.c
561
&job->gather_copy,
drivers/gpu/host1x/job.c
563
if (!job->gather_copy_mapped)
drivers/gpu/host1x/job.c
566
job->gather_copy_size = size;
drivers/gpu/host1x/job.c
568
for (i = 0; i < job->num_cmds; i++) {
drivers/gpu/host1x/job.c
57
kref_init(&job->ref);
drivers/gpu/host1x/job.c
572
if (job->cmds[i].is_wait)
drivers/gpu/host1x/job.c
574
g = &job->cmds[i].gather;
drivers/gpu/host1x/job.c
578
memcpy(job->gather_copy_mapped + offset, gather + g->offset,
drivers/gpu/host1x/job.c
58
job->channel = ch;
drivers/gpu/host1x/job.c
583
g->base = job->gather_copy;
drivers/gpu/host1x/job.c
600
int host1x_job_pin(struct host1x_job *job, struct device *dev)
drivers/gpu/host1x/job.c
607
err = pin_job(host, job);
drivers/gpu/host1x/job.c
611
if (job->enable_firewall) {
drivers/gpu/host1x/job.c
612
err = copy_gathers(host->dev, job, dev);
drivers/gpu/host1x/job.c
618
for (i = 0; i < job->num_cmds; i++) {
drivers/gpu/host1x/job.c
62
job->relocs = num_relocs ? mem : NULL;
drivers/gpu/host1x/job.c
621
if (job->cmds[i].is_wait)
drivers/gpu/host1x/job.c
623
g = &job->cmds[i].gather;
drivers/gpu/host1x/job.c
630
if (!job->enable_firewall)
drivers/gpu/host1x/job.c
631
g->base = job->gather_addr_phys[i];
drivers/gpu/host1x/job.c
633
for (j = i + 1; j < job->num_cmds; j++) {
drivers/gpu/host1x/job.c
634
if (!job->cmds[j].is_wait &&
drivers/gpu/host1x/job.c
635
job->cmds[j].gather.bo == g->bo) {
drivers/gpu/host1x/job.c
636
job->cmds[j].gather.handled = true;
drivers/gpu/host1x/job.c
637
job->cmds[j].gather.base = g->base;
drivers/gpu/host1x/job.c
64
job->unpins = num_unpins ? mem : NULL;
drivers/gpu/host1x/job.c
641
err = do_relocs(job, g);
drivers/gpu/host1x/job.c
648
host1x_job_unpin(job);
drivers/gpu/host1x/job.c
655
void host1x_job_unpin(struct host1x_job *job)
drivers/gpu/host1x/job.c
657
struct host1x *host = dev_get_drvdata(job->channel->dev->parent);
drivers/gpu/host1x/job.c
66
job->cmds = num_cmdbufs ? mem : NULL;
drivers/gpu/host1x/job.c
660
for (i = 0; i < job->num_unpins; i++) {
drivers/gpu/host1x/job.c
661
struct host1x_bo_mapping *map = job->unpins[i].map;
drivers/gpu/host1x/job.c
664
if (!job->enable_firewall && map->size && host->domain) {
drivers/gpu/host1x/job.c
665
iommu_unmap(host->domain, job->addr_phys[i], map->size);
drivers/gpu/host1x/job.c
666
free_iova(&host->iova, iova_pfn(&host->iova, job->addr_phys[i]));
drivers/gpu/host1x/job.c
673
job->num_unpins = 0;
drivers/gpu/host1x/job.c
675
if (job->gather_copy_size)
drivers/gpu/host1x/job.c
676
dma_free_wc(host->dev, job->gather_copy_size,
drivers/gpu/host1x/job.c
677
job->gather_copy_mapped, job->gather_copy);
drivers/gpu/host1x/job.c
68
job->addr_phys = num_unpins ? mem : NULL;
drivers/gpu/host1x/job.c
684
void host1x_job_dump(struct device *dev, struct host1x_job *job)
drivers/gpu/host1x/job.c
686
dev_dbg(dev, " SYNCPT_ID %d\n", job->syncpt->id);
drivers/gpu/host1x/job.c
687
dev_dbg(dev, " SYNCPT_VAL %d\n", job->syncpt_end);
drivers/gpu/host1x/job.c
688
dev_dbg(dev, " FIRST_GET 0x%x\n", job->first_get);
drivers/gpu/host1x/job.c
689
dev_dbg(dev, " TIMEOUT %d\n", job->timeout);
drivers/gpu/host1x/job.c
690
dev_dbg(dev, " NUM_SLOTS %d\n", job->num_slots);
drivers/gpu/host1x/job.c
691
dev_dbg(dev, " NUM_HANDLES %d\n", job->num_unpins);
drivers/gpu/host1x/job.c
70
job->reloc_addr_phys = job->addr_phys;
drivers/gpu/host1x/job.c
71
job->gather_addr_phys = &job->addr_phys[num_relocs];
drivers/gpu/host1x/job.c
73
return job;
drivers/gpu/host1x/job.c
77
struct host1x_job *host1x_job_get(struct host1x_job *job)
drivers/gpu/host1x/job.c
79
kref_get(&job->ref);
drivers/gpu/host1x/job.c
80
return job;
drivers/gpu/host1x/job.c
86
struct host1x_job *job = container_of(ref, struct host1x_job, ref);
drivers/gpu/host1x/job.c
88
if (job->release)
drivers/gpu/host1x/job.c
89
job->release(job);
drivers/gpu/host1x/job.c
91
if (job->fence) {
drivers/gpu/host1x/job.c
97
dma_fence_remove_callback(job->fence, &job->fence_cb);
drivers/gpu/host1x/job.c
98
dma_fence_put(job->fence);
drivers/gpu/host1x/job.h
44
void host1x_job_dump(struct device *dev, struct host1x_job *job);
drivers/md/dm-kcopyd.c
420
struct kcopyd_job *job;
drivers/md/dm-kcopyd.c
426
list_for_each_entry(job, jobs, list) {
drivers/md/dm-kcopyd.c
427
if (job->op == REQ_OP_READ ||
drivers/md/dm-kcopyd.c
428
!(job->flags & BIT(DM_KCOPYD_WRITE_SEQ))) {
drivers/md/dm-kcopyd.c
429
list_del(&job->list);
drivers/md/dm-kcopyd.c
430
return job;
drivers/md/dm-kcopyd.c
433
if (job->write_offset == job->master_job->write_offset) {
drivers/md/dm-kcopyd.c
434
job->master_job->write_offset += job->source.count;
drivers/md/dm-kcopyd.c
435
list_del(&job->list);
drivers/md/dm-kcopyd.c
436
return job;
drivers/md/dm-kcopyd.c
446
struct kcopyd_job *job = NULL;
drivers/md/dm-kcopyd.c
452
job = pop_io_job(jobs, kc);
drivers/md/dm-kcopyd.c
454
job = list_entry(jobs->next, struct kcopyd_job, list);
drivers/md/dm-kcopyd.c
455
list_del(&job->list);
drivers/md/dm-kcopyd.c
460
return job;
drivers/md/dm-kcopyd.c
463
static void push(struct list_head *jobs, struct kcopyd_job *job)
drivers/md/dm-kcopyd.c
466
struct dm_kcopyd_client *kc = job->kc;
drivers/md/dm-kcopyd.c
469
list_add_tail(&job->list, jobs);
drivers/md/dm-kcopyd.c
474
static void push_head(struct list_head *jobs, struct kcopyd_job *job)
drivers/md/dm-kcopyd.c
476
struct dm_kcopyd_client *kc = job->kc;
drivers/md/dm-kcopyd.c
479
list_add(&job->list, jobs);
drivers/md/dm-kcopyd.c
492
static int run_complete_job(struct kcopyd_job *job)
drivers/md/dm-kcopyd.c
494
void *context = job->context;
drivers/md/dm-kcopyd.c
495
int read_err = job->read_err;
drivers/md/dm-kcopyd.c
496
unsigned long write_err = job->write_err;
drivers/md/dm-kcopyd.c
497
dm_kcopyd_notify_fn fn = job->fn;
drivers/md/dm-kcopyd.c
498
struct dm_kcopyd_client *kc = job->kc;
drivers/md/dm-kcopyd.c
500
if (job->pages && job->pages != &zero_page_list)
drivers/md/dm-kcopyd.c
501
kcopyd_put_pages(kc, job->pages);
drivers/md/dm-kcopyd.c
506
if (job->master_job == job) {
drivers/md/dm-kcopyd.c
507
mutex_destroy(&job->lock);
drivers/md/dm-kcopyd.c
508
mempool_free(job, &kc->job_pool);
drivers/md/dm-kcopyd.c
522
struct kcopyd_job *job = context;
drivers/md/dm-kcopyd.c
523
struct dm_kcopyd_client *kc = job->kc;
drivers/md/dm-kcopyd.c
528
if (op_is_write(job->op))
drivers/md/dm-kcopyd.c
529
job->write_err |= error;
drivers/md/dm-kcopyd.c
531
job->read_err = 1;
drivers/md/dm-kcopyd.c
533
if (!(job->flags & BIT(DM_KCOPYD_IGNORE_ERROR))) {
drivers/md/dm-kcopyd.c
534
push(&kc->complete_jobs, job);
drivers/md/dm-kcopyd.c
540
if (op_is_write(job->op))
drivers/md/dm-kcopyd.c
541
push(&kc->complete_jobs, job);
drivers/md/dm-kcopyd.c
544
job->op = REQ_OP_WRITE;
drivers/md/dm-kcopyd.c
545
push(&kc->io_jobs, job);
drivers/md/dm-kcopyd.c
555
static int run_io_job(struct kcopyd_job *job)
drivers/md/dm-kcopyd.c
559
.bi_opf = job->op,
drivers/md/dm-kcopyd.c
561
.mem.ptr.pl = job->pages,
drivers/md/dm-kcopyd.c
564
.notify.context = job,
drivers/md/dm-kcopyd.c
565
.client = job->kc->io_client,
drivers/md/dm-kcopyd.c
572
if (job->flags & BIT(DM_KCOPYD_WRITE_SEQ) &&
drivers/md/dm-kcopyd.c
573
job->master_job->write_err) {
drivers/md/dm-kcopyd.c
574
job->write_err = job->master_job->write_err;
drivers/md/dm-kcopyd.c
578
io_job_start(job->kc->throttle);
drivers/md/dm-kcopyd.c
580
if (job->op == REQ_OP_READ)
drivers/md/dm-kcopyd.c
581
r = dm_io(&io_req, 1, &job->source, NULL, IOPRIO_DEFAULT);
drivers/md/dm-kcopyd.c
583
r = dm_io(&io_req, job->num_dests, job->dests, NULL, IOPRIO_DEFAULT);
drivers/md/dm-kcopyd.c
588
static int run_pages_job(struct kcopyd_job *job)
drivers/md/dm-kcopyd.c
591
unsigned int nr_pages = dm_div_up(job->dests[0].count, PAGE_SIZE >> 9);
drivers/md/dm-kcopyd.c
593
r = kcopyd_get_pages(job->kc, nr_pages, &job->pages);
drivers/md/dm-kcopyd.c
596
push(&job->kc->io_jobs, job);
drivers/md/dm-kcopyd.c
614
struct kcopyd_job *job;
drivers/md/dm-kcopyd.c
617
while ((job = pop(jobs, kc))) {
drivers/md/dm-kcopyd.c
619
r = fn(job);
drivers/md/dm-kcopyd.c
623
if (op_is_write(job->op))
drivers/md/dm-kcopyd.c
624
job->write_err = (unsigned long) -1L;
drivers/md/dm-kcopyd.c
626
job->read_err = 1;
drivers/md/dm-kcopyd.c
627
push(&kc->complete_jobs, job);
drivers/md/dm-kcopyd.c
637
push_head(jobs, job);
drivers/md/dm-kcopyd.c
679
static void dispatch_job(struct kcopyd_job *job)
drivers/md/dm-kcopyd.c
681
struct dm_kcopyd_client *kc = job->kc;
drivers/md/dm-kcopyd.c
684
if (unlikely(!job->source.count))
drivers/md/dm-kcopyd.c
685
push(&kc->callback_jobs, job);
drivers/md/dm-kcopyd.c
686
else if (job->pages == &zero_page_list)
drivers/md/dm-kcopyd.c
687
push(&kc->io_jobs, job);
drivers/md/dm-kcopyd.c
689
push(&kc->pages_jobs, job);
drivers/md/dm-kcopyd.c
700
struct kcopyd_job *job = sub_job->master_job;
drivers/md/dm-kcopyd.c
701
struct dm_kcopyd_client *kc = job->kc;
drivers/md/dm-kcopyd.c
703
mutex_lock(&job->lock);
drivers/md/dm-kcopyd.c
707
job->read_err = 1;
drivers/md/dm-kcopyd.c
710
job->write_err |= write_err;
drivers/md/dm-kcopyd.c
715
if ((!job->read_err && !job->write_err) ||
drivers/md/dm-kcopyd.c
716
job->flags & BIT(DM_KCOPYD_IGNORE_ERROR)) {
drivers/md/dm-kcopyd.c
718
progress = job->progress;
drivers/md/dm-kcopyd.c
719
count = job->source.count - progress;
drivers/md/dm-kcopyd.c
724
job->progress += count;
drivers/md/dm-kcopyd.c
727
mutex_unlock(&job->lock);
drivers/md/dm-kcopyd.c
732
*sub_job = *job;
drivers/md/dm-kcopyd.c
737
for (i = 0; i < job->num_dests; i++) {
drivers/md/dm-kcopyd.c
746
} else if (atomic_dec_and_test(&job->sub_jobs)) {
drivers/md/dm-kcopyd.c
757
push(&kc->complete_jobs, job);
drivers/md/dm-kcopyd.c
782
struct kcopyd_job *job;
drivers/md/dm-kcopyd.c
789
job = mempool_alloc(&kc->job_pool, GFP_NOIO);
drivers/md/dm-kcopyd.c
790
mutex_init(&job->lock);
drivers/md/dm-kcopyd.c
795
job->kc = kc;
drivers/md/dm-kcopyd.c
796
job->flags = flags;
drivers/md/dm-kcopyd.c
797
job->read_err = 0;
drivers/md/dm-kcopyd.c
798
job->write_err = 0;
drivers/md/dm-kcopyd.c
800
job->num_dests = num_dests;
drivers/md/dm-kcopyd.c
801
memcpy(&job->dests, dests, sizeof(*dests) * num_dests);
drivers/md/dm-kcopyd.c
808
if (!(job->flags & BIT(DM_KCOPYD_WRITE_SEQ))) {
drivers/md/dm-kcopyd.c
809
for (i = 0; i < job->num_dests; i++) {
drivers/md/dm-kcopyd.c
811
job->flags |= BIT(DM_KCOPYD_WRITE_SEQ);
drivers/md/dm-kcopyd.c
820
if (job->flags & BIT(DM_KCOPYD_WRITE_SEQ) &&
drivers/md/dm-kcopyd.c
821
job->flags & BIT(DM_KCOPYD_IGNORE_ERROR))
drivers/md/dm-kcopyd.c
822
job->flags &= ~BIT(DM_KCOPYD_IGNORE_ERROR);
drivers/md/dm-kcopyd.c
825
job->source = *from;
drivers/md/dm-kcopyd.c
826
job->pages = NULL;
drivers/md/dm-kcopyd.c
827
job->op = REQ_OP_READ;
drivers/md/dm-kcopyd.c
829
memset(&job->source, 0, sizeof(job->source));
drivers/md/dm-kcopyd.c
830
job->source.count = job->dests[0].count;
drivers/md/dm-kcopyd.c
831
job->pages = &zero_page_list;
drivers/md/dm-kcopyd.c
836
job->op = REQ_OP_WRITE_ZEROES;
drivers/md/dm-kcopyd.c
837
for (i = 0; i < job->num_dests; i++)
drivers/md/dm-kcopyd.c
838
if (!bdev_write_zeroes_sectors(job->dests[i].bdev)) {
drivers/md/dm-kcopyd.c
839
job->op = REQ_OP_WRITE;
drivers/md/dm-kcopyd.c
844
job->fn = fn;
drivers/md/dm-kcopyd.c
845
job->context = context;
drivers/md/dm-kcopyd.c
846
job->master_job = job;
drivers/md/dm-kcopyd.c
847
job->write_offset = 0;
drivers/md/dm-kcopyd.c
849
if (job->source.count <= kc->sub_job_size)
drivers/md/dm-kcopyd.c
850
dispatch_job(job);
drivers/md/dm-kcopyd.c
852
job->progress = 0;
drivers/md/dm-kcopyd.c
853
split_job(job);
drivers/md/dm-kcopyd.c
869
struct kcopyd_job *job;
drivers/md/dm-kcopyd.c
871
job = mempool_alloc(&kc->job_pool, GFP_NOIO);
drivers/md/dm-kcopyd.c
873
memset(job, 0, sizeof(struct kcopyd_job));
drivers/md/dm-kcopyd.c
874
job->kc = kc;
drivers/md/dm-kcopyd.c
875
job->fn = fn;
drivers/md/dm-kcopyd.c
876
job->context = context;
drivers/md/dm-kcopyd.c
877
job->master_job = job;
drivers/md/dm-kcopyd.c
881
return job;
drivers/md/dm-kcopyd.c
887
struct kcopyd_job *job = j;
drivers/md/dm-kcopyd.c
888
struct dm_kcopyd_client *kc = job->kc;
drivers/md/dm-kcopyd.c
890
job->read_err = read_err;
drivers/md/dm-kcopyd.c
891
job->write_err = write_err;
drivers/md/dm-kcopyd.c
893
push(&kc->callback_jobs, job);
drivers/md/dm-kcopyd.c
903
int kcopyd_cancel(struct kcopyd_job *job, int block)
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
245
struct pispbe_job_descriptor *job)
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
260
lower_32_bits(job->hw_dma_addrs[u]));
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
262
upper_32_bits(job->hw_dma_addrs[u]));
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
265
job->hw_enables.bayer_enables);
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
267
job->hw_enables.rgb_enables);
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
275
((u32 *)job->config)[u]);
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
283
if (along != (u64)(job->hw_dma_addrs[u])) {
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
294
pispbe_wr(pispbe, PISP_BE_TILE_ADDR_LO_REG, lower_32_bits(job->tiles));
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
295
pispbe_wr(pispbe, PISP_BE_TILE_ADDR_HI_REG, upper_32_bits(job->tiles));
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
300
PISP_BE_CONTROL_NUM_TILES(job->config->num_tiles));
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
356
struct pispbe_job_descriptor *job,
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
359
struct pispbe_hw_enables *hw_en = &job->hw_enables;
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
360
struct pisp_be_tiles_config *config = job->config;
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
361
dma_addr_t *addrs = job->hw_dma_addrs;
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
454
struct pispbe_job_descriptor __free(kfree) *job = NULL;
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
475
job = kzalloc(sizeof(*job), GFP_KERNEL);
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
476
if (!job)
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
487
job->buffers[CONFIG_NODE] = buf[CONFIG_NODE];
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
490
job->config = &pispbe->config[config_index];
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
491
job->tiles = pispbe->config_dma_addr +
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
498
job->config->config.global.bayer_enables;
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
500
job->config->config.global.rgb_enables;
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
540
job->buffers[i] = buf[i];
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
548
pispbe_xlate_addrs(pispbe, job, buf);
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
551
list_add_tail(&job->queue, &pispbe->job_queue);
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
555
job = NULL;
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
575
struct pispbe_job_descriptor *job;
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
584
job = list_first_entry_or_null(&pispbe->job_queue,
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
587
if (!job)
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
590
list_del(&job->queue);
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
593
pispbe->queued_job.buf[i] = job->buffers[i];
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
605
pispbe_queue_job(pispbe, job);
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
606
kfree(job);
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
610
struct pispbe_job *job)
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
612
struct pispbe_buffer **buf = job->buf;
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
910
struct pispbe_job_descriptor *job, *temp;
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
948
list_for_each_entry_safe(job, temp, &tmp_list, queue) {
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
949
list_del(&job->queue);
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
950
kfree(job);
drivers/media/platform/renesas/rcar_fdp1.c
1000
struct fdp1_job *job)
drivers/media/platform/renesas/rcar_fdp1.c
1070
struct fdp1_job *job;
drivers/media/platform/renesas/rcar_fdp1.c
1076
job = get_queued_job(fdp1);
drivers/media/platform/renesas/rcar_fdp1.c
1077
if (!job) {
drivers/media/platform/renesas/rcar_fdp1.c
1090
fdp1_configure_deint_mode(ctx, job);
drivers/media/platform/renesas/rcar_fdp1.c
1099
fdp1_configure_rpf(ctx, job);
drivers/media/platform/renesas/rcar_fdp1.c
1102
fdp1_configure_wpf(ctx, job);
drivers/media/platform/renesas/rcar_fdp1.c
1113
queue_hw_job(fdp1, job);
drivers/media/platform/renesas/rcar_fdp1.c
1185
struct fdp1_job *job;
drivers/media/platform/renesas/rcar_fdp1.c
1196
job = fdp1_job_alloc(fdp1);
drivers/media/platform/renesas/rcar_fdp1.c
1197
if (!job) {
drivers/media/platform/renesas/rcar_fdp1.c
1202
job->active = fdp1_dequeue_field(ctx);
drivers/media/platform/renesas/rcar_fdp1.c
1203
if (!job->active) {
drivers/media/platform/renesas/rcar_fdp1.c
1207
fdp1_job_free(fdp1, job);
drivers/media/platform/renesas/rcar_fdp1.c
1218
job->dst = &fbuf->fields[0];
drivers/media/platform/renesas/rcar_fdp1.c
1220
job->active->vb->sequence = ctx->sequence;
drivers/media/platform/renesas/rcar_fdp1.c
1221
job->dst->vb->sequence = ctx->sequence;
drivers/media/platform/renesas/rcar_fdp1.c
1225
job->previous = ctx->previous;
drivers/media/platform/renesas/rcar_fdp1.c
1228
ctx->previous = job->active;
drivers/media/platform/renesas/rcar_fdp1.c
1233
job->next = fdp1_peek_queued_field(ctx);
drivers/media/platform/renesas/rcar_fdp1.c
1238
job->dst->vb->vb2_buf.timestamp = job->active->vb->vb2_buf.timestamp;
drivers/media/platform/renesas/rcar_fdp1.c
1240
job->dst->vb->flags = job->active->vb->flags &
drivers/media/platform/renesas/rcar_fdp1.c
1249
queue_job(fdp1, job);
drivers/media/platform/renesas/rcar_fdp1.c
1253
return job;
drivers/media/platform/renesas/rcar_fdp1.c
1310
struct fdp1_job *job = get_hw_queued_job(fdp1);
drivers/media/platform/renesas/rcar_fdp1.c
1329
fdp1_field_complete(ctx, job->previous);
drivers/media/platform/renesas/rcar_fdp1.c
1331
fdp1_field_complete(ctx, job->active);
drivers/media/platform/renesas/rcar_fdp1.c
1334
v4l2_m2m_buf_done(job->dst->vb, state);
drivers/media/platform/renesas/rcar_fdp1.c
1335
job->dst = NULL;
drivers/media/platform/renesas/rcar_fdp1.c
1339
fdp1_job_free(fdp1, job);
drivers/media/platform/renesas/rcar_fdp1.c
2000
struct fdp1_job *job;
drivers/media/platform/renesas/rcar_fdp1.c
2002
job = get_queued_job(ctx->fdp1);
drivers/media/platform/renesas/rcar_fdp1.c
2003
while (job) {
drivers/media/platform/renesas/rcar_fdp1.c
2005
fdp1_field_complete(ctx, job->previous);
drivers/media/platform/renesas/rcar_fdp1.c
2007
fdp1_field_complete(ctx, job->active);
drivers/media/platform/renesas/rcar_fdp1.c
2009
v4l2_m2m_buf_done(job->dst->vb, VB2_BUF_STATE_ERROR);
drivers/media/platform/renesas/rcar_fdp1.c
2010
job->dst = NULL;
drivers/media/platform/renesas/rcar_fdp1.c
2012
job = get_queued_job(ctx->fdp1);
drivers/media/platform/renesas/rcar_fdp1.c
655
struct fdp1_job *job;
drivers/media/platform/renesas/rcar_fdp1.c
659
job = list_first_entry_or_null(list, struct fdp1_job, list);
drivers/media/platform/renesas/rcar_fdp1.c
660
if (job)
drivers/media/platform/renesas/rcar_fdp1.c
661
list_del(&job->list);
drivers/media/platform/renesas/rcar_fdp1.c
664
return job;
drivers/media/platform/renesas/rcar_fdp1.c
674
struct fdp1_job *job)
drivers/media/platform/renesas/rcar_fdp1.c
679
list_add_tail(&job->list, list);
drivers/media/platform/renesas/rcar_fdp1.c
688
static void fdp1_job_free(struct fdp1_dev *fdp1, struct fdp1_job *job)
drivers/media/platform/renesas/rcar_fdp1.c
691
memset(job, 0, sizeof(struct fdp1_job));
drivers/media/platform/renesas/rcar_fdp1.c
693
list_add_job(fdp1, &fdp1->free_job_list, job);
drivers/media/platform/renesas/rcar_fdp1.c
696
static void queue_job(struct fdp1_dev *fdp1, struct fdp1_job *job)
drivers/media/platform/renesas/rcar_fdp1.c
698
list_add_job(fdp1, &fdp1->queued_job_list, job);
drivers/media/platform/renesas/rcar_fdp1.c
706
static void queue_hw_job(struct fdp1_dev *fdp1, struct fdp1_job *job)
drivers/media/platform/renesas/rcar_fdp1.c
708
list_add_job(fdp1, &fdp1->hw_job_list, job);
drivers/media/platform/renesas/rcar_fdp1.c
880
struct fdp1_job *job)
drivers/media/platform/renesas/rcar_fdp1.c
907
if (job->active->field == V4L2_FIELD_BOTTOM) {
drivers/media/platform/renesas/rcar_fdp1.c
925
if (job->previous)
drivers/media/platform/renesas/rcar_fdp1.c
926
fdp1_write(fdp1, job->previous->addrs[0], FD1_RPF0_ADDR_Y);
drivers/media/platform/renesas/rcar_fdp1.c
929
fdp1_write(fdp1, job->active->addrs[0], FD1_RPF1_ADDR_Y);
drivers/media/platform/renesas/rcar_fdp1.c
930
fdp1_write(fdp1, job->active->addrs[1], FD1_RPF1_ADDR_C0);
drivers/media/platform/renesas/rcar_fdp1.c
931
fdp1_write(fdp1, job->active->addrs[2], FD1_RPF1_ADDR_C1);
drivers/media/platform/renesas/rcar_fdp1.c
934
if (job->next)
drivers/media/platform/renesas/rcar_fdp1.c
935
fdp1_write(fdp1, job->next->addrs[0], FD1_RPF2_ADDR_Y);
drivers/media/platform/renesas/rcar_fdp1.c
939
struct fdp1_job *job)
drivers/media/platform/renesas/rcar_fdp1.c
994
fdp1_write(fdp1, job->dst->addrs[0], FD1_WPF_ADDR_Y);
drivers/media/platform/renesas/rcar_fdp1.c
995
fdp1_write(fdp1, job->dst->addrs[1], FD1_WPF_ADDR_C0);
drivers/media/platform/renesas/rcar_fdp1.c
996
fdp1_write(fdp1, job->dst->addrs[2], FD1_WPF_ADDR_C1);
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
411
int vsp1_isp_job_prepare(struct device *dev, struct vsp1_isp_job_desc *job)
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
427
job->dl = vsp1_dl_list_get(pipe->output->dlm);
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
428
if (!job->dl)
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
431
dl = job->dl;
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
445
if (job->config.pairs) {
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
451
if (job->config.pairs <= 16) {
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
460
ret = vsp1_vspx_pipeline_configure(vsp1, job->config.mem,
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
462
job->config.pairs * 2 + 2, 1,
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
463
job->config.pairs * 2 + 2,
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
480
pix_mp = &job->img.fmt;
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
481
ret = vsp1_vspx_pipeline_configure(vsp1, job->img.mem,
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
490
vsp1_dl_list_add_chain(job->dl, second_dl);
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
497
vsp1_dl_list_put(job->dl);
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
498
job->dl = NULL;
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
521
int vsp1_isp_job_run(struct device *dev, struct vsp1_isp_job_desc *job)
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
544
vsp1_dl_list_commit(job->dl, 0);
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
551
job->dl = NULL;
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
571
struct vsp1_isp_job_desc *job)
drivers/media/platform/renesas/vsp1/vsp1_vspx.c
573
vsp1_dl_list_put(job->dl);
drivers/message/fusion/mptsas.c
2240
static void mptsas_smp_handler(struct bsg_job *job, struct Scsi_Host *shost,
drivers/message/fusion/mptsas.c
2254
if (job->request_payload.sg_cnt > 1 ||
drivers/message/fusion/mptsas.c
2255
job->reply_payload.sg_cnt > 1) {
drivers/message/fusion/mptsas.c
2257
ioc->name, __func__, job->request_payload.payload_len,
drivers/message/fusion/mptsas.c
2258
job->reply_payload.payload_len);
drivers/message/fusion/mptsas.c
2276
cpu_to_le16(job->request_payload.payload_len - 4);
drivers/message/fusion/mptsas.c
2303
if (!dma_map_sg(&ioc->pcidev->dev, job->request_payload.sg_list,
drivers/message/fusion/mptsas.c
2307
flagsLength |= (sg_dma_len(job->request_payload.sg_list) - 4);
drivers/message/fusion/mptsas.c
2309
sg_dma_address(job->request_payload.sg_list));
drivers/message/fusion/mptsas.c
2320
if (!dma_map_sg(&ioc->pcidev->dev, job->reply_payload.sg_list,
drivers/message/fusion/mptsas.c
2323
flagsLength |= sg_dma_len(job->reply_payload.sg_list) + 4;
drivers/message/fusion/mptsas.c
2325
sg_dma_address(job->reply_payload.sg_list));
drivers/message/fusion/mptsas.c
2347
memcpy(job->reply, smprep, sizeof(*smprep));
drivers/message/fusion/mptsas.c
2348
job->reply_len = sizeof(*smprep);
drivers/message/fusion/mptsas.c
2358
dma_unmap_sg(&ioc->pcidev->dev, job->reply_payload.sg_list, 1,
drivers/message/fusion/mptsas.c
2361
dma_unmap_sg(&ioc->pcidev->dev, job->request_payload.sg_list, 1,
drivers/message/fusion/mptsas.c
2370
bsg_job_done(job, ret, reslen);
drivers/s390/scsi/zfcp_fc.c
1003
shost = rport ? rport_to_shost(rport) : fc_bsg_to_shost(job);
drivers/s390/scsi/zfcp_fc.c
1024
struct bsg_job *job = data;
drivers/s390/scsi/zfcp_fc.c
1027
wka_port = zfcp_fc_job_wka_port(job);
drivers/s390/scsi/zfcp_fc.c
1033
static int zfcp_fc_exec_els_job(struct bsg_job *job,
drivers/s390/scsi/zfcp_fc.c
1036
struct zfcp_fsf_ct_els *els = job->dd_data;
drivers/s390/scsi/zfcp_fc.c
1037
struct fc_rport *rport = fc_bsg_to_rport(job);
drivers/s390/scsi/zfcp_fc.c
1038
struct fc_bsg_request *bsg_request = job->request;
drivers/s390/scsi/zfcp_fc.c
1053
return zfcp_fsf_send_els(adapter, d_id, els, job->timeout / HZ);
drivers/s390/scsi/zfcp_fc.c
1056
static int zfcp_fc_exec_ct_job(struct bsg_job *job,
drivers/s390/scsi/zfcp_fc.c
1060
struct zfcp_fsf_ct_els *ct = job->dd_data;
drivers/s390/scsi/zfcp_fc.c
1063
wka_port = zfcp_fc_job_wka_port(job);
drivers/s390/scsi/zfcp_fc.c
1072
ret = zfcp_fsf_send_ct(wka_port, ct, NULL, job->timeout / HZ);
drivers/s390/scsi/zfcp_fc.c
1079
int zfcp_fc_exec_bsg_job(struct bsg_job *job)
drivers/s390/scsi/zfcp_fc.c
1083
struct zfcp_fsf_ct_els *ct_els = job->dd_data;
drivers/s390/scsi/zfcp_fc.c
1084
struct fc_bsg_request *bsg_request = job->request;
drivers/s390/scsi/zfcp_fc.c
1085
struct fc_rport *rport = fc_bsg_to_rport(job);
drivers/s390/scsi/zfcp_fc.c
1087
shost = rport ? rport_to_shost(rport) : fc_bsg_to_shost(job);
drivers/s390/scsi/zfcp_fc.c
1093
ct_els->req = job->request_payload.sg_list;
drivers/s390/scsi/zfcp_fc.c
1094
ct_els->resp = job->reply_payload.sg_list;
drivers/s390/scsi/zfcp_fc.c
1095
ct_els->handler_data = job;
drivers/s390/scsi/zfcp_fc.c
1100
return zfcp_fc_exec_els_job(job, adapter);
drivers/s390/scsi/zfcp_fc.c
1103
return zfcp_fc_exec_ct_job(job, adapter);
drivers/s390/scsi/zfcp_fc.c
1109
int zfcp_fc_timeout_bsg_job(struct bsg_job *job)
drivers/s390/scsi/zfcp_fc.c
981
struct bsg_job *job = data;
drivers/s390/scsi/zfcp_fc.c
982
struct zfcp_fsf_ct_els *zfcp_ct_els = job->dd_data;
drivers/s390/scsi/zfcp_fc.c
983
struct fc_bsg_reply *jr = job->reply;
drivers/s390/scsi/zfcp_fc.c
985
jr->reply_payload_rcv_len = job->reply_payload.payload_len;
drivers/s390/scsi/zfcp_fc.c
988
bsg_job_done(job, jr->result, jr->reply_payload_rcv_len);
drivers/s390/scsi/zfcp_fc.c
991
static struct zfcp_fc_wka_port *zfcp_fc_job_wka_port(struct bsg_job *job)
drivers/s390/scsi/zfcp_fc.c
996
struct fc_bsg_request *bsg_request = job->request;
drivers/s390/scsi/zfcp_fc.c
997
struct fc_rport *rport = fc_bsg_to_rport(job);
drivers/scsi/be2iscsi/be_main.c
4791
static int beiscsi_bsg_request(struct bsg_job *job)
drivers/scsi/be2iscsi/be_main.c
4795
struct iscsi_bsg_request *bsg_req = job->request;
drivers/scsi/be2iscsi/be_main.c
4800
struct iscsi_bsg_reply *bsg_reply = job->reply;
drivers/scsi/be2iscsi/be_main.c
4803
shost = iscsi_job_to_shost(job);
drivers/scsi/be2iscsi/be_main.c
4815
job->request_payload.payload_len,
drivers/scsi/be2iscsi/be_main.c
4823
tag = mgmt_vendor_specific_fw_cmd(&phba->ctrl, phba, job,
drivers/scsi/be2iscsi/be_main.c
4852
sg_copy_from_buffer(job->reply_payload.sg_list,
drivers/scsi/be2iscsi/be_main.c
4853
job->reply_payload.sg_cnt,
drivers/scsi/be2iscsi/be_main.c
4858
bsg_job_done(job, bsg_reply->result,
drivers/scsi/be2iscsi/be_mgmt.c
35
struct bsg_job *job,
drivers/scsi/be2iscsi/be_mgmt.c
41
struct iscsi_bsg_request *bsg_req = job->request;
drivers/scsi/be2iscsi/be_mgmt.c
45
nonemb_cmd->size = job->request_payload.payload_len;
drivers/scsi/be2iscsi/be_mgmt.c
62
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/be2iscsi/be_mgmt.c
63
job->request_payload.sg_cnt,
drivers/scsi/be2iscsi/be_mgmt.c
64
nonemb_cmd->va + offset, job->request_len);
drivers/scsi/be2iscsi/be_mgmt.c
87
job->request_payload.sg_cnt);
drivers/scsi/be2iscsi/be_mgmt.h
36
struct bsg_job *job,
drivers/scsi/bfa/bfad_bsg.c
3149
bfad_im_bsg_vendor_request(struct bsg_job *job)
drivers/scsi/bfa/bfad_bsg.c
3151
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/bfa/bfad_bsg.c
3152
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/bfa/bfad_bsg.c
3154
struct Scsi_Host *shost = fc_bsg_to_shost(job);
drivers/scsi/bfa/bfad_bsg.c
3161
payload_kbuf = kzalloc(job->request_payload.payload_len, GFP_KERNEL);
drivers/scsi/bfa/bfad_bsg.c
3168
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/bfa/bfad_bsg.c
3169
job->request_payload.sg_cnt, payload_kbuf,
drivers/scsi/bfa/bfad_bsg.c
3170
job->request_payload.payload_len);
drivers/scsi/bfa/bfad_bsg.c
3174
job->request_payload.payload_len);
drivers/scsi/bfa/bfad_bsg.c
3179
sg_copy_from_buffer(job->reply_payload.sg_list,
drivers/scsi/bfa/bfad_bsg.c
3180
job->reply_payload.sg_cnt,
drivers/scsi/bfa/bfad_bsg.c
3182
job->reply_payload.payload_len);
drivers/scsi/bfa/bfad_bsg.c
3188
job->reply_len = job->reply_payload.payload_len;
drivers/scsi/bfa/bfad_bsg.c
3189
bsg_reply->reply_payload_rcv_len = job->reply_payload.payload_len;
drivers/scsi/bfa/bfad_bsg.c
3192
bsg_job_done(job, bsg_reply->result,
drivers/scsi/bfa/bfad_bsg.c
3200
job->reply_len = sizeof(uint32_t);
drivers/scsi/bfa/bfad_bsg.c
3328
bfad_fcxp_bsg_send(struct bsg_job *job, struct bfad_fcxp *drv_fcxp,
drivers/scsi/bfa/bfad_bsg.c
3358
job->request_payload.payload_len,
drivers/scsi/bfa/bfad_bsg.c
3360
job->reply_payload.payload_len, bsg_fcpt->tsecs);
drivers/scsi/bfa/bfad_bsg.c
3368
bfad_im_bsg_els_ct_request(struct bsg_job *job)
drivers/scsi/bfa/bfad_bsg.c
3371
struct Scsi_Host *shost = fc_bsg_to_shost(job);
drivers/scsi/bfa/bfad_bsg.c
3378
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/bfa/bfad_bsg.c
3379
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/bfa/bfad_bsg.c
3386
job->reply_len = sizeof(uint32_t); /* Atleast uint32_t reply_len */
drivers/scsi/bfa/bfad_bsg.c
3468
req_kbuf = kzalloc(job->request_payload.payload_len, GFP_KERNEL);
drivers/scsi/bfa/bfad_bsg.c
3476
rsp_kbuf = kzalloc(job->reply_payload.payload_len, GFP_KERNEL);
drivers/scsi/bfa/bfad_bsg.c
3485
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/bfa/bfad_bsg.c
3486
job->request_payload.sg_cnt, req_kbuf,
drivers/scsi/bfa/bfad_bsg.c
3487
job->request_payload.payload_len);
drivers/scsi/bfa/bfad_bsg.c
3490
job->request_payload.payload_len,
drivers/scsi/bfa/bfad_bsg.c
3506
job->reply_payload.payload_len,
drivers/scsi/bfa/bfad_bsg.c
3523
rc = bfad_fcxp_bsg_send(job, drv_fcxp, bsg_fcpt);
drivers/scsi/bfa/bfad_bsg.c
3534
job->reply_len = drv_fcxp->rsp_len;
drivers/scsi/bfa/bfad_bsg.c
3540
job->reply_len = sizeof(uint32_t);
drivers/scsi/bfa/bfad_bsg.c
3546
sg_copy_from_buffer(job->reply_payload.sg_list,
drivers/scsi/bfa/bfad_bsg.c
3547
job->reply_payload.sg_cnt,
drivers/scsi/bfa/bfad_bsg.c
3549
job->reply_payload.payload_len);
drivers/scsi/bfa/bfad_bsg.c
3570
bsg_job_done(job, bsg_reply->result,
drivers/scsi/bfa/bfad_bsg.c
3577
bfad_im_bsg_request(struct bsg_job *job)
drivers/scsi/bfa/bfad_bsg.c
3579
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/bfa/bfad_bsg.c
3580
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/bfa/bfad_bsg.c
3586
rc = bfad_im_bsg_vendor_request(job);
drivers/scsi/bfa/bfad_bsg.c
3593
rc = bfad_im_bsg_els_ct_request(job);
drivers/scsi/bfa/bfad_bsg.c
3605
bfad_im_bsg_timeout(struct bsg_job *job)
drivers/scsi/bfa/bfad_im.h
197
int bfad_im_bsg_request(struct bsg_job *job);
drivers/scsi/bfa/bfad_im.h
198
int bfad_im_bsg_timeout(struct bsg_job *job);
drivers/scsi/ibmvscsi/ibmvfc.c
2064
static int ibmvfc_bsg_timeout(struct bsg_job *job)
drivers/scsi/ibmvscsi/ibmvfc.c
2066
struct ibmvfc_host *vhost = shost_priv(fc_bsg_to_shost(job));
drivers/scsi/ibmvscsi/ibmvfc.c
2067
unsigned long port_id = (unsigned long)job->dd_data;
drivers/scsi/ibmvscsi/ibmvfc.c
2186
static int ibmvfc_bsg_request(struct bsg_job *job)
drivers/scsi/ibmvscsi/ibmvfc.c
2188
struct ibmvfc_host *vhost = shost_priv(fc_bsg_to_shost(job));
drivers/scsi/ibmvscsi/ibmvfc.c
2189
struct fc_rport *rport = fc_bsg_to_rport(job);
drivers/scsi/ibmvscsi/ibmvfc.c
2194
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/ibmvscsi/ibmvfc.c
2195
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/ibmvscsi/ibmvfc.c
2232
job->dd_data = (void *)port_id;
drivers/scsi/ibmvscsi/ibmvfc.c
2233
req_seg = dma_map_sg(vhost->dev, job->request_payload.sg_list,
drivers/scsi/ibmvscsi/ibmvfc.c
2234
job->request_payload.sg_cnt, DMA_TO_DEVICE);
drivers/scsi/ibmvscsi/ibmvfc.c
2241
rsp_seg = dma_map_sg(vhost->dev, job->reply_payload.sg_list,
drivers/scsi/ibmvscsi/ibmvfc.c
2242
job->reply_payload.sg_cnt, DMA_FROM_DEVICE);
drivers/scsi/ibmvscsi/ibmvfc.c
2245
dma_unmap_sg(vhost->dev, job->request_payload.sg_list,
drivers/scsi/ibmvscsi/ibmvfc.c
2246
job->request_payload.sg_cnt, DMA_TO_DEVICE);
drivers/scsi/ibmvscsi/ibmvfc.c
2285
mad->iu.cmd_len = cpu_to_be32(job->request_payload.payload_len);
drivers/scsi/ibmvscsi/ibmvfc.c
2286
mad->iu.rsp_len = cpu_to_be32(job->reply_payload.payload_len);
drivers/scsi/ibmvscsi/ibmvfc.c
2290
mad->iu.cmd.va = cpu_to_be64(sg_dma_address(job->request_payload.sg_list));
drivers/scsi/ibmvscsi/ibmvfc.c
2291
mad->iu.cmd.len = cpu_to_be32(sg_dma_len(job->request_payload.sg_list));
drivers/scsi/ibmvscsi/ibmvfc.c
2292
mad->iu.rsp.va = cpu_to_be64(sg_dma_address(job->reply_payload.sg_list));
drivers/scsi/ibmvscsi/ibmvfc.c
2293
mad->iu.rsp.len = cpu_to_be32(sg_dma_len(job->reply_payload.sg_list));
drivers/scsi/ibmvscsi/ibmvfc.c
2319
bsg_job_done(job, bsg_reply->result,
drivers/scsi/ibmvscsi/ibmvfc.c
2323
dma_unmap_sg(vhost->dev, job->request_payload.sg_list,
drivers/scsi/ibmvscsi/ibmvfc.c
2324
job->request_payload.sg_cnt, DMA_TO_DEVICE);
drivers/scsi/ibmvscsi/ibmvfc.c
2325
dma_unmap_sg(vhost->dev, job->reply_payload.sg_list,
drivers/scsi/ibmvscsi/ibmvfc.c
2326
job->reply_payload.sg_cnt, DMA_FROM_DEVICE);
drivers/scsi/libfc/fc_lport.c
143
struct bsg_job *job;
drivers/scsi/libfc/fc_lport.c
1958
struct bsg_job *job = info->job;
drivers/scsi/libfc/fc_lport.c
1959
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/libfc/fc_lport.c
1968
job->reply_len = sizeof(uint32_t);
drivers/scsi/libfc/fc_lport.c
1969
bsg_job_done(job, bsg_reply->result,
drivers/scsi/libfc/fc_lport.c
2000
job->reply_payload.payload_len)
drivers/scsi/libfc/fc_lport.c
2002
job->reply_payload.payload_len;
drivers/scsi/libfc/fc_lport.c
2004
bsg_job_done(job, bsg_reply->result,
drivers/scsi/libfc/fc_lport.c
2019
static int fc_lport_els_request(struct bsg_job *job,
drivers/scsi/libfc/fc_lport.c
2031
fp = fc_frame_alloc(lport, job->request_payload.payload_len);
drivers/scsi/libfc/fc_lport.c
2035
len = job->request_payload.payload_len;
drivers/scsi/libfc/fc_lport.c
2038
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/libfc/fc_lport.c
2039
job->request_payload.sg_cnt,
drivers/scsi/libfc/fc_lport.c
2058
info->job = job;
drivers/scsi/libfc/fc_lport.c
2061
info->nents = job->reply_payload.sg_cnt;
drivers/scsi/libfc/fc_lport.c
2062
info->sg = job->reply_payload.sg_list;
drivers/scsi/libfc/fc_lport.c
2079
static int fc_lport_ct_request(struct bsg_job *job,
drivers/scsi/libfc/fc_lport.c
2091
job->request_payload.payload_len);
drivers/scsi/libfc/fc_lport.c
2095
len = job->request_payload.payload_len;
drivers/scsi/libfc/fc_lport.c
2098
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/libfc/fc_lport.c
2099
job->request_payload.sg_cnt,
drivers/scsi/libfc/fc_lport.c
2118
info->job = job;
drivers/scsi/libfc/fc_lport.c
2121
info->nents = job->reply_payload.sg_cnt;
drivers/scsi/libfc/fc_lport.c
2122
info->sg = job->reply_payload.sg_list;
drivers/scsi/libfc/fc_lport.c
2137
int fc_lport_bsg_request(struct bsg_job *job)
drivers/scsi/libfc/fc_lport.c
2139
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/libfc/fc_lport.c
2140
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/libfc/fc_lport.c
2141
struct Scsi_Host *shost = fc_bsg_to_shost(job);
drivers/scsi/libfc/fc_lport.c
2154
rport = fc_bsg_to_rport(job);
drivers/scsi/libfc/fc_lport.c
2159
rc = fc_lport_els_request(job, lport, rport->port_id,
drivers/scsi/libfc/fc_lport.c
2164
rport = fc_bsg_to_rport(job);
drivers/scsi/libfc/fc_lport.c
2169
rc = fc_lport_ct_request(job, lport, rport->port_id,
drivers/scsi/libfc/fc_lport.c
2188
rc = fc_lport_ct_request(job, lport, did, tov);
drivers/scsi/libfc/fc_lport.c
2193
rc = fc_lport_els_request(job, lport, did, lport->e_d_tov);
drivers/scsi/libsas/sas_expander.c
2129
void sas_smp_handler(struct bsg_job *job, struct Scsi_Host *shost,
drivers/scsi/libsas/sas_expander.c
2138
return sas_smp_host_handler(job, shost);
drivers/scsi/libsas/sas_expander.c
2157
if (job->request_payload.sg_cnt > 1 ||
drivers/scsi/libsas/sas_expander.c
2158
job->reply_payload.sg_cnt > 1) {
drivers/scsi/libsas/sas_expander.c
2160
__func__, job->request_payload.payload_len,
drivers/scsi/libsas/sas_expander.c
2161
job->reply_payload.payload_len);
drivers/scsi/libsas/sas_expander.c
2165
ret = smp_execute_task_sg(dev, job->request_payload.sg_list,
drivers/scsi/libsas/sas_expander.c
2166
job->reply_payload.sg_list);
drivers/scsi/libsas/sas_expander.c
2169
rcvlen = job->reply_payload.payload_len - ret;
drivers/scsi/libsas/sas_expander.c
2174
bsg_job_done(job, ret, rcvlen);
drivers/scsi/libsas/sas_host_smp.c
225
void sas_smp_host_handler(struct bsg_job *job, struct Scsi_Host *shost)
drivers/scsi/libsas/sas_host_smp.c
233
if (job->request_payload.payload_len < 8 ||
drivers/scsi/libsas/sas_host_smp.c
234
job->reply_payload.payload_len < 8)
drivers/scsi/libsas/sas_host_smp.c
238
req_data = kzalloc(job->request_payload.payload_len, GFP_KERNEL);
drivers/scsi/libsas/sas_host_smp.c
241
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/libsas/sas_host_smp.c
242
job->request_payload.sg_cnt, req_data,
drivers/scsi/libsas/sas_host_smp.c
243
job->request_payload.payload_len);
drivers/scsi/libsas/sas_host_smp.c
247
resp_data = kzalloc(max(job->reply_payload.payload_len, 128U),
drivers/scsi/libsas/sas_host_smp.c
282
if (job->request_payload.payload_len < 16)
drivers/scsi/libsas/sas_host_smp.c
294
if (job->request_payload.payload_len < 16)
drivers/scsi/libsas/sas_host_smp.c
309
if (job->request_payload.payload_len <
drivers/scsi/libsas/sas_host_smp.c
326
if (job->request_payload.payload_len < 44)
drivers/scsi/libsas/sas_host_smp.c
343
sg_copy_from_buffer(job->reply_payload.sg_list,
drivers/scsi/libsas/sas_host_smp.c
344
job->reply_payload.sg_cnt, resp_data,
drivers/scsi/libsas/sas_host_smp.c
345
job->reply_payload.payload_len);
drivers/scsi/libsas/sas_host_smp.c
353
bsg_job_done(job, error, reslen);
drivers/scsi/libsas/sas_internal.h
115
extern void sas_smp_host_handler(struct bsg_job *job, struct Scsi_Host *shost);
drivers/scsi/libsas/sas_internal.h
117
static inline void sas_smp_host_handler(struct bsg_job *job,
drivers/scsi/libsas/sas_internal.h
122
bsg_job_done(job, -EINVAL, 0);
drivers/scsi/libsas/sas_internal.h
86
void sas_smp_handler(struct bsg_job *job, struct Scsi_Host *shost,
drivers/scsi/lpfc/lpfc_bsg.c
1107
job = dd_data->set_job;
drivers/scsi/lpfc/lpfc_bsg.c
1110
if (job) {
drivers/scsi/lpfc/lpfc_bsg.c
1111
bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
1115
job->dd_data = NULL;
drivers/scsi/lpfc/lpfc_bsg.c
1118
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
1180
lpfc_bsg_hba_set_event(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
1182
struct lpfc_vport *vport = shost_priv(fc_bsg_to_shost(job));
drivers/scsi/lpfc/lpfc_bsg.c
1184
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/lpfc/lpfc_bsg.c
1192
if (job->request_len <
drivers/scsi/lpfc/lpfc_bsg.c
1247
dd_data->set_job = job; /* for unsolicited command */
drivers/scsi/lpfc/lpfc_bsg.c
1248
job->dd_data = dd_data; /* for fc transport timeout callback*/
drivers/scsi/lpfc/lpfc_bsg.c
1254
job->dd_data = NULL;
drivers/scsi/lpfc/lpfc_bsg.c
1263
lpfc_bsg_hba_get_event(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
1265
struct lpfc_vport *vport = shost_priv(fc_bsg_to_shost(job));
drivers/scsi/lpfc/lpfc_bsg.c
1267
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/lpfc/lpfc_bsg.c
1268
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
1276
if (job->request_len <
drivers/scsi/lpfc/lpfc_bsg.c
1314
if (evt_dat->len > job->request_payload.payload_len) {
drivers/scsi/lpfc/lpfc_bsg.c
1315
evt_dat->len = job->request_payload.payload_len;
drivers/scsi/lpfc/lpfc_bsg.c
1319
job->request_payload.payload_len);
drivers/scsi/lpfc/lpfc_bsg.c
1326
sg_copy_from_buffer(job->request_payload.sg_list,
drivers/scsi/lpfc/lpfc_bsg.c
1327
job->request_payload.sg_cnt,
drivers/scsi/lpfc/lpfc_bsg.c
1340
job->dd_data = NULL;
drivers/scsi/lpfc/lpfc_bsg.c
1342
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
1347
job->dd_data = NULL;
drivers/scsi/lpfc/lpfc_bsg.c
1375
struct bsg_job *job;
drivers/scsi/lpfc/lpfc_bsg.c
1387
job = dd_data->set_job;
drivers/scsi/lpfc/lpfc_bsg.c
1388
if (job) {
drivers/scsi/lpfc/lpfc_bsg.c
1390
job->dd_data = NULL;
drivers/scsi/lpfc/lpfc_bsg.c
1408
if (job) {
drivers/scsi/lpfc/lpfc_bsg.c
1409
bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
1440
if (job) {
drivers/scsi/lpfc/lpfc_bsg.c
1442
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
1458
lpfc_issue_ct_rsp(struct lpfc_hba *phba, struct bsg_job *job, uint32_t tag,
drivers/scsi/lpfc/lpfc_bsg.c
1535
dd_data->set_job = job;
drivers/scsi/lpfc/lpfc_bsg.c
1543
job->dd_data = dd_data;
drivers/scsi/lpfc/lpfc_bsg.c
1568
job->dd_data = NULL;
drivers/scsi/lpfc/lpfc_bsg.c
1584
lpfc_bsg_send_mgmt_rsp(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
1586
struct lpfc_vport *vport = shost_priv(fc_bsg_to_shost(job));
drivers/scsi/lpfc/lpfc_bsg.c
1588
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/lpfc/lpfc_bsg.c
1589
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
1597
(unsigned long)job->request_payload.payload_len;
drivers/scsi/lpfc/lpfc_bsg.c
1623
cmp = lpfc_alloc_bsg_buffers(phba, job->request_payload.payload_len,
drivers/scsi/lpfc/lpfc_bsg.c
1629
lpfc_bsg_copy_data(cmp, &job->request_payload,
drivers/scsi/lpfc/lpfc_bsg.c
1630
job->request_payload.payload_len, 1);
drivers/scsi/lpfc/lpfc_bsg.c
1632
rc = lpfc_issue_ct_rsp(phba, job, tag, cmp, bmp, bpl_entries);
drivers/scsi/lpfc/lpfc_bsg.c
1648
job->dd_data = NULL;
drivers/scsi/lpfc/lpfc_bsg.c
1749
lpfc_sli3_bsg_diag_loopback_mode(struct lpfc_hba *phba, struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
1751
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/lpfc/lpfc_bsg.c
1752
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
1764
if (job->request_len < sizeof(struct fc_bsg_request) +
drivers/scsi/lpfc/lpfc_bsg.c
1769
job->request_len,
drivers/scsi/lpfc/lpfc_bsg.c
1858
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
2015
lpfc_sli4_bsg_diag_loopback_mode(struct lpfc_hba *phba, struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
2017
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/lpfc/lpfc_bsg.c
2018
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
2026
if (job->request_len < sizeof(struct fc_bsg_request) +
drivers/scsi/lpfc/lpfc_bsg.c
2031
job->request_len,
drivers/scsi/lpfc/lpfc_bsg.c
2220
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
2233
lpfc_bsg_diag_loopback_mode(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
2240
shost = fc_bsg_to_shost(job);
drivers/scsi/lpfc/lpfc_bsg.c
2251
rc = lpfc_sli3_bsg_diag_loopback_mode(phba, job);
drivers/scsi/lpfc/lpfc_bsg.c
2254
rc = lpfc_sli4_bsg_diag_loopback_mode(phba, job);
drivers/scsi/lpfc/lpfc_bsg.c
2269
lpfc_sli4_bsg_diag_mode_end(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
2271
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/lpfc/lpfc_bsg.c
2272
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
2280
shost = fc_bsg_to_shost(job);
drivers/scsi/lpfc/lpfc_bsg.c
2335
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
2348
lpfc_sli4_bsg_link_diag_test(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
2350
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/lpfc/lpfc_bsg.c
2351
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
2364
shost = fc_bsg_to_shost(job);
drivers/scsi/lpfc/lpfc_bsg.c
2384
if (job->request_len < sizeof(struct fc_bsg_request) +
drivers/scsi/lpfc/lpfc_bsg.c
2389
job->request_len,
drivers/scsi/lpfc/lpfc_bsg.c
2454
if (job->reply_len < sizeof(*bsg_reply) + sizeof(*diag_status_reply)) {
drivers/scsi/lpfc/lpfc_bsg.c
2460
job->reply_len);
drivers/scsi/lpfc/lpfc_bsg.c
2484
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
3035
lpfc_bsg_diag_loopback_run(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
3037
struct lpfc_vport *vport = shost_priv(fc_bsg_to_shost(job));
drivers/scsi/lpfc/lpfc_bsg.c
3038
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
305
struct bsg_job *job;
drivers/scsi/lpfc/lpfc_bsg.c
3068
if (job->request_len <
drivers/scsi/lpfc/lpfc_bsg.c
3077
if (job->request_payload.payload_len !=
drivers/scsi/lpfc/lpfc_bsg.c
3078
job->reply_payload.payload_len) {
drivers/scsi/lpfc/lpfc_bsg.c
3095
size = job->request_payload.payload_len;
drivers/scsi/lpfc/lpfc_bsg.c
3127
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/lpfc/lpfc_bsg.c
3128
job->request_payload.sg_cnt,
drivers/scsi/lpfc/lpfc_bsg.c
318
job = dd_data->set_job;
drivers/scsi/lpfc/lpfc_bsg.c
319
if (job) {
drivers/scsi/lpfc/lpfc_bsg.c
320
bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
322
job->dd_data = NULL;
drivers/scsi/lpfc/lpfc_bsg.c
3288
sg_copy_from_buffer(job->reply_payload.sg_list,
drivers/scsi/lpfc/lpfc_bsg.c
3289
job->reply_payload.sg_cnt,
drivers/scsi/lpfc/lpfc_bsg.c
3322
job->dd_data = NULL;
drivers/scsi/lpfc/lpfc_bsg.c
3325
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
3335
lpfc_bsg_get_dfc_rev(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
3337
struct lpfc_vport *vport = shost_priv(fc_bsg_to_shost(job));
drivers/scsi/lpfc/lpfc_bsg.c
3338
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
3343
if (job->request_len <
drivers/scsi/lpfc/lpfc_bsg.c
3355
if (job->reply_len < sizeof(*bsg_reply) + sizeof(*event_reply)) {
drivers/scsi/lpfc/lpfc_bsg.c
3368
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
3389
struct bsg_job *job;
drivers/scsi/lpfc/lpfc_bsg.c
3407
job = dd_data->set_job;
drivers/scsi/lpfc/lpfc_bsg.c
3408
if (job) {
drivers/scsi/lpfc/lpfc_bsg.c
3410
job->dd_data = NULL;
drivers/scsi/lpfc/lpfc_bsg.c
3416
if (job) {
drivers/scsi/lpfc/lpfc_bsg.c
3417
bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
3418
size = job->reply_payload.payload_len;
drivers/scsi/lpfc/lpfc_bsg.c
342
if (job) {
drivers/scsi/lpfc/lpfc_bsg.c
3420
sg_copy_from_buffer(job->reply_payload.sg_list,
drivers/scsi/lpfc/lpfc_bsg.c
3421
job->reply_payload.sg_cnt,
drivers/scsi/lpfc/lpfc_bsg.c
3432
if (job) {
drivers/scsi/lpfc/lpfc_bsg.c
3434
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
3570
struct bsg_job *job,
drivers/scsi/lpfc/lpfc_bsg.c
3581
if (!job) {
drivers/scsi/lpfc/lpfc_bsg.c
361
lpfc_bsg_copy_data(rmp, &job->reply_payload,
drivers/scsi/lpfc/lpfc_bsg.c
3616
sg_copy_from_buffer(job->reply_payload.sg_list,
drivers/scsi/lpfc/lpfc_bsg.c
3617
job->reply_payload.sg_cnt,
drivers/scsi/lpfc/lpfc_bsg.c
3627
extra_bytes = sg_copy_buffer(job->reply_payload.sg_list,
drivers/scsi/lpfc/lpfc_bsg.c
3628
job->reply_payload.sg_cnt,
drivers/scsi/lpfc/lpfc_bsg.c
3658
struct bsg_job *job;
drivers/scsi/lpfc/lpfc_bsg.c
3672
job = dd_data->set_job;
drivers/scsi/lpfc/lpfc_bsg.c
3673
if (job) {
drivers/scsi/lpfc/lpfc_bsg.c
3674
bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
3676
job->dd_data = NULL;
drivers/scsi/lpfc/lpfc_bsg.c
3705
if (job) {
drivers/scsi/lpfc/lpfc_bsg.c
3708
job,
drivers/scsi/lpfc/lpfc_bsg.c
3721
if (job) {
drivers/scsi/lpfc/lpfc_bsg.c
3722
size = job->reply_payload.payload_len;
drivers/scsi/lpfc/lpfc_bsg.c
3724
sg_copy_from_buffer(job->reply_payload.sg_list,
drivers/scsi/lpfc/lpfc_bsg.c
3725
job->reply_payload.sg_cnt,
drivers/scsi/lpfc/lpfc_bsg.c
3737
job->reply_payload.payload_len);
drivers/scsi/lpfc/lpfc_bsg.c
3755
return job;
drivers/scsi/lpfc/lpfc_bsg.c
376
if (job) {
drivers/scsi/lpfc/lpfc_bsg.c
3769
struct bsg_job *job;
drivers/scsi/lpfc/lpfc_bsg.c
3772
job = lpfc_bsg_issue_mbox_ext_handle_job(phba, pmboxq);
drivers/scsi/lpfc/lpfc_bsg.c
3775
if (!job)
drivers/scsi/lpfc/lpfc_bsg.c
378
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
3790
if (job) {
drivers/scsi/lpfc/lpfc_bsg.c
3791
bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
3792
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
3809
struct bsg_job *job;
drivers/scsi/lpfc/lpfc_bsg.c
3812
job = lpfc_bsg_issue_mbox_ext_handle_job(phba, pmboxq);
drivers/scsi/lpfc/lpfc_bsg.c
3815
if (!job)
drivers/scsi/lpfc/lpfc_bsg.c
3828
if (job) {
drivers/scsi/lpfc/lpfc_bsg.c
3829
bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
3830
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
389
lpfc_bsg_send_mgmt_cmd(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
391
struct lpfc_vport *vport = shost_priv(fc_bsg_to_shost(job));
drivers/scsi/lpfc/lpfc_bsg.c
392
struct lpfc_rport_data *rdata = fc_bsg_to_rport(job)->dd_data;
drivers/scsi/lpfc/lpfc_bsg.c
3941
lpfc_bsg_sli_cfg_read_cmd_ext(struct lpfc_hba *phba, struct bsg_job *job,
drivers/scsi/lpfc/lpfc_bsg.c
3945
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/lpfc/lpfc_bsg.c
395
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
4131
dd_data->set_job = job;
drivers/scsi/lpfc/lpfc_bsg.c
4134
job->dd_data = dd_data;
drivers/scsi/lpfc/lpfc_bsg.c
4184
lpfc_bsg_sli_cfg_write_cmd_ext(struct lpfc_hba *phba, struct bsg_job *job,
drivers/scsi/lpfc/lpfc_bsg.c
4188
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/lpfc/lpfc_bsg.c
4189
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
4303
dd_data->set_job = job;
drivers/scsi/lpfc/lpfc_bsg.c
4306
job->dd_data = dd_data;
drivers/scsi/lpfc/lpfc_bsg.c
4328
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
4351
lpfc_bsg_handle_sli_cfg_mbox(struct lpfc_hba *phba, struct bsg_job *job,
drivers/scsi/lpfc/lpfc_bsg.c
4378
rc = lpfc_bsg_sli_cfg_read_cmd_ext(phba, job,
drivers/scsi/lpfc/lpfc_bsg.c
4388
rc = lpfc_bsg_sli_cfg_write_cmd_ext(phba, job,
drivers/scsi/lpfc/lpfc_bsg.c
4410
rc = lpfc_bsg_sli_cfg_read_cmd_ext(phba, job,
drivers/scsi/lpfc/lpfc_bsg.c
4441
rc = lpfc_bsg_sli_cfg_read_cmd_ext(phba, job,
drivers/scsi/lpfc/lpfc_bsg.c
4449
rc = lpfc_bsg_sli_cfg_write_cmd_ext(phba, job,
drivers/scsi/lpfc/lpfc_bsg.c
448
cmp = lpfc_alloc_bsg_buffers(phba, job->request_payload.payload_len,
drivers/scsi/lpfc/lpfc_bsg.c
4502
lpfc_bsg_read_ebuf_get(struct lpfc_hba *phba, struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
4504
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
454
lpfc_bsg_copy_data(cmp, &job->request_payload,
drivers/scsi/lpfc/lpfc_bsg.c
4543
sg_copy_from_buffer(job->reply_payload.sg_list,
drivers/scsi/lpfc/lpfc_bsg.c
4544
job->reply_payload.sg_cnt,
drivers/scsi/lpfc/lpfc_bsg.c
455
job->request_payload.payload_len, 1);
drivers/scsi/lpfc/lpfc_bsg.c
4557
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
4573
lpfc_bsg_write_ebuf_set(struct lpfc_hba *phba, struct bsg_job *job,
drivers/scsi/lpfc/lpfc_bsg.c
4576
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
459
rmp = lpfc_alloc_bsg_buffers(phba, job->reply_payload.payload_len, 0,
drivers/scsi/lpfc/lpfc_bsg.c
4591
size = job->request_payload.payload_len;
drivers/scsi/lpfc/lpfc_bsg.c
4592
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/lpfc/lpfc_bsg.c
4593
job->request_payload.sg_cnt,
drivers/scsi/lpfc/lpfc_bsg.c
4652
dd_data->set_job = job;
drivers/scsi/lpfc/lpfc_bsg.c
4655
job->dd_data = dd_data;
drivers/scsi/lpfc/lpfc_bsg.c
4676
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
4699
lpfc_bsg_handle_sli_cfg_ebuf(struct lpfc_hba *phba, struct bsg_job *job,
drivers/scsi/lpfc/lpfc_bsg.c
4717
rc = lpfc_bsg_read_ebuf_get(phba, job);
drivers/scsi/lpfc/lpfc_bsg.c
4729
rc = lpfc_bsg_write_ebuf_set(phba, job, dmabuf);
drivers/scsi/lpfc/lpfc_bsg.c
4744
lpfc_bsg_handle_sli_cfg_ext(struct lpfc_hba *phba, struct bsg_job *job,
drivers/scsi/lpfc/lpfc_bsg.c
4747
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/lpfc/lpfc_bsg.c
4765
rc = lpfc_bsg_handle_sli_cfg_mbox(phba, job, dmabuf);
drivers/scsi/lpfc/lpfc_bsg.c
4788
rc = lpfc_bsg_handle_sli_cfg_ebuf(phba, job, dmabuf);
drivers/scsi/lpfc/lpfc_bsg.c
4822
lpfc_bsg_issue_mbox(struct lpfc_hba *phba, struct bsg_job *job,
drivers/scsi/lpfc/lpfc_bsg.c
4825
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/lpfc/lpfc_bsg.c
4826
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
4848
if (job->request_payload.payload_len > BSG_MBOX_SIZE) {
drivers/scsi/lpfc/lpfc_bsg.c
486
dd_data->set_job = job;
drivers/scsi/lpfc/lpfc_bsg.c
4880
size = job->request_payload.payload_len;
drivers/scsi/lpfc/lpfc_bsg.c
4881
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/lpfc/lpfc_bsg.c
4882
job->request_payload.sg_cnt, pmbx, size);
drivers/scsi/lpfc/lpfc_bsg.c
4886
rc = lpfc_bsg_handle_sli_cfg_ext(phba, job, dmabuf);
drivers/scsi/lpfc/lpfc_bsg.c
489
job->dd_data = dd_data;
drivers/scsi/lpfc/lpfc_bsg.c
4920
if (unlikely(job->reply_payload.payload_len > BSG_MBOX_SIZE)) {
drivers/scsi/lpfc/lpfc_bsg.c
4927
job->reply_payload.payload_len);
drivers/scsi/lpfc/lpfc_bsg.c
5079
dd_data->set_job = job;
drivers/scsi/lpfc/lpfc_bsg.c
5086
job->dd_data = dd_data;
drivers/scsi/lpfc/lpfc_bsg.c
5099
sg_copy_from_buffer(job->reply_payload.sg_list,
drivers/scsi/lpfc/lpfc_bsg.c
5100
job->reply_payload.sg_cnt,
drivers/scsi/lpfc/lpfc_bsg.c
5127
lpfc_bsg_mbox_cmd(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
5129
struct lpfc_vport *vport = shost_priv(fc_bsg_to_shost(job));
drivers/scsi/lpfc/lpfc_bsg.c
5130
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/lpfc/lpfc_bsg.c
5131
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
5138
if (job->request_len <
drivers/scsi/lpfc/lpfc_bsg.c
5144
(int)(job->request_len -
drivers/scsi/lpfc/lpfc_bsg.c
5153
rc = lpfc_bsg_issue_mbox(phba, job, vport);
drivers/scsi/lpfc/lpfc_bsg.c
5158
job->dd_data = NULL;
drivers/scsi/lpfc/lpfc_bsg.c
5159
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
5167
job->dd_data = NULL;
drivers/scsi/lpfc/lpfc_bsg.c
5174
lpfc_forced_link_speed(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
5176
struct Scsi_Host *shost = fc_bsg_to_shost(job);
drivers/scsi/lpfc/lpfc_bsg.c
5179
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
5183
if (job->request_len <
drivers/scsi/lpfc/lpfc_bsg.c
5196
if (job->reply_len < sizeof(*bsg_reply) + sizeof(*forced_reply)) {
drivers/scsi/lpfc/lpfc_bsg.c
5211
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
5244
lpfc_bsg_get_ras_config(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
5246
struct Scsi_Host *shost = fc_bsg_to_shost(job);
drivers/scsi/lpfc/lpfc_bsg.c
5248
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
5254
if (job->request_len <
drivers/scsi/lpfc/lpfc_bsg.c
5289
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
5301
lpfc_bsg_set_ras_config(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
5303
struct Scsi_Host *shost = fc_bsg_to_shost(job);
drivers/scsi/lpfc/lpfc_bsg.c
5307
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/lpfc/lpfc_bsg.c
5309
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
5313
if (job->request_len <
drivers/scsi/lpfc/lpfc_bsg.c
5375
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
5389
lpfc_bsg_get_ras_lwpd(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
5391
struct Scsi_Host *shost = fc_bsg_to_shost(job);
drivers/scsi/lpfc/lpfc_bsg.c
5396
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
5404
if (job->request_len <
drivers/scsi/lpfc/lpfc_bsg.c
541
job->dd_data = NULL;
drivers/scsi/lpfc/lpfc_bsg.c
5437
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
5450
lpfc_bsg_get_ras_fwlog(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
5452
struct Scsi_Host *shost = fc_bsg_to_shost(job);
drivers/scsi/lpfc/lpfc_bsg.c
5455
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/lpfc/lpfc_bsg.c
5456
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
5479
if (job->request_len <
drivers/scsi/lpfc/lpfc_bsg.c
5515
sg_copy_from_buffer(job->reply_payload.sg_list,
drivers/scsi/lpfc/lpfc_bsg.c
5516
job->reply_payload.sg_cnt,
drivers/scsi/lpfc/lpfc_bsg.c
5524
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
5531
lpfc_get_trunk_info(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
5533
struct lpfc_vport *vport = shost_priv(fc_bsg_to_shost(job));
drivers/scsi/lpfc/lpfc_bsg.c
5535
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
5539
if (job->request_len <
drivers/scsi/lpfc/lpfc_bsg.c
5551
if (job->reply_len < sizeof(*bsg_reply) + sizeof(*event_reply)) {
drivers/scsi/lpfc/lpfc_bsg.c
5596
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
5603
lpfc_get_cgnbuf_info(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
5605
struct lpfc_vport *vport = shost_priv(fc_bsg_to_shost(job));
drivers/scsi/lpfc/lpfc_bsg.c
5607
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/lpfc/lpfc_bsg.c
5608
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
5615
if (job->request_len < sizeof(struct fc_bsg_request) +
drivers/scsi/lpfc/lpfc_bsg.c
5671
sg_copy_from_buffer(job->reply_payload.sg_list,
drivers/scsi/lpfc/lpfc_bsg.c
5672
job->reply_payload.sg_cnt,
drivers/scsi/lpfc/lpfc_bsg.c
568
struct bsg_job *job;
drivers/scsi/lpfc/lpfc_bsg.c
5680
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
5693
lpfc_bsg_hst_vendor(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
5695
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/lpfc/lpfc_bsg.c
5696
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
5702
rc = lpfc_bsg_hba_set_event(job);
drivers/scsi/lpfc/lpfc_bsg.c
5705
rc = lpfc_bsg_hba_get_event(job);
drivers/scsi/lpfc/lpfc_bsg.c
5708
rc = lpfc_bsg_send_mgmt_rsp(job);
drivers/scsi/lpfc/lpfc_bsg.c
5711
rc = lpfc_bsg_diag_loopback_mode(job);
drivers/scsi/lpfc/lpfc_bsg.c
5714
rc = lpfc_sli4_bsg_diag_mode_end(job);
drivers/scsi/lpfc/lpfc_bsg.c
5717
rc = lpfc_bsg_diag_loopback_run(job);
drivers/scsi/lpfc/lpfc_bsg.c
5720
rc = lpfc_sli4_bsg_link_diag_test(job);
drivers/scsi/lpfc/lpfc_bsg.c
5723
rc = lpfc_bsg_get_dfc_rev(job);
drivers/scsi/lpfc/lpfc_bsg.c
5726
rc = lpfc_bsg_mbox_cmd(job);
drivers/scsi/lpfc/lpfc_bsg.c
5729
rc = lpfc_forced_link_speed(job);
drivers/scsi/lpfc/lpfc_bsg.c
5732
rc = lpfc_bsg_get_ras_lwpd(job);
drivers/scsi/lpfc/lpfc_bsg.c
5735
rc = lpfc_bsg_get_ras_fwlog(job);
drivers/scsi/lpfc/lpfc_bsg.c
5738
rc = lpfc_bsg_get_ras_config(job);
drivers/scsi/lpfc/lpfc_bsg.c
5741
rc = lpfc_bsg_set_ras_config(job);
drivers/scsi/lpfc/lpfc_bsg.c
5744
rc = lpfc_get_trunk_info(job);
drivers/scsi/lpfc/lpfc_bsg.c
5747
rc = lpfc_get_cgnbuf_info(job);
drivers/scsi/lpfc/lpfc_bsg.c
5765
lpfc_bsg_request(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
5767
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/lpfc/lpfc_bsg.c
5768
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
5775
rc = lpfc_bsg_hst_vendor(job);
drivers/scsi/lpfc/lpfc_bsg.c
5778
rc = lpfc_bsg_rport_els(job);
drivers/scsi/lpfc/lpfc_bsg.c
5781
rc = lpfc_bsg_send_mgmt_cmd(job);
drivers/scsi/lpfc/lpfc_bsg.c
5802
lpfc_bsg_timeout(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
5804
struct lpfc_vport *vport = shost_priv(fc_bsg_to_shost(job));
drivers/scsi/lpfc/lpfc_bsg.c
5828
dd_data = (struct bsg_job_data *)job->dd_data;
drivers/scsi/lpfc/lpfc_bsg.c
5831
job->dd_data = NULL;
drivers/scsi/lpfc/lpfc_bsg.c
585
job = dd_data->set_job;
drivers/scsi/lpfc/lpfc_bsg.c
586
if (job) {
drivers/scsi/lpfc/lpfc_bsg.c
587
bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
589
job->dd_data = NULL;
drivers/scsi/lpfc/lpfc_bsg.c
608
if (job) {
drivers/scsi/lpfc/lpfc_bsg.c
612
sg_copy_from_buffer(job->reply_payload.sg_list,
drivers/scsi/lpfc/lpfc_bsg.c
613
job->reply_payload.sg_cnt,
drivers/scsi/lpfc/lpfc_bsg.c
643
if (job) {
drivers/scsi/lpfc/lpfc_bsg.c
645
bsg_job_done(job, bsg_reply->result,
drivers/scsi/lpfc/lpfc_bsg.c
656
lpfc_bsg_rport_els(struct bsg_job *job)
drivers/scsi/lpfc/lpfc_bsg.c
658
struct lpfc_vport *vport = shost_priv(fc_bsg_to_shost(job));
drivers/scsi/lpfc/lpfc_bsg.c
660
struct lpfc_rport_data *rdata = fc_bsg_to_rport(job)->dd_data;
drivers/scsi/lpfc/lpfc_bsg.c
662
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/lpfc/lpfc_bsg.c
663
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/lpfc/lpfc_bsg.c
680
if (job->request_payload.payload_len > FCELSSIZE) {
drivers/scsi/lpfc/lpfc_bsg.c
695
cmdsize = job->request_payload.payload_len;
drivers/scsi/lpfc/lpfc_bsg.c
715
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/lpfc/lpfc_bsg.c
716
job->request_payload.sg_cnt,
drivers/scsi/lpfc/lpfc_bsg.c
732
dd_data->set_job = job;
drivers/scsi/lpfc/lpfc_bsg.c
736
job->dd_data = dd_data;
drivers/scsi/lpfc/lpfc_bsg.c
778
job->dd_data = NULL;
drivers/scsi/lpfc/lpfc_bsg.c
920
struct bsg_job *job = NULL;
drivers/scsi/lpfc/lpfc_crtn.h
204
void lpfc_sli_prep_wqe(struct lpfc_hba *phba, struct lpfc_iocbq *job);
drivers/scsi/lpfc/lpfc_sli.c
22663
lpfc_sli_prep_wqe(struct lpfc_hba *phba, struct lpfc_iocbq *job)
drivers/scsi/lpfc/lpfc_sli.c
22671
union lpfc_wqe128 *wqe = &job->wqe;
drivers/scsi/lpfc/lpfc_sli.c
22676
if (job->cmd_flag & LPFC_IO_FCP)
drivers/scsi/lpfc/lpfc_sli.c
22678
else if (fip && (job->cmd_flag & LPFC_FIP_ELS_ID_MASK))
drivers/scsi/lpfc/lpfc_sli.c
22683
abort_tag = job->iotag;
drivers/scsi/lpfc/lpfc_sli.c
22688
ndlp = job->ndlp;
drivers/scsi/lpfc/lpfc_sli.c
22693
pcmd = (u32 *)job->cmd_dmabuf->virt;
drivers/scsi/lpfc/lpfc_sli.c
22706
job->vport->fc_myDID);
drivers/scsi/lpfc/lpfc_sli.c
22715
phba->vpi_ids[job->vport->vpi]);
drivers/scsi/lpfc/lpfc_sli.c
22733
ndlp = job->ndlp;
drivers/scsi/lpfc/lpfc_sli.c
22741
if (test_bit(FC_PT2PT, &job->vport->fc_flag)) {
drivers/scsi/lpfc/lpfc_sli.c
22744
job->vport->fc_myDID);
drivers/scsi/lpfc/lpfc_sli.c
22745
if (job->vport->fc_myDID == Fabric_DID) {
drivers/scsi/lpfc/lpfc_sli.c
22762
job->vport->fc_myDID);
drivers/scsi/lpfc/lpfc_sli.c
22772
phba->vpi_ids[job->vport->vpi]);
drivers/scsi/lpfc/lpfc_sli.c
22825
bf_set(wqe_reqtag, &wqe->generic.wqe_com, job->iotag);
drivers/scsi/mpi3mr/mpi3mr_app.c
1046
struct bsg_job *job)
drivers/scsi/mpi3mr/mpi3mr_app.c
1053
data_out_sz = job->request_payload.payload_len;
drivers/scsi/mpi3mr/mpi3mr_app.c
1071
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/mpi3mr/mpi3mr_app.c
1072
job->request_payload.sg_cnt,
drivers/scsi/mpi3mr/mpi3mr_app.c
1104
struct bsg_job *job)
drivers/scsi/mpi3mr/mpi3mr_app.c
1111
data_out_size = job->request_payload.payload_len;
drivers/scsi/mpi3mr/mpi3mr_app.c
1112
data_in_size = job->reply_payload.payload_len;
drivers/scsi/mpi3mr/mpi3mr_app.c
1120
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/mpi3mr/mpi3mr_app.c
1121
job->request_payload.sg_cnt,
drivers/scsi/mpi3mr/mpi3mr_app.c
1151
sg_copy_from_buffer(job->reply_payload.sg_list,
drivers/scsi/mpi3mr/mpi3mr_app.c
1152
job->reply_payload.sg_cnt,
drivers/scsi/mpi3mr/mpi3mr_app.c
1170
struct bsg_job *job)
drivers/scsi/mpi3mr/mpi3mr_app.c
1176
data_out_sz = job->request_payload.payload_len;
drivers/scsi/mpi3mr/mpi3mr_app.c
1193
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/mpi3mr/mpi3mr_app.c
1194
job->request_payload.sg_cnt,
drivers/scsi/mpi3mr/mpi3mr_app.c
1233
struct bsg_job *job)
drivers/scsi/mpi3mr/mpi3mr_app.c
1243
data_in_sz = job->request_payload.payload_len;
drivers/scsi/mpi3mr/mpi3mr_app.c
1273
if (job->request_payload.payload_len >= min_length) {
drivers/scsi/mpi3mr/mpi3mr_app.c
1274
sg_copy_from_buffer(job->request_payload.sg_list,
drivers/scsi/mpi3mr/mpi3mr_app.c
1275
job->request_payload.sg_cnt,
drivers/scsi/mpi3mr/mpi3mr_app.c
1297
struct bsg_job *job)
drivers/scsi/mpi3mr/mpi3mr_app.c
1316
if (job->request_payload.payload_len >= sizeof(logdata_enable)) {
drivers/scsi/mpi3mr/mpi3mr_app.c
1317
sg_copy_from_buffer(job->request_payload.sg_list,
drivers/scsi/mpi3mr/mpi3mr_app.c
1318
job->request_payload.sg_cnt,
drivers/scsi/mpi3mr/mpi3mr_app.c
1335
struct bsg_job *job)
drivers/scsi/mpi3mr/mpi3mr_app.c
1339
if ((!mrioc->logdata_buf) || (job->request_payload.payload_len < entry_sz))
drivers/scsi/mpi3mr/mpi3mr_app.c
1342
num_entries = job->request_payload.payload_len / entry_sz;
drivers/scsi/mpi3mr/mpi3mr_app.c
1347
if (job->request_payload.payload_len >= sz) {
drivers/scsi/mpi3mr/mpi3mr_app.c
1348
sg_copy_from_buffer(job->request_payload.sg_list,
drivers/scsi/mpi3mr/mpi3mr_app.c
1349
job->request_payload.sg_cnt,
drivers/scsi/mpi3mr/mpi3mr_app.c
1369
struct bsg_job *job)
drivers/scsi/mpi3mr/mpi3mr_app.c
1377
if (job->request_payload.payload_len != sizeof(pel_enable)) {
drivers/scsi/mpi3mr/mpi3mr_app.c
1399
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/mpi3mr/mpi3mr_app.c
1400
job->request_payload.sg_cnt,
drivers/scsi/mpi3mr/mpi3mr_app.c
1467
struct bsg_job *job)
drivers/scsi/mpi3mr/mpi3mr_app.c
1476
if (job->request_payload.payload_len < sizeof(u32)) {
drivers/scsi/mpi3mr/mpi3mr_app.c
1487
if ((job->request_payload.payload_len <= sizeof(u64)) ||
drivers/scsi/mpi3mr/mpi3mr_app.c
1489
sg_copy_from_buffer(job->request_payload.sg_list,
drivers/scsi/mpi3mr/mpi3mr_app.c
1490
job->request_payload.sg_cnt,
drivers/scsi/mpi3mr/mpi3mr_app.c
1521
usr_entrylen = (job->request_payload.payload_len - sizeof(u64)) /
drivers/scsi/mpi3mr/mpi3mr_app.c
1526
sg_copy_from_buffer(job->request_payload.sg_list,
drivers/scsi/mpi3mr/mpi3mr_app.c
1527
job->request_payload.sg_cnt,
drivers/scsi/mpi3mr/mpi3mr_app.c
1544
struct bsg_job *job)
drivers/scsi/mpi3mr/mpi3mr_app.c
1550
if (job->request_payload.payload_len >= sizeof(chgcnt)) {
drivers/scsi/mpi3mr/mpi3mr_app.c
1551
sg_copy_from_buffer(job->request_payload.sg_list,
drivers/scsi/mpi3mr/mpi3mr_app.c
1552
job->request_payload.sg_cnt,
drivers/scsi/mpi3mr/mpi3mr_app.c
1571
struct bsg_job *job)
drivers/scsi/mpi3mr/mpi3mr_app.c
1577
if (job->request_payload.payload_len !=
drivers/scsi/mpi3mr/mpi3mr_app.c
1587
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/mpi3mr/mpi3mr_app.c
1588
job->request_payload.sg_cnt,
drivers/scsi/mpi3mr/mpi3mr_app.c
1626
struct bsg_job *job)
drivers/scsi/mpi3mr/mpi3mr_app.c
1656
if (job->request_payload.payload_len >= sizeof(adpinfo)) {
drivers/scsi/mpi3mr/mpi3mr_app.c
1657
sg_copy_from_buffer(job->request_payload.sg_list,
drivers/scsi/mpi3mr/mpi3mr_app.c
1658
job->request_payload.sg_cnt,
drivers/scsi/mpi3mr/mpi3mr_app.c
1675
static long mpi3mr_bsg_process_drv_cmds(struct bsg_job *job)
drivers/scsi/mpi3mr/mpi3mr_app.c
1682
bsg_req = job->request;
drivers/scsi/mpi3mr/mpi3mr_app.c
1690
rval = mpi3mr_bsg_populate_adpinfo(mrioc, job);
drivers/scsi/mpi3mr/mpi3mr_app.c
1699
rval = mpi3mr_bsg_adp_reset(mrioc, job);
drivers/scsi/mpi3mr/mpi3mr_app.c
1702
rval = mpi3mr_get_all_tgt_info(mrioc, job);
drivers/scsi/mpi3mr/mpi3mr_app.c
1705
rval = mpi3mr_get_change_count(mrioc, job);
drivers/scsi/mpi3mr/mpi3mr_app.c
1708
rval = mpi3mr_enable_logdata(mrioc, job);
drivers/scsi/mpi3mr/mpi3mr_app.c
1711
rval = mpi3mr_get_logdata(mrioc, job);
drivers/scsi/mpi3mr/mpi3mr_app.c
1714
rval = mpi3mr_bsg_pel_enable(mrioc, job);
drivers/scsi/mpi3mr/mpi3mr_app.c
1717
rval = mpi3mr_bsg_query_hdb(mrioc, job);
drivers/scsi/mpi3mr/mpi3mr_app.c
1720
rval = mpi3mr_bsg_repost_hdb(mrioc, job);
drivers/scsi/mpi3mr/mpi3mr_app.c
1723
rval = mpi3mr_bsg_upload_hdb(mrioc, job);
drivers/scsi/mpi3mr/mpi3mr_app.c
1726
rval = mpi3mr_bsg_refresh_hdb_triggers(mrioc, job);
drivers/scsi/mpi3mr/mpi3mr_app.c
2382
static long mpi3mr_bsg_process_mpt_cmds(struct bsg_job *job)
drivers/scsi/mpi3mr/mpi3mr_app.c
2409
bsg_req = job->request;
drivers/scsi/mpi3mr/mpi3mr_app.c
2450
dout_buf = kzalloc(job->request_payload.payload_len,
drivers/scsi/mpi3mr/mpi3mr_app.c
2458
din_buf = kzalloc(job->reply_payload.payload_len,
drivers/scsi/mpi3mr/mpi3mr_app.c
2466
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/mpi3mr/mpi3mr_app.c
2467
job->request_payload.sg_cnt,
drivers/scsi/mpi3mr/mpi3mr_app.c
2468
dout_buf, job->request_payload.payload_len);
drivers/scsi/mpi3mr/mpi3mr_app.c
2555
if (sgl_dout_iter > (dout_buf + job->request_payload.payload_len)) {
drivers/scsi/mpi3mr/mpi3mr_app.c
2562
if (sgl_din_iter > (din_buf + job->reply_payload.payload_len)) {
drivers/scsi/mpi3mr/mpi3mr_app.c
2898
job->reply_payload_rcv_len =
drivers/scsi/mpi3mr/mpi3mr_app.c
2899
sg_copy_from_buffer(job->reply_payload.sg_list,
drivers/scsi/mpi3mr/mpi3mr_app.c
2900
job->reply_payload.sg_cnt,
drivers/scsi/mpi3mr/mpi3mr_app.c
2901
din_buf, job->reply_payload.payload_len);
drivers/scsi/mpi3mr/mpi3mr_app.c
2962
static int mpi3mr_bsg_request(struct bsg_job *job)
drivers/scsi/mpi3mr/mpi3mr_app.c
2967
struct mpi3mr_bsg_packet *bsg_req = job->request;
drivers/scsi/mpi3mr/mpi3mr_app.c
2971
rval = mpi3mr_bsg_process_drv_cmds(job);
drivers/scsi/mpi3mr/mpi3mr_app.c
2974
rval = mpi3mr_bsg_process_mpt_cmds(job);
drivers/scsi/mpi3mr/mpi3mr_app.c
2982
bsg_job_done(job, rval, reply_payload_rcv_len);
drivers/scsi/mpi3mr/mpi3mr_transport.c
3251
mpi3mr_transport_smp_handler(struct bsg_job *job, struct Scsi_Host *shost,
drivers/scsi/mpi3mr/mpi3mr_transport.c
3283
rc = mpi3mr_map_smp_buffer(&mrioc->pdev->dev, &job->request_payload,
drivers/scsi/mpi3mr/mpi3mr_transport.c
3289
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/mpi3mr/mpi3mr_transport.c
3290
job->request_payload.sg_cnt, addr_out,
drivers/scsi/mpi3mr/mpi3mr_transport.c
3291
job->request_payload.payload_len);
drivers/scsi/mpi3mr/mpi3mr_transport.c
3293
rc = mpi3mr_map_smp_buffer(&mrioc->pdev->dev, &job->reply_payload,
drivers/scsi/mpi3mr/mpi3mr_transport.c
3327
memcpy(job->reply, &mpi_reply, reply_sz);
drivers/scsi/mpi3mr/mpi3mr_transport.c
3328
job->reply_len = reply_sz;
drivers/scsi/mpi3mr/mpi3mr_transport.c
3332
sg_copy_from_buffer(job->reply_payload.sg_list,
drivers/scsi/mpi3mr/mpi3mr_transport.c
3333
job->reply_payload.sg_cnt, addr_in,
drivers/scsi/mpi3mr/mpi3mr_transport.c
3334
job->reply_payload.payload_len);
drivers/scsi/mpi3mr/mpi3mr_transport.c
3338
mpi3mr_unmap_smp_buffer(&mrioc->pdev->dev, &job->reply_payload,
drivers/scsi/mpi3mr/mpi3mr_transport.c
3341
mpi3mr_unmap_smp_buffer(&mrioc->pdev->dev, &job->request_payload,
drivers/scsi/mpi3mr/mpi3mr_transport.c
3344
bsg_job_done(job, rc, reslen);
drivers/scsi/mpt3sas/mpt3sas_transport.c
2048
_transport_smp_handler(struct bsg_job *job, struct Scsi_Host *shost,
drivers/scsi/mpt3sas/mpt3sas_transport.c
2083
rc = _transport_map_smp_buffer(&ioc->pdev->dev, &job->request_payload,
drivers/scsi/mpt3sas/mpt3sas_transport.c
2088
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/mpt3sas/mpt3sas_transport.c
2089
job->request_payload.sg_cnt, addr_out,
drivers/scsi/mpt3sas/mpt3sas_transport.c
2090
job->request_payload.payload_len);
drivers/scsi/mpt3sas/mpt3sas_transport.c
2093
rc = _transport_map_smp_buffer(&ioc->pdev->dev, &job->reply_payload,
drivers/scsi/mpt3sas/mpt3sas_transport.c
2159
memcpy(job->reply, mpi_reply, sizeof(*mpi_reply));
drivers/scsi/mpt3sas/mpt3sas_transport.c
2160
job->reply_len = sizeof(*mpi_reply);
drivers/scsi/mpt3sas/mpt3sas_transport.c
2164
sg_copy_to_buffer(job->reply_payload.sg_list,
drivers/scsi/mpt3sas/mpt3sas_transport.c
2165
job->reply_payload.sg_cnt, addr_in,
drivers/scsi/mpt3sas/mpt3sas_transport.c
2166
job->reply_payload.payload_len);
drivers/scsi/mpt3sas/mpt3sas_transport.c
2171
_transport_unmap_smp_buffer(&ioc->pdev->dev, &job->reply_payload,
drivers/scsi/mpt3sas/mpt3sas_transport.c
2174
_transport_unmap_smp_buffer(&ioc->pdev->dev, &job->request_payload,
drivers/scsi/mpt3sas/mpt3sas_transport.c
2180
bsg_job_done(job, rc, reslen);
drivers/scsi/scsi_transport_fc.c
4106
struct bsg_job *job = blk_mq_rq_to_pdu(req);
drivers/scsi/scsi_transport_fc.c
4107
struct Scsi_Host *shost = fc_bsg_to_shost(job);
drivers/scsi/scsi_transport_fc.c
4108
struct fc_rport *rport = fc_bsg_to_rport(job);
drivers/scsi/scsi_transport_fc.c
4115
inflight = bsg_job_get(job);
drivers/scsi/scsi_transport_fc.c
4119
err = i->f->bsg_timeout(job);
drivers/scsi/scsi_transport_fc.c
4121
bsg_job_put(job);
drivers/scsi/scsi_transport_fc.c
4139
static int fc_bsg_host_dispatch(struct Scsi_Host *shost, struct bsg_job *job)
drivers/scsi/scsi_transport_fc.c
4142
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/scsi_transport_fc.c
4143
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/scsi_transport_fc.c
4148
if (job->request_len < cmdlen) {
drivers/scsi/scsi_transport_fc.c
4166
if ((!job->request_payload.payload_len) ||
drivers/scsi/scsi_transport_fc.c
4167
(!job->reply_payload.payload_len)) {
drivers/scsi/scsi_transport_fc.c
4176
if ((!job->request_payload.payload_len) ||
drivers/scsi/scsi_transport_fc.c
4177
(!job->reply_payload.payload_len)) {
drivers/scsi/scsi_transport_fc.c
4198
ret = i->f->bsg_request(job);
drivers/scsi/scsi_transport_fc.c
4204
BUG_ON(job->reply_len < sizeof(uint32_t));
drivers/scsi/scsi_transport_fc.c
4207
job->reply_len = sizeof(uint32_t);
drivers/scsi/scsi_transport_fc.c
4208
bsg_job_done(job, bsg_reply->result,
drivers/scsi/scsi_transport_fc.c
4232
static int fc_bsg_rport_dispatch(struct Scsi_Host *shost, struct bsg_job *job)
drivers/scsi/scsi_transport_fc.c
4235
struct fc_bsg_request *bsg_request = job->request;
drivers/scsi/scsi_transport_fc.c
4236
struct fc_bsg_reply *bsg_reply = job->reply;
drivers/scsi/scsi_transport_fc.c
4241
if (job->request_len < cmdlen) {
drivers/scsi/scsi_transport_fc.c
4256
if ((!job->request_payload.payload_len) ||
drivers/scsi/scsi_transport_fc.c
4257
(!job->reply_payload.payload_len)) {
drivers/scsi/scsi_transport_fc.c
4267
ret = i->f->bsg_request(job);
drivers/scsi/scsi_transport_fc.c
4273
BUG_ON(job->reply_len < sizeof(uint32_t));
drivers/scsi/scsi_transport_fc.c
4276
job->reply_len = sizeof(uint32_t);
drivers/scsi/scsi_transport_fc.c
4277
bsg_job_done(job, bsg_reply->result,
drivers/scsi/scsi_transport_fc.c
4282
static int fc_bsg_dispatch(struct bsg_job *job)
drivers/scsi/scsi_transport_fc.c
4284
struct Scsi_Host *shost = fc_bsg_to_shost(job);
drivers/scsi/scsi_transport_fc.c
4286
if (scsi_is_fc_rport(job->dev))
drivers/scsi/scsi_transport_fc.c
4287
return fc_bsg_rport_dispatch(shost, job);
drivers/scsi/scsi_transport_fc.c
4289
return fc_bsg_host_dispatch(shost, job);
drivers/scsi/scsi_transport_fc.c
4306
static int fc_bsg_dispatch_prep(struct bsg_job *job)
drivers/scsi/scsi_transport_fc.c
4308
struct fc_rport *rport = fc_bsg_to_rport(job);
drivers/scsi/scsi_transport_fc.c
4321
return fc_bsg_dispatch(job);
drivers/scsi/scsi_transport_iscsi.c
1477
static int iscsi_bsg_host_dispatch(struct bsg_job *job)
drivers/scsi/scsi_transport_iscsi.c
1479
struct Scsi_Host *shost = iscsi_job_to_shost(job);
drivers/scsi/scsi_transport_iscsi.c
1480
struct iscsi_bsg_request *req = job->request;
drivers/scsi/scsi_transport_iscsi.c
1481
struct iscsi_bsg_reply *reply = job->reply;
drivers/scsi/scsi_transport_iscsi.c
1487
if (job->request_len < sizeof(uint32_t)) {
drivers/scsi/scsi_transport_iscsi.c
1509
if (job->request_len < cmdlen) {
drivers/scsi/scsi_transport_iscsi.c
1514
ret = i->iscsi_transport->bsg_request(job);
drivers/scsi/scsi_transport_iscsi.c
1520
BUG_ON(job->reply_len < sizeof(uint32_t));
drivers/scsi/scsi_transport_iscsi.c
1523
job->reply_len = sizeof(uint32_t);
drivers/scsi/scsi_transport_iscsi.c
1524
bsg_job_done(job, ret, 0);
drivers/scsi/scsi_transport_sas.c
173
static int sas_smp_dispatch(struct bsg_job *job)
drivers/scsi/scsi_transport_sas.c
175
struct Scsi_Host *shost = dev_to_shost(job->dev);
drivers/scsi/scsi_transport_sas.c
178
if (!scsi_is_host_device(job->dev))
drivers/scsi/scsi_transport_sas.c
179
rphy = dev_to_rphy(job->dev);
drivers/scsi/scsi_transport_sas.c
181
if (!job->reply_payload.payload_len) {
drivers/scsi/scsi_transport_sas.c
182
dev_warn(job->dev, "space for a smp response is missing\n");
drivers/scsi/scsi_transport_sas.c
183
bsg_job_done(job, -EINVAL, 0);
drivers/scsi/scsi_transport_sas.c
187
to_sas_internal(shost->transportt)->f->smp_handler(job, shost, rphy);
drivers/scsi/smartpqi/smartpqi.h
1701
void pqi_sas_smp_handler(struct bsg_job *job, struct Scsi_Host *shost,
drivers/scsi/smartpqi/smartpqi_sas_transport.c
458
struct bsg_job *job)
drivers/scsi/smartpqi/smartpqi_sas_transport.c
470
req_size = job->request_payload.payload_len;
drivers/scsi/smartpqi/smartpqi_sas_transport.c
471
resp_size = job->reply_payload.payload_len;
drivers/scsi/smartpqi/smartpqi_sas_transport.c
494
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/scsi/smartpqi/smartpqi_sas_transport.c
495
job->reply_payload.sg_cnt, ¶meters->request,
drivers/scsi/smartpqi/smartpqi_sas_transport.c
502
struct bmic_csmi_smp_passthru_buffer *smp_buf, struct bsg_job *job,
drivers/scsi/smartpqi/smartpqi_sas_transport.c
505
sg_copy_from_buffer(job->reply_payload.sg_list,
drivers/scsi/smartpqi/smartpqi_sas_transport.c
506
job->reply_payload.sg_cnt, &smp_buf->parameters.response,
drivers/scsi/smartpqi/smartpqi_sas_transport.c
509
job->reply_len = le16_to_cpu(error_info->sense_data_length);
drivers/scsi/smartpqi/smartpqi_sas_transport.c
510
memcpy(job->reply, error_info->data,
drivers/scsi/smartpqi/smartpqi_sas_transport.c
513
return job->reply_payload.payload_len -
drivers/scsi/smartpqi/smartpqi_sas_transport.c
517
void pqi_sas_smp_handler(struct bsg_job *job, struct Scsi_Host *shost,
drivers/scsi/smartpqi/smartpqi_sas_transport.c
528
if (job->reply_payload.payload_len == 0) {
drivers/scsi/smartpqi/smartpqi_sas_transport.c
543
if (job->request_payload.sg_cnt > 1 || job->reply_payload.sg_cnt > 1) {
drivers/scsi/smartpqi/smartpqi_sas_transport.c
548
smp_buf = pqi_build_csmi_smp_passthru_buffer(rphy, job);
drivers/scsi/smartpqi/smartpqi_sas_transport.c
559
reslen = pqi_build_sas_smp_handler_reply(smp_buf, job, &error_info);
drivers/scsi/smartpqi/smartpqi_sas_transport.c
562
bsg_job_done(job, rc, reslen);
drivers/ufs/core/ufs_bsg.c
107
payload = &job->request_payload;
drivers/ufs/core/ufs_bsg.c
132
static int ufs_bsg_request(struct bsg_job *job)
drivers/ufs/core/ufs_bsg.c
134
struct ufs_bsg_request *bsg_request = job->request;
drivers/ufs/core/ufs_bsg.c
135
struct ufs_bsg_reply *bsg_reply = job->reply;
drivers/ufs/core/ufs_bsg.c
136
struct ufs_hba *hba = shost_priv(dev_to_shost(job->dev->parent));
drivers/ufs/core/ufs_bsg.c
153
ret = ufs_bsg_alloc_desc_buffer(hba, job, &buff, &desc_len, desc_op);
drivers/ufs/core/ufs_bsg.c
166
sg_copy_from_buffer(job->request_payload.sg_list,
drivers/ufs/core/ufs_bsg.c
167
job->request_payload.sg_cnt,
drivers/ufs/core/ufs_bsg.c
182
ret = ufs_bsg_exec_advanced_rpmb_req(hba, job);
drivers/ufs/core/ufs_bsg.c
199
job->reply_len = rpmb ? sizeof(struct ufs_rpmb_reply) :
drivers/ufs/core/ufs_bsg.c
201
bsg_job_done(job, ret, bsg_reply->reply_payload_rcv_len);
drivers/ufs/core/ufs_bsg.c
29
static int ufs_bsg_alloc_desc_buffer(struct ufs_hba *hba, struct bsg_job *job,
drivers/ufs/core/ufs_bsg.c
33
struct ufs_bsg_request *bsg_request = job->request;
drivers/ufs/core/ufs_bsg.c
47
if (*desc_len > job->request_payload.payload_len) {
drivers/ufs/core/ufs_bsg.c
57
sg_copy_to_buffer(job->request_payload.sg_list,
drivers/ufs/core/ufs_bsg.c
58
job->request_payload.sg_cnt, descp,
drivers/ufs/core/ufs_bsg.c
67
static int ufs_bsg_exec_advanced_rpmb_req(struct ufs_hba *hba, struct bsg_job *job)
drivers/ufs/core/ufs_bsg.c
69
struct ufs_rpmb_request *rpmb_request = job->request;
drivers/ufs/core/ufs_bsg.c
70
struct ufs_rpmb_reply *rpmb_reply = job->reply;
include/drm/drm_modeset_helper_vtables.h
1123
struct drm_writeback_job *job);
include/drm/drm_modeset_helper_vtables.h
1138
struct drm_writeback_job *job);
include/drm/drm_writeback.h
173
int drm_writeback_prepare_job(struct drm_writeback_job *job);
include/drm/drm_writeback.h
178
void drm_writeback_cleanup_job(struct drm_writeback_job *job);
include/drm/gpu_scheduler.h
658
int drm_sched_job_init(struct drm_sched_job *job,
include/drm/gpu_scheduler.h
662
void drm_sched_job_arm(struct drm_sched_job *job);
include/drm/gpu_scheduler.h
664
int drm_sched_job_add_dependency(struct drm_sched_job *job,
include/drm/gpu_scheduler.h
666
int drm_sched_job_add_syncobj_dependency(struct drm_sched_job *job,
include/drm/gpu_scheduler.h
670
int drm_sched_job_add_resv_dependencies(struct drm_sched_job *job,
include/drm/gpu_scheduler.h
673
int drm_sched_job_add_implicit_dependencies(struct drm_sched_job *job,
include/drm/gpu_scheduler.h
676
bool drm_sched_job_has_dependency(struct drm_sched_job *job,
include/drm/gpu_scheduler.h
678
void drm_sched_job_cleanup(struct drm_sched_job *job);
include/drm/gpu_scheduler.h
680
bool drm_sched_job_is_signaled(struct drm_sched_job *job);
include/linux/dm-kcopyd.h
84
void dm_kcopyd_do_callback(void *job, int read_err, unsigned int long write_err);
include/linux/host1x.h
252
int host1x_job_submit(struct host1x_job *job);
include/linux/host1x.h
341
void (*release)(struct host1x_job *job);
include/linux/host1x.h
359
void host1x_job_add_gather(struct host1x_job *job, struct host1x_bo *bo,
include/linux/host1x.h
361
void host1x_job_add_wait(struct host1x_job *job, u32 id, u32 thresh,
include/linux/host1x.h
363
struct host1x_job *host1x_job_get(struct host1x_job *job);
include/linux/host1x.h
364
void host1x_job_put(struct host1x_job *job);
include/linux/host1x.h
365
int host1x_job_pin(struct host1x_job *job, struct device *dev);
include/linux/host1x.h
366
void host1x_job_unpin(struct host1x_job *job);
include/linux/padata.h
186
extern void __init padata_do_multithreaded(struct padata_mt_job *job);
include/linux/padata.h
191
static inline void __init padata_do_multithreaded(struct padata_mt_job *job)
include/linux/padata.h
193
job->thread_fn(job->start, job->start + job->size, job->fn_arg);
include/media/vsp1.h
210
struct vsp1_isp_job_desc *job);
include/media/vsp1.h
211
int vsp1_isp_job_run(struct device *dev, struct vsp1_isp_job_desc *job);
include/media/vsp1.h
212
void vsp1_isp_job_release(struct device *dev, struct vsp1_isp_job_desc *job);
include/scsi/scsi_transport_fc.h
875
static inline struct Scsi_Host *fc_bsg_to_shost(struct bsg_job *job)
include/scsi/scsi_transport_fc.h
877
if (scsi_is_host_device(job->dev))
include/scsi/scsi_transport_fc.h
878
return dev_to_shost(job->dev);
include/scsi/scsi_transport_fc.h
879
return rport_to_shost(dev_to_rport(job->dev));
include/scsi/scsi_transport_fc.h
882
static inline struct fc_rport *fc_bsg_to_rport(struct bsg_job *job)
include/scsi/scsi_transport_fc.h
884
if (scsi_is_fc_rport(job->dev))
include/scsi/scsi_transport_fc.h
885
return dev_to_rport(job->dev);
include/scsi/scsi_transport_iscsi.h
136
int (*bsg_request)(struct bsg_job *job);
kernel/padata.c
408
struct padata_mt_job *job = ps->job;
kernel/padata.c
41
struct padata_mt_job *job;
kernel/padata.c
413
while (job->size > 0) {
kernel/padata.c
416
start = job->start;
kernel/padata.c
419
size = min(size, job->size);
kernel/padata.c
422
job->start = end;
kernel/padata.c
423
job->size -= size;
kernel/padata.c
426
job->thread_fn(start, end, job->fn_arg);
kernel/padata.c
444
void __init padata_do_multithreaded(struct padata_mt_job *job)
kernel/padata.c
454
if (job->size == 0)
kernel/padata.c
458
nworks = max(job->size / max(job->min_chunk, job->align), 1ul);
kernel/padata.c
459
nworks = min(nworks, job->max_threads);
kernel/padata.c
463
job->thread_fn(job->start, job->start + job->size, job->fn_arg);
kernel/padata.c
469
ps.job = job;
kernel/padata.c
481
ps.chunk_size = job->size / (ps.nworks * load_balance_factor);
kernel/padata.c
482
ps.chunk_size = max(ps.chunk_size, job->min_chunk);
kernel/padata.c
484
ps.chunk_size = roundup(ps.chunk_size, job->align);
kernel/padata.c
487
if (job->numa_aware) {
mm/hugetlb.c
3358
struct padata_mt_job job = {
mm/hugetlb.c
3369
padata_do_multithreaded(&job);
mm/hugetlb.c
3488
struct padata_mt_job job = {
mm/hugetlb.c
3498
job.thread_fn = hugetlb_pages_alloc_boot_node;
mm/hugetlb.c
3521
job.max_threads = hugepage_allocation_threads;
mm/hugetlb.c
3527
job.start = h->nr_huge_pages;
mm/hugetlb.c
3528
job.size = remaining;
mm/hugetlb.c
3529
job.min_chunk = remaining / hugepage_allocation_threads;
mm/hugetlb.c
3530
padata_do_multithreaded(&job);
mm/mm_init.c
2145
struct padata_mt_job job = {
mm/mm_init.c
2156
padata_do_multithreaded(&job);