Lines Matching full:status

30 	union ifs_status status;
37 union ifs_sbaf_status status;
78 static void message_not_tested(struct device *dev, int cpu, union ifs_status status)
87 if (status.control_error) {
93 if (status.error_code < ARRAY_SIZE(scan_test_status)) {
96 scan_test_status[status.error_code]);
97 } else if (status.error_code == IFS_SW_TIMEOUT) {
100 } else if (status.error_code == IFS_SW_PARTIAL_COMPLETION) {
105 dev_info(dev, "CPU(s) %*pbl: SCAN unknown status %llx\n",
106 cpumask_pr_args(cpu_smt_mask(cpu)), status.data);
110 static void message_fail(struct device *dev, int cpu, union ifs_status status)
121 if (status.signature_error) {
127 static bool can_restart(union ifs_status status)
129 enum ifs_status_err_code err_code = status.error_code;
132 if (status.signature_error || status.control_error)
186 union ifs_status status;
214 rdmsrq(MSR_SCAN_STATUS, status.data);
216 trace_ifs_status(ifsd->cur_batch, start, stop, status.data);
220 params->status = status;
233 union ifs_status status = {};
265 status.error_code = IFS_SW_TIMEOUT;
273 status = params.status;
276 if (!can_restart(status))
279 status_chunk = ifsd->generation ? status.gen2.chunk_num : status.gen0.chunk_num;
283 if (status.error_code == IFS_NO_ERROR)
284 status.error_code = IFS_SW_PARTIAL_COMPLETION;
297 /* Update status for this core */
298 ifsd->scan_details = status.data;
300 if (status.signature_error) {
301 ifsd->status = SCAN_TEST_FAIL;
302 message_fail(dev, cpu, status);
303 } else if (status.control_error || status.error_code) {
304 ifsd->status = SCAN_NOT_TESTED;
305 message_not_tested(dev, cpu, status);
307 ifsd->status = SCAN_TEST_PASS;
360 ifsd->status = SCAN_TEST_FAIL;
362 ifsd->status = SCAN_NOT_TESTED;
364 ifsd->status = SCAN_TEST_PASS;
370 static int do_array_test_gen1(void *status)
379 rdmsrq(MSR_ARRAY_STATUS, *((u64 *)status));
388 u64 status = 0;
390 stop_core_cpuslocked(cpu, do_array_test_gen1, &status);
391 ifsd->scan_details = status;
393 if (status & ARRAY_GEN1_STATUS_FAIL)
394 ifsd->status = SCAN_TEST_FAIL;
396 ifsd->status = SCAN_TEST_PASS;
438 union ifs_sbaf_status status = (union ifs_sbaf_status)status_data;
440 if (status.error_code < ARRAY_SIZE(sbaf_test_status)) {
443 sbaf_test_status[status.error_code]);
444 } else if (status.error_code == IFS_SW_TIMEOUT) {
447 } else if (status.error_code == IFS_SW_PARTIAL_COMPLETION) {
452 dev_info(dev, "CPU(s) %*pbl: SBAF unknown status %llx\n",
453 cpumask_pr_args(cpu_smt_mask(cpu)), status.data);
457 static void sbaf_message_fail(struct device *dev, int cpu, union ifs_sbaf_status status)
460 if (status.sbaf_status == SBAF_STATUS_SIGN_FAIL) {
466 if (status.sbaf_status == SBAF_STATUS_TEST_FAIL) {
472 static bool sbaf_bundle_completed(union ifs_sbaf_status status)
474 return !(status.sbaf_status || status.error_code);
477 static bool sbaf_can_restart(union ifs_sbaf_status status)
479 enum sbaf_status_err_code err_code = status.error_code;
482 if (status.sbaf_status == SBAF_STATUS_SIGN_FAIL ||
483 status.sbaf_status == SBAF_STATUS_TEST_FAIL)
514 union ifs_sbaf_status status;
531 rdmsrq(MSR_SBAF_STATUS, status.data);
532 trace_ifs_sbaf(ifsd->cur_batch, *run_params->activate, status);
536 run_params->status = status;
544 union ifs_sbaf_status status = {};
563 status.error_code = IFS_SW_TIMEOUT;
574 status = run_params.status;
576 if (sbaf_bundle_completed(status)) {
577 activate.bundle_idx = status.bundle_idx + 1;
584 if (!sbaf_can_restart(status))
587 if (status.pgm_idx == activate.pgm_idx) {
590 if (status.error_code == IFS_NO_ERROR)
591 status.error_code = IFS_SW_PARTIAL_COMPLETION;
597 activate.bundle_idx = status.bundle_idx;
598 activate.pgm_idx = status.pgm_idx;
602 /* Update status for this core */
603 ifsd->scan_details = status.data;
605 if (status.sbaf_status == SBAF_STATUS_SIGN_FAIL ||
606 status.sbaf_status == SBAF_STATUS_TEST_FAIL) {
607 ifsd->status = SCAN_TEST_FAIL;
608 sbaf_message_fail(dev, cpu, status);
609 } else if (status.error_code || status.sbaf_status == SBAF_STATUS_INTR ||
611 ifsd->status = SCAN_NOT_TESTED;
612 sbaf_message_not_tested(dev, cpu, status.data);
614 ifsd->status = SCAN_TEST_PASS;