- }
- }
-
- if (j == post_list_size) {
- printf("No such test: %s\n", name);
- }
-
- name = s + 1;
- }
- }
-
- for (j = 0; j < post_list_size; j++) {
- if (test_flags[j] & POST_POWERON) {
- test_flags[j] |= POST_SLOWTEST;
- }
- }
-}
-
-static int post_run_single(struct post_test *test,
- int test_flags, int flags, unsigned int i)
-{
- if ((flags & test_flags & POST_ALWAYS) &&
- (flags & test_flags & POST_MEM)) {
- WATCHDOG_RESET();
-
- if (!(flags & POST_REBOOT)) {
- if ((test_flags & POST_REBOOT)
- && !(flags & POST_MANUAL)) {
- post_bootmode_test_on(i);
- }
-
- if (test_flags & POST_PREREL)
- post_log_mark_start(test->testid);
- else
- post_log("POST %s ", test->cmd);
- }
-
- if (test_flags & POST_PREREL) {
- if ((*test->test) (flags) == 0)
- post_log_mark_succ(test->testid);
- } else {
- if ((*test->test) (flags) != 0) {
- post_log("FAILED\n");
- show_boot_progress (-32);
- } else
- post_log("PASSED\n");
- }
-
- if ((test_flags & POST_REBOOT) && !(flags & POST_MANUAL)) {
- post_bootmode_test_off();
- }
-
- return 0;
- } else {
- return -1;
- }
-}
-
-int post_run(char *name, int flags)
-{
- unsigned int i;
- int test_flags[POST_MAX_NUMBER];
-
- post_get_flags(test_flags);
-
- if (name == NULL) {
- unsigned int last;
-
- if (post_bootmode_get(&last) & POST_POWERTEST) {
- if (last < post_list_size &&
- (flags & test_flags[last] & POST_ALWAYS) &&
- (flags & test_flags[last] & POST_MEM)) {
-
- post_run_single(post_list + last,
- test_flags[last],
- flags | POST_REBOOT, last);
-
- for (i = last + 1; i < post_list_size; i++) {
- post_run_single(post_list + i,
- test_flags[i],
- flags, i);
- }
- }
- } else {
- for (i = 0; i < post_list_size; i++) {
- post_run_single(post_list + i,
- test_flags[i], flags, i);