| /linux/drivers/gpu/drm/nouveau/ |
| H A D | nouveau_sched.c | 26 nouveau_job_init(struct nouveau_job *job, in nouveau_job_init() argument 32 INIT_LIST_HEAD(&job->entry); in nouveau_job_init() 34 job->file_priv = args->file_priv; in nouveau_job_init() 35 job->cli = nouveau_cli(args->file_priv); in nouveau_job_init() 36 job->sched = sched; in nouveau_job_init() 38 job->sync = args->sync; in nouveau_job_init() 39 job->resv_usage = args->resv_usage; in nouveau_job_init() 41 job->ops = args->ops; in nouveau_job_init() 43 job->in_sync.count = args->in_sync.count; in nouveau_job_init() 44 if (job->in_sync.count) { in nouveau_job_init() [all …]
|
| H A D | nouveau_exec.c | 89 nouveau_exec_job_submit(struct nouveau_job *job, in nouveau_exec_job_submit() argument 92 struct nouveau_exec_job *exec_job = to_nouveau_exec_job(job); in nouveau_exec_job_submit() 93 struct nouveau_cli *cli = job->cli; in nouveau_exec_job_submit() 120 nouveau_exec_job_armed_submit(struct nouveau_job *job, in nouveau_exec_job_armed_submit() argument 123 drm_gpuvm_exec_resv_add_fence(vme, job->done_fence, in nouveau_exec_job_armed_submit() 124 job->resv_usage, job->resv_usage); in nouveau_exec_job_armed_submit() 129 nouveau_exec_job_run(struct nouveau_job *job) in nouveau_exec_job_run() argument 131 struct nouveau_exec_job *exec_job = to_nouveau_exec_job(job); in nouveau_exec_job_run() 138 NV_PRINTK(err, job->cli, "nv50cal_space: %d\n", ret); in nouveau_exec_job_run() 154 NV_PRINTK(err, job->cli, "error fencing pushbuf: %d\n", ret); in nouveau_exec_job_run() [all …]
|
| /linux/drivers/gpu/drm/xe/ |
| H A D | xe_tlb_inval_job.c | 50 struct xe_tlb_inval_job *job = in xe_tlb_inval_job_run() local 51 container_of(dep_job, typeof(*job), dep); in xe_tlb_inval_job_run() 53 container_of(job->fence, typeof(*ifence), base); in xe_tlb_inval_job_run() 56 if (xe_page_reclaim_list_valid(&job->prl)) { in xe_tlb_inval_job_run() 57 prl_sa = xe_page_reclaim_create_prl_bo(job->tlb_inval, &job->prl, ifence); in xe_tlb_inval_job_run() 62 xe_tlb_inval_range(job->tlb_inval, ifence, job->start, in xe_tlb_inval_job_run() 63 job->end, job->vm->usm.asid, prl_sa); in xe_tlb_inval_job_run() 65 return job->fence; in xe_tlb_inval_job_run() 70 struct xe_tlb_inval_job *job = in xe_tlb_inval_job_free() local 71 container_of(dep_job, typeof(*job), dep); in xe_tlb_inval_job_free() [all …]
|
| H A D | xe_ring_ops.c | 211 static int emit_render_cache_flush(struct xe_sched_job *job, u32 *dw, int i) in emit_render_cache_flush() argument 213 struct xe_exec_queue *q = job->q; in emit_render_cache_flush() 234 else if (job->q->class == XE_ENGINE_CLASS_COMPUTE) in emit_render_cache_flush() 261 static u32 get_ppgtt_flag(struct xe_sched_job *job) in get_ppgtt_flag() argument 263 if (job->q->vm && !job->ggtt) in get_ppgtt_flag() 319 static void __emit_job_gen12_simple(struct xe_sched_job *job, struct xe_lrc *lrc, in __emit_job_gen12_simple() argument 323 u32 ppgtt_flag = get_ppgtt_flag(job); in __emit_job_gen12_simple() 324 struct xe_gt *gt = job->q->gt; in __emit_job_gen12_simple() 328 if (job->ring_ops_force_reset) in __emit_job_gen12_simple() 333 if (job->ring_ops_flush_tlb) { in __emit_job_gen12_simple() [all …]
|
| /linux/drivers/gpu/host1x/ |
| H A D | job.c | 30 struct host1x_job *job = NULL; in host1x_job_alloc() local 51 mem = job = kzalloc(total, GFP_KERNEL); in host1x_job_alloc() 52 if (!job) in host1x_job_alloc() 55 job->enable_firewall = enable_firewall; in host1x_job_alloc() 57 kref_init(&job->ref); in host1x_job_alloc() 58 job->channel = ch; in host1x_job_alloc() 62 job->relocs = num_relocs ? mem : NULL; in host1x_job_alloc() 64 job->unpins = num_unpins ? mem : NULL; in host1x_job_alloc() 66 job->cmds = num_cmdbufs ? mem : NULL; in host1x_job_alloc() 68 job->addr_phys = num_unpins ? mem : NULL; in host1x_job_alloc() [all …]
|
| /linux/drivers/md/ |
| H A D | dm-kcopyd.c | 420 struct kcopyd_job *job; in pop_io_job() local 426 list_for_each_entry(job, jobs, list) { in pop_io_job() 427 if (job->op == REQ_OP_READ || in pop_io_job() 428 !(job->flags & BIT(DM_KCOPYD_WRITE_SEQ))) { in pop_io_job() 429 list_del(&job->list); in pop_io_job() 430 return job; in pop_io_job() 433 if (job->write_offset == job->master_job->write_offset) { in pop_io_job() 434 job->master_job->write_offset += job->source.count; in pop_io_job() 435 list_del(&job->list); in pop_io_job() 436 return job; in pop_io_job() [all …]
|
| /linux/drivers/gpu/drm/imagination/ |
| H A D | pvr_job.c | 25 struct pvr_job *job = container_of(kref, struct pvr_job, ref_count); in pvr_job_release() local 27 xa_erase(&job->pvr_dev->job_ids, job->id); in pvr_job_release() 29 pvr_hwrt_data_put(job->hwrt); in pvr_job_release() 30 pvr_context_put(job->ctx); in pvr_job_release() 32 WARN_ON(job->paired_job); in pvr_job_release() 34 pvr_queue_job_cleanup(job); in pvr_job_release() 35 pvr_job_release_pm_ref(job); in pvr_job_release() 37 kfree(job->cmd); in pvr_job_release() 38 kfree(job); in pvr_job_release() 46 pvr_job_put(struct pvr_job *job) in pvr_job_put() argument [all …]
|
| H A D | pvr_queue.c | 350 static u32 job_cmds_size(struct pvr_job *job, u32 ufo_wait_count) in job_cmds_size() argument 356 pvr_cccb_get_size_of_cmd_with_hdr(job->cmd_len); in job_cmds_size() 365 static unsigned long job_count_remaining_native_deps(struct pvr_job *job) in job_count_remaining_native_deps() argument 371 xa_for_each(&job->base.dependencies, index, fence) { in job_count_remaining_native_deps() 398 pvr_queue_get_job_cccb_fence(struct pvr_queue *queue, struct pvr_job *job) in pvr_queue_get_job_cccb_fence() argument 406 if (!job->cccb_fence) in pvr_queue_get_job_cccb_fence() 412 native_deps_remaining = job_count_remaining_native_deps(job); in pvr_queue_get_job_cccb_fence() 413 if (pvr_cccb_cmdseq_fits(&queue->cccb, job_cmds_size(job, native_deps_remaining))) { in pvr_queue_get_job_cccb_fence() 414 pvr_queue_fence_put(job->cccb_fence); in pvr_queue_get_job_cccb_fence() 415 job->cccb_fence = NULL; in pvr_queue_get_job_cccb_fence() [all …]
|
| H A D | pvr_job.h | 104 pvr_job_get(struct pvr_job *job) in pvr_job_get() argument 106 if (job) in pvr_job_get() 107 kref_get(&job->ref_count); in pvr_job_get() 109 return job; in pvr_job_get() 112 void pvr_job_put(struct pvr_job *job); 119 pvr_job_release_pm_ref(struct pvr_job *job) in pvr_job_release_pm_ref() argument 121 if (job->has_pm_ref) { in pvr_job_release_pm_ref() 122 pvr_power_put(job->pvr_dev); in pvr_job_release_pm_ref() 123 job->has_pm_ref = false; in pvr_job_release_pm_ref() 136 pvr_job_get_pm_ref(struct pvr_job *job) in pvr_job_get_pm_ref() argument [all …]
|
| /linux/drivers/accel/rocket/ |
| H A D | rocket_job.c | 61 struct drm_rocket_job *job, in rocket_copy_tasks() argument 66 if (job->task_struct_size < sizeof(struct drm_rocket_task)) in rocket_copy_tasks() 69 rjob->task_count = job->task_count; in rocket_copy_tasks() 74 rjob->tasks = kvmalloc_objs(*rjob->tasks, job->task_count); in rocket_copy_tasks() 84 u64_to_user_ptr(job->tasks) + i * job->task_struct_size, in rocket_copy_tasks() 108 static void rocket_job_hw_submit(struct rocket_core *core, struct rocket_job *job) in rocket_job_hw_submit() argument 119 task = &job->tasks[job->next_task_idx]; in rocket_job_hw_submit() 120 job->next_task_idx++; in rocket_job_hw_submit() 157 struct drm_sched_job *job, in rocket_acquire_object_fences() argument 167 ret = drm_sched_job_add_implicit_dependencies(job, bos[i], in rocket_acquire_object_fences() [all …]
|
| /linux/drivers/gpu/drm/v3d/ |
| H A D | v3d_submit.c | 23 v3d_lock_bo_reservations(struct v3d_job *job, in v3d_lock_bo_reservations() argument 28 ret = drm_gem_lock_reservations(job->bo, job->bo_count, acquire_ctx); in v3d_lock_bo_reservations() 32 for (i = 0; i < job->bo_count; i++) { in v3d_lock_bo_reservations() 33 ret = dma_resv_reserve_fences(job->bo[i]->resv, 1); in v3d_lock_bo_reservations() 37 ret = drm_sched_job_add_implicit_dependencies(&job->base, in v3d_lock_bo_reservations() 38 job->bo[i], true); in v3d_lock_bo_reservations() 46 drm_gem_unlock_reservations(job->bo, job->bo_count, acquire_ctx); in v3d_lock_bo_reservations() 69 struct v3d_job *job, in v3d_lookup_bos() argument 73 job->bo_count = bo_count; in v3d_lookup_bos() 75 if (!job->bo_count) { in v3d_lookup_bos() [all …]
|
| /linux/drivers/accel/ethosu/ |
| H A D | ethosu_job.c | 45 static void ethosu_job_hw_submit(struct ethosu_device *dev, struct ethosu_job *job) in ethosu_job_hw_submit() argument 47 struct drm_gem_dma_object *cmd_bo = to_drm_gem_dma_obj(job->cmd_bo); in ethosu_job_hw_submit() 48 struct ethosu_validated_cmdstream_info *cmd_info = to_ethosu_bo(job->cmd_bo)->info; in ethosu_job_hw_submit() 50 for (int i = 0; i < job->region_cnt; i++) { in ethosu_job_hw_submit() 52 int region = job->region_bo_num[i]; in ethosu_job_hw_submit() 54 bo = to_drm_gem_dma_obj(job->region_bo[i]); in ethosu_job_hw_submit() 60 if (job->sram_size) { in ethosu_job_hw_submit() 79 static int ethosu_acquire_object_fences(struct ethosu_job *job) in ethosu_acquire_object_fences() argument 82 struct drm_gem_object **bos = job->region_bo; in ethosu_acquire_object_fences() 83 struct ethosu_validated_cmdstream_info *info = to_ethosu_bo(job->cmd_bo)->info; in ethosu_acquire_object_fences() [all …]
|
| /linux/drivers/gpu/drm/panfrost/ |
| H A D | panfrost_job.c | 111 int panfrost_job_get_slot(struct panfrost_job *job) in panfrost_job_get_slot() argument 117 if (job->requirements & PANFROST_JD_REQ_FS) in panfrost_job_get_slot() 122 if (job->requirements & PANFROST_JD_REQ_ONLY_COMPUTE) { in panfrost_job_get_slot() 123 if ((job->requirements & PANFROST_JD_REQ_CORE_GRP_MASK) && in panfrost_job_get_slot() 124 (job->pfdev->features.nr_core_groups == 2)) in panfrost_job_get_slot() 126 if (panfrost_has_hw_issue(job->pfdev, HW_ISSUE_8987)) in panfrost_job_get_slot() 151 panfrost_get_job_chain_flag(const struct panfrost_job *job) in panfrost_get_job_chain_flag() argument 153 struct panfrost_fence *f = to_panfrost_fence(job->done_fence); in panfrost_get_job_chain_flag() 155 if (!panfrost_has_hw_feature(job->pfdev, HW_FEATURE_JOBCHAIN_DISAMBIGUATION)) in panfrost_get_job_chain_flag() 164 struct panfrost_job *job = pfdev->jobs[slot][0]; in panfrost_dequeue_job() local [all …]
|
| /linux/drivers/accel/amdxdna/ |
| H A D | aie2_ctx.c | 44 struct amdxdna_sched_job *job; in aie2_job_release() local 46 job = container_of(ref, struct amdxdna_sched_job, refcnt); in aie2_job_release() 47 amdxdna_sched_job_cleanup(job); in aie2_job_release() 48 atomic64_inc(&job->hwctx->job_free_cnt); in aie2_job_release() 49 wake_up(&job->hwctx->priv->job_free_wq); in aie2_job_release() 50 if (job->out_fence) in aie2_job_release() 51 dma_fence_put(job->out_fence); in aie2_job_release() 52 kfree(job->aie2_job_health); in aie2_job_release() 53 kfree(job); in aie2_job_release() 56 static void aie2_job_put(struct amdxdna_sched_job *job) in aie2_job_put() argument [all …]
|
| H A D | amdxdna_ctx.c | 146 struct amdxdna_sched_job *job, u32 cmd_idx, in amdxdna_cmd_set_error() argument 150 struct amdxdna_client *client = job->hwctx->client; in amdxdna_cmd_set_error() 405 amdxdna_arg_bos_put(struct amdxdna_sched_job *job) in amdxdna_arg_bos_put() argument 409 for (i = 0; i < job->bo_cnt; i++) { in amdxdna_arg_bos_put() 410 if (!job->bos[i]) in amdxdna_arg_bos_put() 412 drm_gem_object_put(job->bos[i]); in amdxdna_arg_bos_put() 418 struct amdxdna_sched_job *job, in amdxdna_arg_bos_lookup() argument 424 job->bo_cnt = bo_cnt; in amdxdna_arg_bos_lookup() 425 for (i = 0; i < job->bo_cnt; i++) { in amdxdna_arg_bos_lookup() 438 job->bos[i] = gobj; in amdxdna_arg_bos_lookup() [all …]
|
| /linux/drivers/gpu/drm/scheduler/ |
| H A D | sched_main.c | 524 struct drm_sched_job *job) in drm_sched_job_reinsert_on_false_timeout() argument 527 list_add(&job->list, &sched->pending_list); in drm_sched_job_reinsert_on_false_timeout() 540 struct drm_sched_job *job; in drm_sched_job_timedout() local 547 job = list_first_entry_or_null(&sched->pending_list, in drm_sched_job_timedout() 550 if (job) { in drm_sched_job_timedout() 557 list_del_init(&job->list); in drm_sched_job_timedout() 560 status = job->sched->ops->timedout_job(job); in drm_sched_job_timedout() 567 job->sched->ops->free_job(job); in drm_sched_job_timedout() 572 drm_sched_job_reinsert_on_false_timeout(sched, job); in drm_sched_job_timedout() 800 int drm_sched_job_init(struct drm_sched_job *job, in drm_sched_job_init() argument [all …]
|
| H A D | sched_entity.c | 181 struct drm_sched_job *job = container_of(wrk, typeof(*job), work); in drm_sched_entity_kill_jobs_work() local 186 xa_for_each(&job->dependencies, index, f) { in drm_sched_entity_kill_jobs_work() 204 xa_erase(&job->dependencies, index); in drm_sched_entity_kill_jobs_work() 205 if (f && !dma_fence_add_callback(f, &job->finish_cb, in drm_sched_entity_kill_jobs_work() 212 drm_sched_fence_scheduled(job->s_fence, NULL); in drm_sched_entity_kill_jobs_work() 213 drm_sched_fence_finished(job->s_fence, -ESRCH); in drm_sched_entity_kill_jobs_work() 214 WARN_ON(job->s_fence->parent); in drm_sched_entity_kill_jobs_work() 215 job->sched->ops->free_job(job); in drm_sched_entity_kill_jobs_work() 222 struct drm_sched_job *job = container_of(cb, struct drm_sched_job, in drm_sched_entity_kill_jobs_cb() local 227 INIT_WORK(&job->work, drm_sched_entity_kill_jobs_work); in drm_sched_entity_kill_jobs_cb() [all …]
|
| /linux/drivers/gpu/drm/amd/amdgpu/ |
| H A D | amdgpu_ids.c | 180 struct amdgpu_job *job) in amdgpu_vmid_gds_switch_needed() argument 182 return id->gds_base != job->gds_base || in amdgpu_vmid_gds_switch_needed() 183 id->gds_size != job->gds_size || in amdgpu_vmid_gds_switch_needed() 184 id->gws_base != job->gws_base || in amdgpu_vmid_gds_switch_needed() 185 id->gws_size != job->gws_size || in amdgpu_vmid_gds_switch_needed() 186 id->oa_base != job->oa_base || in amdgpu_vmid_gds_switch_needed() 187 id->oa_size != job->oa_size; in amdgpu_vmid_gds_switch_needed() 192 struct amdgpu_job *job) in amdgpu_vmid_compatible() argument 194 return id->pd_gpu_addr == job->vm_pd_addr && in amdgpu_vmid_compatible() 195 !amdgpu_vmid_gds_switch_needed(id, job); in amdgpu_vmid_compatible() [all …]
|
| /linux/drivers/gpu/drm/tegra/ |
| H A D | submit.c | 327 static int submit_get_syncpt(struct tegra_drm_context *context, struct host1x_job *job, in submit_get_syncpt() argument 344 job->syncpt = host1x_syncpt_get(sp); in submit_get_syncpt() 345 job->syncpt_incrs = args->syncpt.increments; in submit_get_syncpt() 350 static int submit_job_add_gather(struct host1x_job *job, struct tegra_drm_context *context, in submit_job_add_gather() argument 385 host1x_job_add_gather(job, &bo->base, cmd->words, *offset * 4); in submit_job_add_gather() 399 struct host1x_job *job; in submit_create_job() local 412 job = host1x_job_alloc(context->channel, args->num_cmds, 0, true); in submit_create_job() 413 if (!job) { in submit_create_job() 415 job = ERR_PTR(-ENOMEM); in submit_create_job() 419 err = submit_get_syncpt(context, job, syncpoints, args); in submit_create_job() [all …]
|
| /linux/drivers/scsi/lpfc/ |
| H A D | lpfc_bsg.c | 305 struct bsg_job *job; in lpfc_bsg_send_mgmt_cmd_cmp() local 318 job = dd_data->set_job; in lpfc_bsg_send_mgmt_cmd_cmp() 319 if (job) { in lpfc_bsg_send_mgmt_cmd_cmp() 320 bsg_reply = job->reply; in lpfc_bsg_send_mgmt_cmd_cmp() 322 job->dd_data = NULL; in lpfc_bsg_send_mgmt_cmd_cmp() 342 if (job) { in lpfc_bsg_send_mgmt_cmd_cmp() 361 lpfc_bsg_copy_data(rmp, &job->reply_payload, in lpfc_bsg_send_mgmt_cmd_cmp() 376 if (job) { in lpfc_bsg_send_mgmt_cmd_cmp() 378 bsg_job_done(job, bsg_reply->result, in lpfc_bsg_send_mgmt_cmd_cmp() 389 lpfc_bsg_send_mgmt_cmd(struct bsg_job *job) in lpfc_bsg_send_mgmt_cmd() argument [all …]
|
| /linux/drivers/ufs/core/ |
| H A D | ufs_bsg.c | 29 static int ufs_bsg_alloc_desc_buffer(struct ufs_hba *hba, struct bsg_job *job, in ufs_bsg_alloc_desc_buffer() argument 33 struct ufs_bsg_request *bsg_request = job->request; in ufs_bsg_alloc_desc_buffer() 47 if (*desc_len > job->request_payload.payload_len) { in ufs_bsg_alloc_desc_buffer() 57 sg_copy_to_buffer(job->request_payload.sg_list, in ufs_bsg_alloc_desc_buffer() 58 job->request_payload.sg_cnt, descp, in ufs_bsg_alloc_desc_buffer() 67 static int ufs_bsg_exec_advanced_rpmb_req(struct ufs_hba *hba, struct bsg_job *job) in ufs_bsg_exec_advanced_rpmb_req() argument 69 struct ufs_rpmb_request *rpmb_request = job->request; in ufs_bsg_exec_advanced_rpmb_req() 70 struct ufs_rpmb_reply *rpmb_reply = job->reply; in ufs_bsg_exec_advanced_rpmb_req() 107 payload = &job->request_payload; in ufs_bsg_exec_advanced_rpmb_req() 132 static int ufs_bsg_request(struct bsg_job *job) in ufs_bsg_request() argument [all …]
|
| /linux/drivers/accel/habanalabs/common/ |
| H A D | hw_queue.c | 279 static void ext_queue_schedule_job(struct hl_cs_job *job) in ext_queue_schedule_job() argument 281 struct hl_device *hdev = job->cs->ctx->hdev; in ext_queue_schedule_job() 282 struct hl_hw_queue *q = &hdev->kernel_queues[job->hw_queue_id]; in ext_queue_schedule_job() 297 cb = job->patched_cb; in ext_queue_schedule_job() 298 len = job->job_cb_size; in ext_queue_schedule_job() 302 if (!cs_needs_completion(job->cs)) in ext_queue_schedule_job() 322 job->user_cb_size, in ext_queue_schedule_job() 326 job->contains_dma_pkt); in ext_queue_schedule_job() 328 q->shadow_queue[hl_pi_2_offset(q->pi)] = job; in ext_queue_schedule_job() 344 static void int_queue_schedule_job(struct hl_cs_job *job) in int_queue_schedule_job() argument [all …]
|
| H A D | command_submission.c | 267 struct hl_cs_job *job = container_of(ref, struct hl_cs_job, refcount); in cs_job_do_release() local 269 kfree(job); in cs_job_do_release() 272 static void hl_cs_job_put(struct hl_cs_job *job) in hl_cs_job_put() argument 274 kref_put(&job->refcount, cs_job_do_release); in hl_cs_job_put() 299 static bool is_cb_patched(struct hl_device *hdev, struct hl_cs_job *job) in is_cb_patched() argument 302 return (job->queue_type == QUEUE_TYPE_EXT); in is_cb_patched() 316 static int cs_parser(struct hl_fpriv *hpriv, struct hl_cs_job *job) in cs_parser() argument 322 parser.ctx_id = job->cs->ctx->asid; in cs_parser() 323 parser.cs_sequence = job->cs->sequence; in cs_parser() 324 parser.job_id = job->id; in cs_parser() [all …]
|
| /linux/drivers/scsi/libsas/ |
| H A D | sas_host_smp.c | 225 void sas_smp_host_handler(struct bsg_job *job, struct Scsi_Host *shost) in sas_smp_host_handler() argument 233 if (job->request_payload.payload_len < 8 || in sas_smp_host_handler() 234 job->reply_payload.payload_len < 8) in sas_smp_host_handler() 238 req_data = kzalloc(job->request_payload.payload_len, GFP_KERNEL); in sas_smp_host_handler() 241 sg_copy_to_buffer(job->request_payload.sg_list, in sas_smp_host_handler() 242 job->request_payload.sg_cnt, req_data, in sas_smp_host_handler() 243 job->request_payload.payload_len); in sas_smp_host_handler() 247 resp_data = kzalloc(max(job->reply_payload.payload_len, 128U), in sas_smp_host_handler() 282 if (job->request_payload.payload_len < 16) in sas_smp_host_handler() 294 if (job->request_payload.payload_len < 16) in sas_smp_host_handler() [all …]
|
| /linux/Documentation/devicetree/bindings/powerpc/fsl/ |
| H A D | raideng.txt | 30 There must be a sub-node for each job queue present in RAID Engine 33 - compatible: Should contain "fsl,raideng-v1.0-job-queue" as the value 34 This identifies the job queue interface 35 - reg: offset and length of the register set for job queue 42 compatible = "fsl,raideng-v1.0-job-queue"; 48 There must be a sub-node for each job ring present in RAID Engine 49 This node must be a sub-node of job queue node 51 - compatible: Must contain "fsl,raideng-v1.0-job-ring" as the value 52 This identifies job ring. Should contain either 55 - reg: offset and length of the register set for job ring [all …]
|