Lines Matching full:job

21 /* Maximum number of retries to resubmit a job if IAA work queues are full */
25 /* the QPL hardware path job */
26 qpl_job *job; member
38 /* the QPL software job for the slow path and software fallback */
54 * the QPL hardware job initialization will fail.
58 * @job_size: indicates the hardware job size if hardware is available
64 qpl_job *job; in check_hw_avail() local
70 job = g_malloc0(size); in check_hw_avail()
71 if (qpl_init_job(path, job) != QPL_STS_OK) { in check_hw_avail()
72 g_free(job); in check_hw_avail()
75 g_free(job); in check_hw_avail()
81 * multifd_qpl_free_sw_job: clean up software job
83 * Free the software job resources.
100 * Free all hardware job resources.
109 qpl_fini_job(qpl->hw_jobs[i].job); in multifd_qpl_free_hw_job()
110 g_free(qpl->hw_jobs[i].job); in multifd_qpl_free_hw_job()
111 qpl->hw_jobs[i].job = NULL; in multifd_qpl_free_hw_job()
119 * multifd_qpl_init_sw_job: initialize a software job
121 * Use the QPL software path to initialize a job
130 qpl_job *job = NULL; in multifd_qpl_init_sw_job() local
138 job = g_malloc0(size); in multifd_qpl_init_sw_job()
139 status = qpl_init_job(path, job); in multifd_qpl_init_sw_job()
142 g_free(job); in multifd_qpl_init_sw_job()
145 qpl->sw_job = job; in multifd_qpl_init_sw_job()
155 * @size: the size of QPL hardware path job
161 qpl_job *job = NULL; in multifd_qpl_init_hw_job() local
166 job = g_malloc0(size); in multifd_qpl_init_hw_job()
167 status = qpl_init_job(path, job); in multifd_qpl_init_hw_job()
168 /* the job initialization should succeed after check_hw_avail */ in multifd_qpl_init_hw_job()
170 qpl->hw_jobs[i].job = job; in multifd_qpl_init_hw_job()
253 * multifd_qpl_prepare_job: prepare the job
255 * Set the QPL job parameters and properties.
257 * @job: pointer to the qpl_job structure
264 static void multifd_qpl_prepare_job(qpl_job *job, bool is_compression, in multifd_qpl_prepare_job() argument
268 job->op = is_compression ? qpl_op_compress : qpl_op_decompress; in multifd_qpl_prepare_job()
269 job->next_in_ptr = input; in multifd_qpl_prepare_job()
270 job->next_out_ptr = output; in multifd_qpl_prepare_job()
271 job->available_in = input_len; in multifd_qpl_prepare_job()
272 job->available_out = output_len; in multifd_qpl_prepare_job()
273 job->flags = QPL_FLAG_FIRST | QPL_FLAG_LAST | QPL_FLAG_OMIT_VERIFY; in multifd_qpl_prepare_job()
275 job->level = 1; in multifd_qpl_prepare_job()
279 * multifd_qpl_prepare_comp_job: prepare the compression job
281 * Set the compression job parameters and properties.
283 * @job: pointer to the qpl_job structure
288 static void multifd_qpl_prepare_comp_job(qpl_job *job, uint8_t *input, in multifd_qpl_prepare_comp_job() argument
292 * Set output length to less than the page size to force the job to in multifd_qpl_prepare_comp_job()
297 multifd_qpl_prepare_job(job, true, input, size, output, size - 1); in multifd_qpl_prepare_comp_job()
301 * multifd_qpl_prepare_decomp_job: prepare the decompression job
303 * Set the decompression job parameters and properties.
305 * @job: pointer to the qpl_job structure
311 static void multifd_qpl_prepare_decomp_job(qpl_job *job, uint8_t *input, in multifd_qpl_prepare_decomp_job() argument
315 multifd_qpl_prepare_job(job, false, input, len, output, size); in multifd_qpl_prepare_decomp_job()
356 * multifd_qpl_submit_job: submit a job to the hardware
358 * Submit a QPL hardware job to the IAA device
360 * Returns true if the job is submitted successfully, otherwise false.
362 * @job: pointer to the qpl_job structure
364 static bool multifd_qpl_submit_job(qpl_job *job) in multifd_qpl_submit_job() argument
370 status = qpl_submit_job(job); in multifd_qpl_submit_job()
393 qpl_job *job = qpl->sw_job; in multifd_qpl_compress_pages_slow_path() local
399 multifd_qpl_prepare_comp_job(job, buf, zbuf, size); in multifd_qpl_compress_pages_slow_path()
400 if (qpl_execute_job(job) == QPL_STS_OK) { in multifd_qpl_compress_pages_slow_path()
401 multifd_qpl_fill_packet(i, p, zbuf, job->total_out); in multifd_qpl_compress_pages_slow_path()
432 multifd_qpl_prepare_comp_job(hw_job->job, buf, zbuf, size); in multifd_qpl_compress_pages()
433 if (multifd_qpl_submit_job(hw_job->job)) { in multifd_qpl_compress_pages()
437 * The IAA work queue is full, any immediate subsequent job in multifd_qpl_compress_pages()
463 if (qpl_wait_job(hw_job->job) == QPL_STS_OK) { in multifd_qpl_compress_pages()
464 multifd_qpl_fill_packet(i, p, zbuf, hw_job->job->total_out); in multifd_qpl_compress_pages()
518 * multifd_qpl_process_and_check_job: process and check a QPL job
520 * Process the job and check whether the job output length is the
523 * Returns true if the job execution succeeded and the output length
526 * @job: pointer to the qpl_job structure
527 * @is_hardware: indicates whether the job is a hardware job
531 static bool multifd_qpl_process_and_check_job(qpl_job *job, bool is_hardware, in multifd_qpl_process_and_check_job() argument
536 status = (is_hardware ? qpl_wait_job(job) : qpl_execute_job(job)); in multifd_qpl_process_and_check_job()
538 error_setg(errp, "qpl job failed with error %d", status); in multifd_qpl_process_and_check_job()
541 if (job->total_out != len) { in multifd_qpl_process_and_check_job()
543 job->total_out, len); in multifd_qpl_process_and_check_job()
564 qpl_job *job = qpl->sw_job; in multifd_qpl_decompress_pages_slow_path() local
578 multifd_qpl_prepare_decomp_job(job, zbuf, len, addr, size); in multifd_qpl_decompress_pages_slow_path()
579 if (!multifd_qpl_process_and_check_job(job, false, size, errp)) { in multifd_qpl_decompress_pages_slow_path()
605 qpl_job *job; in multifd_qpl_decompress_pages() local
617 job = qpl->hw_jobs[i].job; in multifd_qpl_decompress_pages()
618 multifd_qpl_prepare_decomp_job(job, zbuf, len, addr, size); in multifd_qpl_decompress_pages()
619 if (multifd_qpl_submit_job(job)) { in multifd_qpl_decompress_pages()
623 * The IAA work queue is full, any immediate subsequent job in multifd_qpl_decompress_pages()
629 job = qpl->sw_job; in multifd_qpl_decompress_pages()
630 multifd_qpl_prepare_decomp_job(job, zbuf, len, addr, size); in multifd_qpl_decompress_pages()
631 if (!multifd_qpl_process_and_check_job(job, false, size, errp)) { in multifd_qpl_decompress_pages()
644 job = qpl->hw_jobs[i].job; in multifd_qpl_decompress_pages()
645 if (!multifd_qpl_process_and_check_job(job, true, size, errp)) { in multifd_qpl_decompress_pages()