• Home
  • Raw
  • Download

Lines Matching +full:long +full:- +full:press +full:- +full:ms

49 void enter_rtas(unsigned long);
62 unsigned long rtas_rmo_buf;
65 * If non-NULL, this gets called when the kernel terminates.
76 static unsigned long lock_rtas(void) in lock_rtas()
78 unsigned long flags; in lock_rtas()
86 static void unlock_rtas(unsigned long flags) in unlock_rtas()
95 * are designed only for very early low-level debugging, which
96 * is why the token is hard-coded to 10.
100 unsigned long s; in call_rtas_display_status()
116 while (width-- > 0) in call_rtas_display_status_delay()
127 if (width--) { in call_rtas_display_status_delay()
172 return -1; in udbg_rtascon_getc_poll()
175 return -1; in udbg_rtascon_getc_poll()
184 while ((c = udbg_rtascon_getc_poll()) == -1) in udbg_rtascon_getc()
219 "ibm,display-line-length", NULL))) in rtas_progress()
222 "ibm,form-feed", NULL))) in rtas_progress()
225 "ibm,display-number-of-lines", NULL))) in rtas_progress()
228 "ibm,display-truncation-length", NULL); in rtas_progress()
231 display_character = rtas_token("display-character"); in rtas_progress()
232 set_indicator = rtas_token("set-indicator"); in rtas_progress()
280 if (current_line > display_lines-1) in rtas_progress()
281 current_line = display_lines-1; in rtas_progress()
286 /* RTAS wants CR-LF, not just LF */ in rtas_progress()
292 /* CR might be used to re-draw a line, so we'll in rtas_progress()
303 width--; in rtas_progress()
337 * Return the firmware-specified size of the error log buffer
339 * This includes 'check-exception' and 'rtas-last-error'.
347 rtas_error_log_max = rtas_token ("rtas-error-log-max"); in rtas_get_error_log_max()
374 if (rtas_last_error_token == -1) in __fetch_rtas_last_error()
424 args->token = cpu_to_be32(token); in va_rtas_call_unlocked()
425 args->nargs = cpu_to_be32(nargs); in va_rtas_call_unlocked()
426 args->nret = cpu_to_be32(nret); in va_rtas_call_unlocked()
427 args->rets = &(args->args[nargs]); in va_rtas_call_unlocked()
430 args->args[i] = cpu_to_be32(va_arg(list, __u32)); in va_rtas_call_unlocked()
433 args->rets[i] = 0; in va_rtas_call_unlocked()
451 unsigned long s; in rtas_call()
457 return -1; in rtas_call()
468 /* A -1 return code indicates that the last command couldn't in rtas_call()
470 if (be32_to_cpu(rtas_args->rets[0]) == -1) in rtas_call()
474 for (i = 0; i < nret-1; ++i) in rtas_call()
475 outputs[i] = be32_to_cpu(rtas_args->rets[i+1]); in rtas_call()
476 ret = (nret > 0)? be32_to_cpu(rtas_args->rets[0]): 0; in rtas_call()
489 /* For RTAS_BUSY (-2), delay for 1 millisecond. For an extended busy status
495 unsigned int ms = 0; in rtas_busy_delay_time() local
498 ms = 1; in rtas_busy_delay_time()
501 order = status - RTAS_EXTENDED_DELAY_MIN; in rtas_busy_delay_time()
502 for (ms = 1; order > 0; order--) in rtas_busy_delay_time()
503 ms *= 10; in rtas_busy_delay_time()
506 return ms; in rtas_busy_delay_time()
513 unsigned int ms; in rtas_busy_delay() local
516 ms = rtas_busy_delay_time(status); in rtas_busy_delay()
517 if (ms && need_resched()) in rtas_busy_delay()
518 msleep(ms); in rtas_busy_delay()
520 return ms; in rtas_busy_delay()
529 case -1: /* Hardware Error */ in rtas_error_rc()
530 rc = -EIO; in rtas_error_rc()
532 case -3: /* Bad indicator/domain/etc */ in rtas_error_rc()
533 rc = -EINVAL; in rtas_error_rc()
535 case -9000: /* Isolation error */ in rtas_error_rc()
536 rc = -EFAULT; in rtas_error_rc()
538 case -9001: /* Outstanding TCE/PTE */ in rtas_error_rc()
539 rc = -EEXIST; in rtas_error_rc()
541 case -9002: /* No usable slot */ in rtas_error_rc()
542 rc = -ENODEV; in rtas_error_rc()
547 rc = -ERANGE; in rtas_error_rc()
555 int token = rtas_token("get-power-level"); in rtas_get_power_level()
559 return -ENOENT; in rtas_get_power_level()
572 int token = rtas_token("set-power-level"); in rtas_set_power_level()
576 return -ENOENT; in rtas_set_power_level()
590 int token = rtas_token("get-sensor-state"); in rtas_get_sensor()
594 return -ENOENT; in rtas_get_sensor()
608 int token = rtas_token("get-sensor-state"); in rtas_get_sensor_fast()
612 return -ENOENT; in rtas_get_sensor_fast()
631 indicators = of_get_property(rtas.dev, "rtas-indicators", &proplen); in rtas_indicator_present()
651 int token = rtas_token("set-indicator"); in rtas_set_indicator()
655 return -ENOENT; in rtas_set_indicator()
673 int token = rtas_token("set-indicator"); in rtas_set_indicator_fast()
676 return -ENOENT; in rtas_set_indicator_fast()
693 printk("RTAS system-reboot returned %d\n", in rtas_restart()
694 rtas_call(rtas_token("system-reboot"), 0, 1, NULL)); in rtas_restart()
702 /* allow power on only with power button press */ in rtas_power_off()
703 printk("RTAS power-off returned %d\n", in rtas_power_off()
704 rtas_call(rtas_token("power-off"), 2, 1, NULL, -1, -1)); in rtas_power_off()
712 /* allow power on only with power button press */ in rtas_halt()
713 printk("RTAS power-off returned %d\n", in rtas_halt()
714 rtas_call(rtas_token("power-off"), 2, 1, NULL, -1, -1)); in rtas_halt()
726 * Firmware with the ibm,extended-os-term property is guaranteed in rtas_os_term()
727 * to always return from an ibm,os-term call. Earlier versions without in rtas_os_term()
731 if (RTAS_UNKNOWN_SERVICE == rtas_token("ibm,os-term") || in rtas_os_term()
732 RTAS_UNKNOWN_SERVICE == rtas_token("ibm,extended-os-term")) in rtas_os_term()
738 status = rtas_call(rtas_token("ibm,os-term"), 1, 1, NULL, in rtas_os_term()
743 printk(KERN_EMERG "ibm,os-term call failed %d\n", status); in rtas_os_term()
755 printk(KERN_DEBUG "calling ibm,suspend-me on cpu %i\n", smp_processor_id()); in __rtas_suspend_last_cpu()
757 while (rc == H_MULTI_THREADS_ACTIVE && !atomic_read(&data->done) && in __rtas_suspend_last_cpu()
758 !atomic_read(&data->error)) in __rtas_suspend_last_cpu()
759 rc = rtas_call(data->token, 0, 1, NULL); in __rtas_suspend_last_cpu()
761 if (rc || atomic_read(&data->error)) { in __rtas_suspend_last_cpu()
762 printk(KERN_DEBUG "ibm,suspend-me returned %d\n", rc); in __rtas_suspend_last_cpu()
766 if (atomic_read(&data->error)) in __rtas_suspend_last_cpu()
767 rc = atomic_read(&data->error); in __rtas_suspend_last_cpu()
769 atomic_set(&data->error, rc); in __rtas_suspend_last_cpu()
773 atomic_set(&data->done, 1); in __rtas_suspend_last_cpu()
779 if (atomic_dec_return(&data->working) == 0) in __rtas_suspend_last_cpu()
780 complete(data->complete); in __rtas_suspend_last_cpu()
787 atomic_inc(&data->working); in rtas_suspend_last_cpu()
793 long rc = H_SUCCESS; in __rtas_suspend_cpu()
794 unsigned long msr_save; in __rtas_suspend_cpu()
797 atomic_inc(&data->working); in __rtas_suspend_cpu()
803 while (rc == H_SUCCESS && !atomic_read(&data->done) && !atomic_read(&data->error)) in __rtas_suspend_cpu()
819 atomic_set(&data->error, rc); in __rtas_suspend_cpu()
823 atomic_set(&data->done, 1); in __rtas_suspend_cpu()
833 if (atomic_dec_return(&data->working) == 0) in __rtas_suspend_cpu()
834 complete(data->complete); in __rtas_suspend_cpu()
859 return -EINVAL; in rtas_cpu_state_change_mask()
941 long state; in rtas_ibm_suspend_me()
942 long rc; in rtas_ibm_suspend_me()
943 unsigned long retbuf[PLPAR_HCALL_BUFSIZE]; in rtas_ibm_suspend_me()
949 if (!rtas_service_present("ibm,suspend-me")) in rtas_ibm_suspend_me()
950 return -ENOSYS; in rtas_ibm_suspend_me()
961 return -EAGAIN; in rtas_ibm_suspend_me()
965 return -EIO; in rtas_ibm_suspend_me()
969 return -ENOMEM; in rtas_ibm_suspend_me()
974 data.token = rtas_token("ibm,suspend-me"); in rtas_ibm_suspend_me()
995 atomic_set(&data.error, -EINVAL); in rtas_ibm_suspend_me()
1019 return -ENOSYS; in rtas_ibm_suspend_me()
1034 (struct rtas_ext_event_log_v6 *)log->buffer; in get_pseries_errorlog()
1047 log_end = log->buffer + ext_log_length; in get_pseries_errorlog()
1048 p = ext_log->vendor_log; in get_pseries_errorlog()
1082 /* Indexes into the args buffer, -1 if not used */
1092 { "ibm,activate-firmware", -1, -1, -1, -1, -1 },
1093 { "ibm,configure-connector", -1, 0, -1, 1, -1, 4096 }, /* Special cased */
1094 { "display-character", -1, -1, -1, -1, -1 },
1095 { "ibm,display-message", -1, 0, -1, -1, -1 },
1096 { "ibm,errinjct", -1, 2, -1, -1, -1, 1024 },
1097 { "ibm,close-errinjct", -1, -1, -1, -1, -1 },
1098 { "ibm,open-errinct", -1, -1, -1, -1, -1 },
1099 { "ibm,get-config-addr-info2", -1, -1, -1, -1, -1 },
1100 { "ibm,get-dynamic-sensor-state", -1, 1, -1, -1, -1 },
1101 { "ibm,get-indices", -1, 2, 3, -1, -1 },
1102 { "get-power-level", -1, -1, -1, -1, -1 },
1103 { "get-sensor-state", -1, -1, -1, -1, -1 },
1104 { "ibm,get-system-parameter", -1, 1, 2, -1, -1 },
1105 { "get-time-of-day", -1, -1, -1, -1, -1 },
1106 { "ibm,get-vpd", -1, 0, -1, 1, 2 },
1107 { "ibm,lpar-perftools", -1, 2, 3, -1, -1 },
1108 { "ibm,platform-dump", -1, 4, 5, -1, -1 },
1109 { "ibm,read-slot-reset-state", -1, -1, -1, -1, -1 },
1110 { "ibm,scan-log-dump", -1, 0, 1, -1, -1 },
1111 { "ibm,set-dynamic-indicator", -1, 2, -1, -1, -1 },
1112 { "ibm,set-eeh-option", -1, -1, -1, -1, -1 },
1113 { "set-indicator", -1, -1, -1, -1, -1 },
1114 { "set-power-level", -1, -1, -1, -1, -1 },
1115 { "set-time-for-power-on", -1, -1, -1, -1, -1 },
1116 { "ibm,set-system-parameter", -1, 1, -1, -1, -1 },
1117 { "set-time-of-day", -1, -1, -1, -1, -1 },
1118 { "ibm,suspend-me", -1, -1, -1, -1, -1 },
1119 { "ibm,update-nodes", -1, 0, -1, -1, -1, 4096 },
1120 { "ibm,update-properties", -1, 0, -1, -1, -1, 4096 },
1121 { "ibm,physical-attestation", -1, 0, 1, -1, -1 },
1142 if (token != f->token) in block_rtas_call()
1145 if (f->buf_idx1 != -1) { in block_rtas_call()
1146 base = be32_to_cpu(args->args[f->buf_idx1]); in block_rtas_call()
1147 if (f->size_idx1 != -1) in block_rtas_call()
1148 size = be32_to_cpu(args->args[f->size_idx1]); in block_rtas_call()
1149 else if (f->fixed_size) in block_rtas_call()
1150 size = f->fixed_size; in block_rtas_call()
1154 end = base + size - 1; in block_rtas_call()
1159 if (f->buf_idx2 != -1) { in block_rtas_call()
1160 base = be32_to_cpu(args->args[f->buf_idx2]); in block_rtas_call()
1161 if (f->size_idx2 != -1) in block_rtas_call()
1162 size = be32_to_cpu(args->args[f->size_idx2]); in block_rtas_call()
1163 else if (f->fixed_size) in block_rtas_call()
1164 size = f->fixed_size; in block_rtas_call()
1167 end = base + size - 1; in block_rtas_call()
1170 * Special case for ibm,configure-connector where the in block_rtas_call()
1173 if (!strcmp(f->name, "ibm,configure-connector") && in block_rtas_call()
1185 pr_err_ratelimited("sys_rtas: RTAS call blocked - exploit attempt?\n"); in block_rtas_call()
1187 token, nargs, current->comm); in block_rtas_call()
1205 unsigned long flags; in SYSCALL_DEFINE1()
1210 return -EPERM; in SYSCALL_DEFINE1()
1213 return -EINVAL; in SYSCALL_DEFINE1()
1216 return -EFAULT; in SYSCALL_DEFINE1()
1225 return -EINVAL; in SYSCALL_DEFINE1()
1228 if (copy_from_user(args.args, uargs->args, in SYSCALL_DEFINE1()
1230 return -EFAULT; in SYSCALL_DEFINE1()
1233 return -EINVAL; in SYSCALL_DEFINE1()
1239 return -EINVAL; in SYSCALL_DEFINE1()
1252 if (rc == -EAGAIN) in SYSCALL_DEFINE1()
1254 else if (rc == -EIO) in SYSCALL_DEFINE1()
1255 args.rets[0] = cpu_to_be32(-1); in SYSCALL_DEFINE1()
1269 /* A -1 return code indicates that the last command couldn't in SYSCALL_DEFINE1()
1271 if (be32_to_cpu(args.rets[0]) == -1) in SYSCALL_DEFINE1()
1284 if (copy_to_user(uargs->args + nargs, in SYSCALL_DEFINE1()
1287 return -EFAULT; in SYSCALL_DEFINE1()
1294 * information from the device-tree and allocate the RMO buffer for userland
1299 unsigned long rtas_region = RTAS_INSTANTIATE_MAX; in rtas_initialize()
1313 no_base = of_property_read_u32(rtas.dev, "linux,rtas-base", &base); in rtas_initialize()
1314 no_size = of_property_read_u32(rtas.dev, "rtas-size", &size); in rtas_initialize()
1323 no_entry = of_property_read_u32(rtas.dev, "linux,rtas-entry", &entry); in rtas_initialize()
1327 * the stop-self token if any in rtas_initialize()
1332 ibm_suspend_me_token = rtas_token("ibm,suspend-me"); in rtas_initialize()
1338 rtas_last_error_token = rtas_token("rtas-last-error"); in rtas_initialize()
1348 int __init early_init_dt_scan_rtas(unsigned long node, in early_init_dt_scan_rtas()
1356 basep = of_get_flat_dt_prop(node, "linux,rtas-base", NULL); in early_init_dt_scan_rtas()
1357 entryp = of_get_flat_dt_prop(node, "linux,rtas-entry", NULL); in early_init_dt_scan_rtas()
1358 sizep = of_get_flat_dt_prop(node, "rtas-size", NULL); in early_init_dt_scan_rtas()
1367 basep = of_get_flat_dt_prop(node, "put-term-char", NULL); in early_init_dt_scan_rtas()
1371 basep = of_get_flat_dt_prop(node, "get-term-char", NULL); in early_init_dt_scan_rtas()
1390 unsigned long flags; in rtas_give_timebase()
1395 rtas_call(rtas_token("freeze-time-base"), 0, 1, NULL); in rtas_give_timebase()
1401 rtas_call(rtas_token("thaw-time-base"), 0, 1, NULL); in rtas_give_timebase()