Lines Matching +full:activate +full:- +full:to +full:- +full:activate

1 // SPDX-License-Identifier: GPL-2.0-only
50 [IFS_INTERRUPTED_BEFORE_RENDEZVOUS] = "Interrupt occurred prior to SCAN coordination.",
52 "Core Abort SCAN Response due to power management condition.",
58 "Exceeded number of Logical Processors (LP) allowed to run Scan-At-Field concurrently",
59 [IFS_INTERRUPTED_DURING_EXECUTION] = "Interrupt occurred prior to SCAN start",
61 [IFS_CORRUPTED_CHUNK] = "Scan operation aborted due to corrupted image. Try reloading",
94 cpumask_pr_args(cpu_smt_mask(cpu)), ifsd->cur_batch, ifsd->loaded_version); in message_fail()
100 * due to a bit flip from an alpha particle or neutron). If the problem in message_fail()
106 cpumask_pr_args(cpu_smt_mask(cpu)), ifsd->cur_batch, ifsd->loaded_version); in message_fail()
151 * This WRMSR will wait for other HT threads to also write in doscan()
152 * to this MSR (at most for activate.delay cycles). Then it in doscan()
155 * take up to 200 milliseconds (in the case where all chunks in doscan()
169 * Use stop_core_cpuslocked() to synchronize writing to MSR_ACTIVATE_SCAN
170 * on all threads of the core to be tested. Loop if necessary to complete
171 * run of all chunks. Include some defensive tests to make sure forward
176 union ifs_scan activate; in ifs_test_core() local
187 activate.gen0.rsvd = 0; in ifs_test_core()
188 activate.delay = IFS_THREAD_WAIT; in ifs_test_core()
189 activate.sigmce = 0; in ifs_test_core()
191 to_stop = ifsd->valid_chunks - 1; in ifs_test_core()
193 if (ifsd->generation) { in ifs_test_core()
194 activate.gen2.start = to_start; in ifs_test_core()
195 activate.gen2.stop = to_stop; in ifs_test_core()
197 activate.gen0.start = to_start; in ifs_test_core()
198 activate.gen0.stop = to_stop; in ifs_test_core()
210 msrvals[0] = activate.data; in ifs_test_core()
221 status_chunk = ifsd->generation ? status.gen2.chunk_num : status.gen0.chunk_num; in ifs_test_core()
224 if (--retries == 0) { in ifs_test_core()
231 if (ifsd->generation) in ifs_test_core()
232 activate.gen2.start = status_chunk; in ifs_test_core()
234 activate.gen0.start = status_chunk; in ifs_test_core()
240 ifsd->scan_details = status.data; in ifs_test_core()
243 ifsd->status = SCAN_TEST_FAIL; in ifs_test_core()
246 ifsd->status = SCAN_NOT_TESTED; in ifs_test_core()
249 ifsd->status = SCAN_TEST_PASS; in ifs_test_core()
270 timeout -= SPINUNIT; in wait_for_sibling_cpu()
282 * Only one logical CPU on a core needs to trigger the Array test via MSR write. in do_array_test()
287 wrmsrl(MSR_ARRAY_BIST, command->data); in do_array_test()
289 rdmsrl(MSR_ARRAY_BIST, command->data); in do_array_test()
322 ifsd->scan_details = command.data; in ifs_array_test_core()
325 ifsd->status = SCAN_TEST_FAIL; in ifs_array_test_core()
327 ifsd->status = SCAN_NOT_TESTED; in ifs_array_test_core()
329 ifsd->status = SCAN_TEST_PASS; in ifs_array_test_core()
356 ifsd->scan_details = status; in ifs_array_test_gen1()
359 ifsd->status = SCAN_TEST_FAIL; in ifs_array_test_gen1()
361 ifsd->status = SCAN_TEST_PASS; in ifs_array_test_gen1()
367 * wait for all sibling threads to finish the scan test.
380 ret = -EINVAL; in do_core_test()
384 switch (test->test_num) { in do_core_test()
386 if (!ifsd->loaded) in do_core_test()
387 ret = -EPERM; in do_core_test()
392 if (ifsd->array_gen == ARRAY_GEN0) in do_core_test()
398 ret = -EINVAL; in do_core_test()