Lines Matching full:mca
3 * File: mca.c
4 * Purpose: Generic MCA handling layer
28 * Fixed PAL/SAL update issues, began MCA bug fixes, logging issues,
38 * Aligned MCA stack to 16 bytes, added platform vs. CPU error flag,
54 * Avoid deadlock when using printk() for MCA and INIT records.
61 * Convert MCA/INIT handlers to use per event stacks and SAL/OS
68 * Add printing support for MCA/INIT.
99 #include <asm/mca.h>
126 if ((notify_die((event), "MCA", (regs), (arg), 0, 0) \
176 * limited & delayed printing support for MCA/INIT handler
184 static DEFINE_SPINLOCK(mlogbuf_wlock); /* mca context only */
295 "MCA/INIT might be dodgy or fail.\n"); in ia64_mlogbuf_finish()
350 #define IA64_MAX_LOG_TYPES 4 /* MCA, INIT, CMC, CPE */
392 * Inputs : info_type (SAL_INFO_TYPE_{MCA,INIT,CMC,CPE})
416 * Get the current MCA log from SAL and copy it into the OS log buffer.
418 * Inputs : info_type (SAL_INFO_TYPE_{MCA,INIT,CMC,CPE})
459 * Inputs : sal_info_type (Type of error record MCA/CMC/CPE)
460 * FIXME: remove MCA and irq_safe.
470 static const char * const rec_name[] = { "MCA", "INIT", "CMC", "CPE" }; in ia64_mca_log_sal_error_record()
492 * See if the MCA surfaced in an instruction range
524 /* Given an address, look for it in the mca tables. */
768 * while the monarch processor does the mca handling and later
830 /* Function pointer for extra MCA recovery */
868 /* Change the comm field on the MCA/INT task to include the pid that
870 * (swapper or nested MCA/INIT) then use the start of the previous comm
962 * that we can do backtrace on the MCA/INIT handler code itself.
995 /* Best effort attempt to cope with MCA/INIT delivered while in in ia64_mca_modify_original_stack()
1133 * the time of MCA/INIT. It also does flushrs, so all registers before in ia64_mca_modify_original_stack()
1134 * this function have been written to backing store on the MCA/INIT in ia64_mca_modify_original_stack()
1170 * so. In this context, slave includes cpus that respond to the MCA rendezvous
1268 * This is the place where the core of OS MCA handling is done.
1271 * monarch processor. Once the monarch is done with MCA handling
1272 * further MCA logging is enabled by clearing logs.
1278 * bitmask. After the first monarch has processed its MCA, it
1281 * their MCA, the last monarch frees up the rest of the processors.
1301 mprintk(KERN_INFO "Entered OS MCA handler. PSP=%lx cpu=%d " in ia64_mca_handler()
1304 previous_current = ia64_mca_modify_original_stack(regs, sw, sos, "MCA"); in ia64_mca_handler()
1310 ia64_wait_for_slaves(cpu, "MCA"); in ia64_mca_handler()
1315 * MCA handler. That gets control back to the OS so we can in ia64_mca_handler()
1327 /* Get the MCA error record and log it */ in ia64_mca_handler()
1330 /* MCA error recovery */ in ia64_mca_handler()
1657 * returns. We can also get INIT slave events for MCA, in which case the MCA
1771 /* Minimal format of the MCA/INIT stacks. The pseudo processes that run on
1805 /* Do per-CPU MCA-related initialization. */
1829 panic("Could not allocate MCA memory for cpu %d\n", in ia64_mca_cpu_init()
1833 "MCA", cpu); in ia64_mca_cpu_init()
1840 * We may need it during MCA recovery. in ia64_mca_cpu_init()
1872 * Do all the system level mca specific initialization.
1880 * 4. Initialize MCA/CMC/INIT related log buffers maintained by the OS.
1925 printk(KERN_INFO "Increasing MCA rendezvous timeout from " in ia64_mca_init()
1948 IA64_MCA_DEBUG("%s: registered MCA rendezvous spinloop and wakeup mech.\n", __func__); in ia64_mca_init()
1957 /* Register the os mca handler with SAL */ in ia64_mca_init()
1964 printk(KERN_ERR "Failed to register OS MCA handler with SAL " in ia64_mca_init()
1969 IA64_MCA_DEBUG("%s: registered OS MCA handler with SAL at 0x%lx, gp = 0x%lx\n", __func__, in ia64_mca_init()
2005 * platform/processor error states for MCA/INIT/CMC in ia64_mca_init()
2014 printk(KERN_INFO "MCA related initialization done\n"); in ia64_mca_init()
2037 /* Setup the MCA rendezvous interrupt vector */ in ia64_mca_irq_init()
2041 /* Setup the MCA wakeup interrupt vector */ in ia64_mca_irq_init()
2071 cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "ia64/mca:online", in ia64_mca_late_init()