| /linux/drivers/gpu/drm/xe/ |
| H A D | xe_tlb_inval_job.c | 19 /** struct xe_tlb_inval_job - TLB invalidation job */ 21 /** @dep: base generic dependency Xe job */ 31 /** @refcount: ref count of this job */ 34 * @fence: dma fence to indicate completion. 1 way relationship - job 35 * can safely reference fence, fence cannot safely reference job. 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() [all …]
|
| H A D | xe_exec.c | 66 * submission time and set the DRM scheduler max job limit SIZE_OF_RING / 84 * Create job | 86 * Add rebind fence dependency to job | 87 * Add job VM dma-resv bookkeeping slot (non-compute mode) | 88 * Add job to external BOs dma-resv write slots (non-compute mode) | 90 * Install in / out fences for job 91 * Submit job 104 /* The fence slot added here is intended for the exec sched job. */ in xe_exec_fn() 125 struct xe_sched_job *job; in xe_exec_ioctl() local 288 job = xe_sched_job_create(q, xe_exec_queue_is_parallel(q) ? in xe_exec_ioctl() [all …]
|
| /linux/drivers/gpu/drm/imagination/ |
| H A D | pvr_queue.c | 193 * Currently the only dma_fence backed by a UFO object is the job fence, in pvr_queue_fence_is_ufo_backed() 205 * - a job fence directly, in which case it simply returns the containing pvr_queue_fence; 207 * the parent pointer to find the job fence (note that the parent pointer is initialized 208 * only after the run_job() callback is called on the drm_sched_fence's owning job); 264 * Call this function to allocate job CCCB and done fences. This only 329 * pvr_queue_job_fence_init() - Initializes a job done fence object. 334 * a job. 376 static u32 job_cmds_size(struct pvr_job *job, u32 ufo_wait_count) in job_cmds_size() argument 379 * One UFO command per native fence this job will be waiting on (unless any are in job_cmds_size() 380 * signaled by the time the job is submitted), plus a command for the job itself, in job_cmds_size() [all …]
|
| H A D | pvr_job.h | 34 /** @ref_count: Refcount for job. */ 37 /** @type: Type of job. */ 40 /** @id: Job ID number. */ 44 * @paired_job: Job paired to this job. 50 * fragment job to execute when the Parameter Manager runs out of memory. 52 * The geometry job should point to the fragment job it's paired with, 53 * and the fragment job should point to the geometry job it's paired with. 63 /** @done_fence: Fence to signal when the job is done. */ 87 * @has_pm_ref: True if the job has a power ref, thus forcing the GPU to stay on until 88 * the job is done. [all …]
|
| H A D | pvr_trace.h | 30 /* Job submit */ 44 #define PVR_JOB_GET_HWRT_FW_ADDR(job) \ argument 46 struct pvr_job *_job = (job); \ 63 TP_PROTO(struct pvr_device *pvr_dev, struct pvr_job *job, 65 TP_ARGS(pvr_dev, job, sync_op_count), 71 __field(struct pvr_job *, job) 75 __entry->ctx = job->ctx; 76 __entry->fw_obj = job->ctx->fw_obj; 77 pvr_fw_object_get_fw_addr(job->ctx->fw_obj, &__entry->fw_addr); 78 __entry->hwrt_addr = PVR_JOB_GET_HWRT_FW_ADDR(job); [all …]
|
| H A D | pvr_queue.h | 36 * issued if there's enough space in the CCCB to push job commands. 43 * @job: Job waiting for CCCB space. 46 * there's no more than one job waiting for CCCB at a given time. 52 struct pvr_job *job; member 54 /** @job_lock: Lock protecting access to the job object. */ 73 * struct pvr_queue - Job queue 104 * space to receive all commands needed for a job to complete. 108 /** @job_fence_ctx: Job fence context object. */ 122 * job queued to this queue. 125 * geom+frag jobs, to guarantee that the fragment job that's part of [all …]
|
| /linux/drivers/accel/rocket/ |
| H A D | rocket_job.c | 62 struct drm_rocket_job *job, in rocket_copy_tasks() argument 67 if (job->task_struct_size < sizeof(struct drm_rocket_task)) in rocket_copy_tasks() 70 rjob->task_count = job->task_count; in rocket_copy_tasks() 75 rjob->tasks = kvmalloc_objs(*rjob->tasks, job->task_count); in rocket_copy_tasks() 85 u64_to_user_ptr(job->tasks) + i * job->task_struct_size, in rocket_copy_tasks() 110 static void rocket_job_hw_submit(struct rocket_core *core, struct rocket_job *job) in rocket_job_hw_submit() argument 115 /* Don't queue the job if a reset is in progress */ in rocket_job_hw_submit() 121 task = &job->tasks[job->next_task_idx]; in rocket_job_hw_submit() 122 job->next_task_idx++; in rocket_job_hw_submit() 159 struct drm_sched_job *job, in rocket_acquire_object_fences() argument [all …]
|
| /linux/drivers/accel/ivpu/ |
| H A D | ivpu_job.c | 74 struct ivpu_cmdq *cmdq, struct ivpu_job *job) in ivpu_preemption_job_init() argument 79 if (job->primary_preempt_buf) in ivpu_preemption_job_init() 90 job->primary_preempt_buf = cmdq->primary_preempt_buf; in ivpu_preemption_job_init() 91 job->secondary_preempt_buf = cmdq->secondary_preempt_buf; in ivpu_preemption_job_init() 187 ivpu_dbg(vdev, JOB, "Command queue %d created, ctx %d, flags 0x%08x\n", in ivpu_cmdq_create() 248 ivpu_dbg(vdev, JOB, "DB %d registered to cmdq %d ctx %d priority %d\n", in ivpu_register_db() 302 ivpu_dbg(vdev, JOB, "DB %d unregistered\n", cmdq->db_id); in ivpu_cmdq_unregister() 307 ivpu_dbg(vdev, JOB, "Command queue %d destroyed, ctx %d\n", in ivpu_cmdq_unregister() 385 * and FW loses job queue state. The next time job queue is used it 426 ivpu_dbg(vdev, JOB, "Context ID: %u abort\n", file_priv->ctx.id); in ivpu_context_abort_locked() [all …]
|
| /linux/drivers/accel/amdxdna/ |
| H A D | aie2_ctx.c | 78 struct amdxdna_sched_job *job; in aie2_job_release() local 80 job = container_of(ref, struct amdxdna_sched_job, refcnt); in aie2_job_release() 82 amdxdna_sched_job_cleanup(job); in aie2_job_release() 83 atomic64_inc(&job->hwctx->job_free_cnt); in aie2_job_release() 84 wake_up(&job->hwctx->priv->job_free_wq); in aie2_job_release() 85 if (job->out_fence) in aie2_job_release() 86 dma_fence_put(job->out_fence); in aie2_job_release() 87 if (job->drv_cmd) in aie2_job_release() 88 aie2_cmd_put(job->drv_cmd); in aie2_job_release() 89 kfree(job->aie2_job_health); in aie2_job_release() [all …]
|
| /linux/drivers/scsi/lpfc/ |
| H A D | lpfc_bsg.c | 71 /* driver data associated with the job */ 96 struct bsg_job *set_job; /* job waiting for this iocb to finish */ 305 struct bsg_job *job; in lpfc_bsg_send_mgmt_cmd_cmp() local 316 /* Determine if job has been aborted */ in lpfc_bsg_send_mgmt_cmd_cmp() 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() 321 /* Prevent timeout handling from trying to abort job */ 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() [all …]
|
| /linux/drivers/gpu/drm/nouveau/ |
| H A D | nouveau_exec.c | 67 * DRM_NOUVEAU_EXEC ioctl is called to submit an exec job. 69 * A VM_BIND job can be executed either synchronously or asynchronously. If 70 * executed asynchronously, userspace may provide a list of syncobjs this job 72 * VM_BIND job finished execution. If executed synchronously the ioctl will 73 * block until the bind job is finished. For synchronous jobs the kernel will 82 * Since VM_BIND jobs update the GPU's VA space on job submit, EXEC jobs do have 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 [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 …]
|
| /linux/drivers/media/platform/renesas/rcar-isp/ |
| H A D | core.c | 141 struct rcar_isp_job *job; in risp_core_job_run() local 150 if (core->vspx.job) in risp_core_job_run() 153 job = list_first_entry_or_null(&core->risp_jobs, in risp_core_job_run() 156 if (!job) in risp_core_job_run() 159 list_del(&job->job_queue); in risp_core_job_run() 161 core->vspx.job = job; in risp_core_job_run() 165 struct risp_buffer *buf = job->buffers[i]; in risp_core_job_run() 169 risp_core_job_run_params(core, &job->vspx_job, buf); in risp_core_job_run() 177 if (vsp1_isp_job_run(core->vspx.dev, &job->vspx_job)) { in risp_core_job_run() 179 * Release all buffers in this job if running on the VSPX in risp_core_job_run() [all …]
|
| /linux/Documentation/core-api/ |
| H A D | padata.rst | 14 is currently the sole consumer of padata's serialized job support. 16 Padata also supports multithreaded jobs, splitting up the job evenly while load 38 A padata_shell is used to submit a job to padata and allows a series of such 80 Running A Job 84 padata_priv structure, which represents one job:: 99 The submission of the job is done with:: 105 points to the preferred CPU to be used for the final callback when the job is 108 padata_do_parallel() is zero on success, indicating that the job is in 114 Each job submitted to padata_do_parallel() will, in turn, be passed to 123 parallel() will take responsibility for the job from this point. The job [all …]
|
| /linux/drivers/accel/habanalabs/common/ |
| H A D | hw_queue.c | 229 * hl_hw_queue_send_cb_no_cmpl - send a single CB (not a JOB) without completion 272 * ext_queue_schedule_job - submit a JOB to an external queue 274 * @job: pointer to the job that needs to be submitted to the queue 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() 292 * Update the JOB ID inside the BD CTL so the device would know what 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() [all …]
|
| H A D | irq.c | 70 * job_finish - queue job finish work 81 struct hl_cs_job *job; in job_finish() local 84 job = queue->shadow_queue[hl_pi_2_offset(cs_seq)]; in job_finish() 85 job->timestamp = timestamp; in job_finish() 86 queue_work(hdev->cq_wq[cq->cq_idx], &job->finish_work); in job_finish() 104 struct hl_cs_job *job; in cs_finish() local 114 list_for_each_entry(job, &cs->job_list, cs_node) { in cs_finish() 115 queue = &hdev->kernel_queues[job->hw_queue_id]; in cs_finish() 173 * 2. Interrupt per CS job completion in queue: (CQ per queue) in hl_irq_handler_cq() 174 * CQ entry represents a completed job in a certain queue in hl_irq_handler_cq() [all …]
|
| /linux/drivers/crypto/tegra/ |
| H A D | tegra-se-main.c | 144 struct host1x_job *job; in tegra_se_host1x_submit() local 147 job = host1x_job_alloc(se->channel, 1, 0, true); in tegra_se_host1x_submit() 148 if (!job) { in tegra_se_host1x_submit() 149 dev_err(se->dev, "failed to allocate host1x job\n"); in tegra_se_host1x_submit() 153 job->syncpt = host1x_syncpt_get(se->syncpt); in tegra_se_host1x_submit() 154 job->syncpt_incrs = 1; in tegra_se_host1x_submit() 155 job->client = &se->client; in tegra_se_host1x_submit() 156 job->class = se->client.class; in tegra_se_host1x_submit() 157 job->serialize = true; in tegra_se_host1x_submit() 158 job->engine_fallback_streamid = se->stream_id; in tegra_se_host1x_submit() [all …]
|
| /linux/arch/powerpc/boot/dts/fsl/ |
| H A D | qoriq-sec6.0-0.dtsi | 42 compatible = "fsl,sec-v6.0-job-ring", 43 "fsl,sec-v5.2-job-ring", 44 "fsl,sec-v5.0-job-ring", 45 "fsl,sec-v4.4-job-ring", 46 "fsl,sec-v4.0-job-ring"; 51 compatible = "fsl,sec-v6.0-job-ring", 52 "fsl,sec-v5.2-job-ring", 53 "fsl,sec-v5.0-job-ring", 54 "fsl,sec-v4.4-job-ring", 55 "fsl,sec-v4.0-job-ring";
|
| H A D | qoriq-sec5.3-0.dtsi | 45 compatible = "fsl,sec-v5.3-job-ring", 46 "fsl,sec-v5.0-job-ring", 47 "fsl,sec-v4.0-job-ring"; 53 compatible = "fsl,sec-v5.3-job-ring", 54 "fsl,sec-v5.0-job-ring", 55 "fsl,sec-v4.0-job-ring"; 61 compatible = "fsl,sec-v5.3-job-ring", 62 "fsl,sec-v5.0-job-ring", 63 "fsl,sec-v4.0-job-ring"; 69 compatible = "fsl,sec-v5.3-job-ring", [all …]
|
| H A D | qoriq-sec5.2-0.dtsi | 45 compatible = "fsl,sec-v5.2-job-ring", 46 "fsl,sec-v5.0-job-ring", 47 "fsl,sec-v4.0-job-ring"; 53 compatible = "fsl,sec-v5.2-job-ring", 54 "fsl,sec-v5.0-job-ring", 55 "fsl,sec-v4.0-job-ring"; 61 compatible = "fsl,sec-v5.2-job-ring", 62 "fsl,sec-v5.0-job-ring", 63 "fsl,sec-v4.0-job-ring"; 69 compatible = "fsl,sec-v5.2-job-ring", [all …]
|
| H A D | pq3-sec4.4-0.dtsi | 45 compatible = "fsl,sec-v4.4-job-ring", "fsl,sec-v4.0-job-ring"; 51 compatible = "fsl,sec-v4.4-job-ring", "fsl,sec-v4.0-job-ring"; 57 compatible = "fsl,sec-v4.4-job-ring", "fsl,sec-v4.0-job-ring"; 63 compatible = "fsl,sec-v4.4-job-ring", "fsl,sec-v4.0-job-ring";
|
| /linux/drivers/gpu/drm/panthor/ |
| H A D | panthor_sched.c | 65 * We rely on the drm_gpu_scheduler framework to deal with job 68 * entity has its own job scheduler. When a job is ready to be executed 88 * a queue of waiters, ordered by job submission order). This approach 461 * @fence_ctx.last_fence: Fence of the last submitted job. 466 * the CS ring buffer with a dummy job that only signals the fence. 479 /** @profiling: Job profiling data slots and access information. */ 636 * callback and job post-completion processing function 679 /** @sync_upd_work: Work used to check/signal job fences. */ 792 * struct panthor_job - Used to manage GPU job 801 /** @group: Group of the queue this job will be pushed to. */ [all …]
|
| /linux/drivers/media/platform/renesas/ |
| H A D | rcar_fdp1.c | 54 /* Number of Job's to have available on the processing queue */ 551 /* A job can only be on one list at a time */ 567 /* Job Queues */ 628 * while preparing our job lists. 648 * list_remove_job: Take the first item off the specified job list 650 * Returns: pointer to a job, or NULL if the list is empty. 655 struct fdp1_job *job; in list_remove_job() local 659 job = list_first_entry_or_null(list, struct fdp1_job, list); in list_remove_job() 660 if (job) in list_remove_job() 661 list_del(&job->list); in list_remove_job() [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/drivers/scsi/smartpqi/ |
| H A D | smartpqi_sas_transport.c | 458 struct bsg_job *job) in pqi_build_csmi_smp_passthru_buffer() argument 470 req_size = job->request_payload.payload_len; in pqi_build_csmi_smp_passthru_buffer() 471 resp_size = job->reply_payload.payload_len; in pqi_build_csmi_smp_passthru_buffer() 494 sg_copy_to_buffer(job->request_payload.sg_list, in pqi_build_csmi_smp_passthru_buffer() 495 job->reply_payload.sg_cnt, ¶meters->request, in pqi_build_csmi_smp_passthru_buffer() 502 struct bmic_csmi_smp_passthru_buffer *smp_buf, struct bsg_job *job, in pqi_build_sas_smp_handler_reply() argument 505 sg_copy_from_buffer(job->reply_payload.sg_list, in pqi_build_sas_smp_handler_reply() 506 job->reply_payload.sg_cnt, &smp_buf->parameters.response, in pqi_build_sas_smp_handler_reply() 509 job->reply_len = le16_to_cpu(error_info->sense_data_length); in pqi_build_sas_smp_handler_reply() 510 memcpy(job->reply, error_info->data, in pqi_build_sas_smp_handler_reply() [all …]
|