Lines Matching +full:critical +full:- +full:action
1 // SPDX-License-Identifier: GPL-2.0-or-later
114 switch (mlog->error_type) { in rtas_mc_error_sub_type()
116 return (mlog->sub_err_type & 0x07); in rtas_mc_error_sub_type()
120 return (mlog->sub_err_type & 0x03); in rtas_mc_error_sub_type()
122 return (mlog->sub_err_type & 0x70) >> 4; in rtas_mc_error_sub_type()
138 np = of_find_node_by_path("/event-sources/hot-plug-events"); in init_ras_hotplug_IRQ()
161 np = of_find_node_by_path("/event-sources/internal-errors"); in init_ras_IRQ()
169 np = of_find_node_by_path("/event-sources/epow-events"); in init_ras_IRQ()
198 pr_emerg("Loss of system critical functions detected. Check" in handle_system_shutdown()
242 epow_log = (struct epow_errorlog *)pseries_log->data; in rtas_parse_epow_errlog()
243 action_code = epow_log->sensor_value & 0xF; /* bottom 4 bits */ in rtas_parse_epow_errlog()
244 modifier = epow_log->event_modifier & 0xF; /* bottom 4 bits */ in rtas_parse_epow_errlog()
249 pr_info("Non critical power/cooling issue cleared\n"); in rtas_parse_epow_errlog()
250 num_epow_events--; in rtas_parse_epow_errlog()
255 pr_info("Non-critical cooling issue detected. Check RTAS error" in rtas_parse_epow_errlog()
260 pr_info("Non-critical power issue detected. Check RTAS error" in rtas_parse_epow_errlog()
269 pr_emerg("Critical power/cooling issue detected. Check RTAS" in rtas_parse_epow_errlog()
283 pr_err("Unknown power/cooling event (action code = %d)\n", in rtas_parse_epow_errlog()
306 hp_elog = (struct pseries_hp_errorlog *)pseries_log->data; in ras_hotplug_interrupt()
312 if (hp_elog->resource == PSERIES_HP_ELOG_RESOURCE_MEM || in ras_hotplug_interrupt()
313 hp_elog->resource == PSERIES_HP_ELOG_RESOURCE_CPU || in ras_hotplug_interrupt()
314 hp_elog->resource == PSERIES_HP_ELOG_RESOURCE_PMEM) in ras_hotplug_interrupt()
327 int critical; in ras_epow_interrupt() local
332 critical = 1; /* Time Critical */ in ras_epow_interrupt()
334 critical = 0; in ras_epow_interrupt()
339 virq_to_hw(irq), RTAS_EPOW_WARNING, critical, __pa(&ras_log_buf), in ras_epow_interrupt()
353 * RTAS check-exception is called to collect data on the exception. If
369 RTAS_INTERNAL_ERROR, 1 /* Time Critical */, in ras_error_interrupt()
403 ((((A) >= 0x7000) && ((A) <= 0x8000 - 16)) || \
404 (((A) >= rtas.base) && ((A) <= (rtas.base + rtas.size - 16))))
408 return (struct rtas_error_log *)local_paca->mce_data_buf; in fwnmi_get_errlog()
416 savep_ra = regs->gpr[3] & ~(0x3UL << 62); in fwnmi_get_savep()
418 printk(KERN_ERR "FWNMI: corrupt r3 0x%016lx\n", regs->gpr[3]); in fwnmi_get_savep()
437 * ibm,nmi-interlock which would result in us checkstopping if a
449 regs->gpr[3] = be64_to_cpu(savep[0]); /* restore original r3 */ in fwnmi_get_errinfo()
453 memset(local_paca->mce_data_buf, 0, RTAS_ERROR_LOG_MAX); in fwnmi_get_errinfo()
455 memcpy(local_paca->mce_data_buf, h, sizeof(__u64)); in fwnmi_get_errinfo()
461 memcpy(local_paca->mce_data_buf, h, len); in fwnmi_get_errinfo()
464 return (struct rtas_error_log *)local_paca->mce_data_buf; in fwnmi_get_errinfo()
478 * args can be on-stack. in fwnmi_release_errinfo()
483 printk(KERN_ERR "FWNMI: nmi-interlock failed: %d\n", ret); in fwnmi_release_errinfo()
495 if ((be64_to_cpu(regs->msr) & in pSeries_system_reset_exception()
498 regs_set_return_ip(regs, be64_to_cpu((__be64)regs->nip)); in pSeries_system_reset_exception()
513 * "ibm,nmi-interlock" rtas call to release. in pSeries_system_reset_exception()
518 regs->gpr[3] = be64_to_cpu(savep[0]); /* restore original r3 */ in pSeries_system_reset_exception()
546 if (local_paca->in_mce == 1) in mce_handle_err_realmode()
547 slb_save_contents(local_paca->mce_faulty_slbs); in mce_handle_err_realmode()
578 error_type = mce_log->error_type; in mce_handle_err_virtmode()
641 if (mce_log->sub_err_type & UE_EFFECTIVE_ADDR_PROVIDED) in mce_handle_err_virtmode()
642 eaddr = be64_to_cpu(mce_log->effective_address); in mce_handle_err_virtmode()
644 if (mce_log->sub_err_type & UE_LOGICAL_ADDR_PROVIDED) { in mce_handle_err_virtmode()
645 paddr = be64_to_cpu(mce_log->logical_address); in mce_handle_err_virtmode()
646 } else if (mce_log->sub_err_type & UE_EFFECTIVE_ADDR_PROVIDED) { in mce_handle_err_virtmode()
669 if (mce_log->sub_err_type & MC_EFFECTIVE_ADDR_PROVIDED) in mce_handle_err_virtmode()
670 eaddr = be64_to_cpu(mce_log->effective_address); in mce_handle_err_virtmode()
686 if (mce_log->sub_err_type & MC_EFFECTIVE_ADDR_PROVIDED) in mce_handle_err_virtmode()
687 eaddr = be64_to_cpu(mce_log->effective_address); in mce_handle_err_virtmode()
703 if (mce_log->sub_err_type & MC_EFFECTIVE_ADDR_PROVIDED) in mce_handle_err_virtmode()
704 eaddr = be64_to_cpu(mce_log->effective_address); in mce_handle_err_virtmode()
724 if (mce_log->sub_err_type & MC_EFFECTIVE_ADDR_PROVIDED) in mce_handle_err_virtmode()
725 eaddr = be64_to_cpu(mce_log->effective_address); in mce_handle_err_virtmode()
734 &mce_err, regs->nip, eaddr, paddr); in mce_handle_err_virtmode()
752 mce_log = (struct pseries_mc_errorlog *)pseries_log->data; in mce_handle_error()
753 error_type = mce_log->error_type; in mce_handle_error()
776 * the Firmware Non-Maskable Interrupts (fwnmi) handler
790 } else if (evt->disposition == MCE_DISPOSITION_RECOVERED) { in recover_mce()
793 } else if (evt->severity == MCE_SEV_FATAL) { in recover_mce()
799 if (!recovered && evt->sync_error) { in recover_mce()
807 * TODO: This is not quite right for d-side machine in recover_mce()
808 * checks ->nip is not necessarily the important in recover_mce()
812 _exception(SIGBUS, regs, BUS_MCEERR_AR, regs->nip); in recover_mce()
833 * Note that on Power 4 and beyond Firmware Non-Maskable Interrupts (fwnmi)