Lines Matching +full:- +full:- +full:disable +full:- +full:fdt

6  * Copyright (c) 2010-2011 David Gibson, IBM Corporation.
30 #include "qemu/error-report.h"
48 #include "hw/ppc/fdt.h"
49 #include "target/ppc/mmu-hash64.h"
50 #include "target/ppc/mmu-book3s-v3.h"
113 CPUPPCState *env = &cpu->env; in rtas_query_cpu_stopped_state()
114 if (env->quiesced) { in rtas_query_cpu_stopped_state()
155 env = &newcpu->env; in rtas_start_cpu()
157 if (!CPU(newcpu)->halted) { in rtas_start_cpu()
164 env->msr = (1ULL << MSR_SF) | (1ULL << MSR_ME); in rtas_start_cpu()
167 caller_lpcr = callcpu->env.spr[SPR_LPCR]; in rtas_start_cpu()
168 lpcr = env->spr[SPR_LPCR]; in rtas_start_cpu()
176 if (env->mmu_model == POWERPC_MMU_3_00) { in rtas_start_cpu()
186 env->spr[SPR_PSSCR] &= ~PSSCR_EC; in rtas_start_cpu()
195 newcpu->env.tb_env->tb_offset = callcpu->env.tb_env->tb_offset; in rtas_start_cpu()
210 CPUPPCState *env = &cpu->env; in rtas_stop_self()
213 /* Disable Power-saving mode Exit Cause exceptions for the CPU. in rtas_stop_self()
218 env->spr[SPR_PSSCR] |= PSSCR_EC; in rtas_stop_self()
219 env->quiesced = true; /* set "RTAS stopped" state. */ in rtas_stop_self()
221 cs->halted = 1; in rtas_stop_self()
222 ppc_store_lpcr(cpu, env->spr[SPR_LPCR] & ~pcc->lpcr_pm); in rtas_stop_self()
241 CPUPPCState *e = &c->env; in rtas_ibm_suspend_me()
247 if (!cs->halted || (e->msr & (1ULL << MSR_EE))) { in rtas_ibm_suspend_me()
266 cpu_physical_memory_write(phys + 2, val, MIN(len - 2, vallen)); in sysparm_st()
289 ms->smp.max_cpus, in rtas_ibm_get_system_parameter()
290 ms->ram_size / MiB, in rtas_ibm_get_system_parameter()
291 ms->smp.cpus, in rtas_ibm_get_system_parameter()
292 ms->smp.max_cpus); in rtas_ibm_get_system_parameter()
293 if (pcc->n_host_threads > 0) { in rtas_ibm_get_system_parameter()
301 pcc->n_host_threads); in rtas_ibm_get_system_parameter()
356 cpu_physical_memory_read(msgaddr, msg, sizeof(msg) - 1); in rtas_ibm_os_term()
357 msg[sizeof(msg) - 1] = 0; in rtas_ibm_os_term()
381 if (power_domain != -1) { in rtas_set_power_level()
406 if (power_domain != -1) { in rtas_get_power_level()
439 if (sreset_addr >= 32 * MiB || sreset_addr >= spapr->rma_size || in rtas_ibm_nmi_register()
440 mce_addr >= 32 * MiB || mce_addr >= spapr->rma_size) { in rtas_ibm_nmi_register()
452 spapr->fwnmi_system_reset_addr = sreset_addr; in rtas_ibm_nmi_register()
453 spapr->fwnmi_machine_check_addr = mce_addr; in rtas_ibm_nmi_register()
469 if (spapr->fwnmi_machine_check_addr == -1) { in rtas_ibm_nmi_interlock()
471 "FWNMI: ibm,nmi-interlock RTAS called with FWNMI not registered.\n"); in rtas_ibm_nmi_interlock()
478 if (spapr->fwnmi_machine_check_interlock != cpu->vcpu_id) { in rtas_ibm_nmi_interlock()
480 * The vCPU that hit the NMI should invoke "ibm,nmi-interlock" in rtas_ibm_nmi_interlock()
481 * This should be PARAM_ERROR, but Linux calls "ibm,nmi-interlock" in rtas_ibm_nmi_interlock()
484 * failure causes Linux to print the error "FWNMI: nmi-interlock in rtas_ibm_nmi_interlock()
485 * failed: -3", although no other apparent ill effects, this is a in rtas_ibm_nmi_interlock()
495 * vCPU issuing "ibm,nmi-interlock" is done with NMI handling, in rtas_ibm_nmi_interlock()
498 spapr->fwnmi_machine_check_interlock = -1; in rtas_ibm_nmi_interlock()
499 qemu_cond_signal(&spapr->fwnmi_machine_check_interlock_cond); in rtas_ibm_nmi_interlock()
501 migrate_del_blocker(&spapr->fwnmi_migration_blocker); in rtas_ibm_nmi_interlock()
507 } rtas_table[RTAS_TOKEN_MAX - RTAS_TOKEN_BASE];
514 struct rtas_call *call = rtas_table + (token - RTAS_TOKEN_BASE); in spapr_rtas_call()
516 if (call->fn) { in spapr_rtas_call()
517 call->fn(cpu, spapr, token, nargs, args, nret, rets); in spapr_rtas_call()
522 /* HACK: Some Linux early debug code uses RTAS display-character, in spapr_rtas_call()
541 for (token = 0; token < RTAS_TOKEN_MAX - RTAS_TOKEN_BASE; token++) { in qtest_rtas_call()
583 token -= RTAS_TOKEN_BASE; in spapr_rtas_register()
591 void spapr_dt_rtas_tokens(void *fdt, int rtas) in spapr_dt_rtas_tokens() argument
595 for (i = 0; i < RTAS_TOKEN_MAX - RTAS_TOKEN_BASE; i++) { in spapr_dt_rtas_tokens()
598 if (!call->name) { in spapr_dt_rtas_tokens()
602 _FDT(fdt_setprop_cell(fdt, rtas, call->name, i + RTAS_TOKEN_BASE)); in spapr_dt_rtas_tokens()
611 void *fdt = spapr->fdt_blob; in spapr_get_rtas_addr() local
613 /* fetch rtas addr from fdt */ in spapr_get_rtas_addr()
614 rtas_node = fdt_path_offset(fdt, "/rtas"); in spapr_get_rtas_addr()
619 rtas_data = fdt_getprop(fdt, rtas_node, "linux,rtas-base", NULL); in spapr_get_rtas_addr()
625 * We assume that the OS called RTAS instantiate-rtas, but some other in spapr_get_rtas_addr()
626 * OS might call RTAS instantiate-rtas-64 instead. This fine as of now in spapr_get_rtas_addr()
627 * as SLOF only supports 32-bit variant. in spapr_get_rtas_addr()
634 spapr_rtas_register(RTAS_DISPLAY_CHARACTER, "display-character", in core_rtas_register_types()
636 spapr_rtas_register(RTAS_POWER_OFF, "power-off", rtas_power_off); in core_rtas_register_types()
637 spapr_rtas_register(RTAS_SYSTEM_REBOOT, "system-reboot", in core_rtas_register_types()
639 spapr_rtas_register(RTAS_QUERY_CPU_STOPPED_STATE, "query-cpu-stopped-state", in core_rtas_register_types()
641 spapr_rtas_register(RTAS_START_CPU, "start-cpu", rtas_start_cpu); in core_rtas_register_types()
642 spapr_rtas_register(RTAS_STOP_SELF, "stop-self", rtas_stop_self); in core_rtas_register_types()
643 spapr_rtas_register(RTAS_IBM_SUSPEND_ME, "ibm,suspend-me", in core_rtas_register_types()
646 "ibm,get-system-parameter", in core_rtas_register_types()
649 "ibm,set-system-parameter", in core_rtas_register_types()
651 spapr_rtas_register(RTAS_IBM_OS_TERM, "ibm,os-term", in core_rtas_register_types()
653 spapr_rtas_register(RTAS_SET_POWER_LEVEL, "set-power-level", in core_rtas_register_types()
655 spapr_rtas_register(RTAS_GET_POWER_LEVEL, "get-power-level", in core_rtas_register_types()
657 spapr_rtas_register(RTAS_IBM_NMI_REGISTER, "ibm,nmi-register", in core_rtas_register_types()
659 spapr_rtas_register(RTAS_IBM_NMI_INTERLOCK, "ibm,nmi-interlock", in core_rtas_register_types()