14 #include <linux/wait.h>
34 if ((rsc < 0) || (rsc >=
NR_RSCS))
37 if (crw_handlers[rsc])
51 if ((rsc < 0) || (rsc >=
NR_RSCS))
61 static int crw_collect_info(
void *
unused)
80 "than two chained crws; please report to "
82 ccode = stcrw(&tmp_crw);
84 "chn=%d, rsc=%X, anc=%d, erc=%X, rsid=%X\n",
85 __func__, tmp_crw.slct, tmp_crw.oflw,
86 tmp_crw.chn, tmp_crw.rsc, tmp_crw.anc,
87 tmp_crw.erc, tmp_crw.rsid);
89 "chain\n", __func__, chain);
92 chain = tmp_crw.chn ? chain + 1 : 0;
95 ccode = stcrw(&
crw[chain]);
99 "chn=%d, rsc=%X, anc=%d, erc=%X, rsid=%X\n",
107 pr_debug(
"%s: crw overflow detected!\n", __func__);
109 for (i = 0; i <
NR_RSCS; i++) {
117 if (
crw[0].
chn && !chain) {
124 handler(&crw[0], chain ? &crw[1] :
NULL, 0);
127 chain = crw[
chain].chn ? chain + 1 : 0;
151 static int __init crw_machine_check_init(
void)
157 return PTR_ERR(task);