6 #include <linux/sched.h>
9 #include <linux/module.h>
11 #include <asm/machvec.h>
13 #include <asm/perf_event.h>
20 #ifdef CONFIG_ALPHA_BROKEN_IRQ_MASK
56 "You must be kidding!\n");
60 old_regs = set_irq_regs(regs);
77 set_irq_regs(old_regs);
80 old_regs = set_irq_regs(regs);
81 alpha_mv.machine_check(vector, la_ptr);
82 set_irq_regs(old_regs);
85 old_regs = set_irq_regs(regs);
86 alpha_mv.device_interrupt(vector);
87 set_irq_regs(old_regs);
121 #define MCHK_K_TPERR 0x0080
122 #define MCHK_K_TCPERR 0x0082
123 #define MCHK_K_HERR 0x0084
124 #define MCHK_K_ECC_C 0x0086
125 #define MCHK_K_ECC_NC 0x0088
126 #define MCHK_K_OS_BUGCHECK 0x008A
127 #define MCHK_K_PAL_BUGCHECK 0x0090
135 const char *
machine,
int expected)
145 #ifdef CONFIG_VERBOSE_MCHECK
146 if (alpha_verbose_mcheck > 1) {
148 expected ?
"expected." :
"NOT expected!!!");
159 mchk_header = (
struct el_common *)la_ptr;
161 printk(
KERN_CRIT "%s machine check: vector=0x%lx pc=0x%lx code=0x%x\n",
164 switch (mchk_header->
code) {
166 case 0x80: reason =
"tag parity error";
break;
167 case 0x82: reason =
"tag control parity error";
break;
168 case 0x84: reason =
"generic hard error";
break;
169 case 0x86: reason =
"correctable ECC error";
break;
170 case 0x88: reason =
"uncorrectable ECC error";
break;
171 case 0x8A: reason =
"OS-specific PAL bugcheck";
break;
172 case 0x90: reason =
"callsys in kernel mode";
break;
173 case 0x96: reason =
"i-cache read retryable error";
break;
174 case 0x98: reason =
"processor detected hard error";
break;
177 case 0x202: reason =
"system detected hard error";
break;
178 case 0x203: reason =
"system detected uncorrectable ECC error";
break;
179 case 0x204: reason =
"SIO SERR occurred on PCI bus";
break;
180 case 0x205: reason =
"parity error detected by core logic";
break;
181 case 0x206: reason =
"SIO IOCHK occurred on ISA bus";
break;
182 case 0x207: reason =
"non-existent memory error";
break;
183 case 0x208: reason =
"MCHK_K_DCSR";
break;
184 case 0x209: reason =
"PCI SERR detected";
break;
185 case 0x20b: reason =
"PCI data parity error detected";
break;
186 case 0x20d: reason =
"PCI address parity error detected";
break;
187 case 0x20f: reason =
"PCI master abort error";
break;
188 case 0x211: reason =
"PCI target abort error";
break;
189 case 0x213: reason =
"scatter/gather PTE invalid error";
break;
190 case 0x215: reason =
"flash ROM write error";
break;
191 case 0x217: reason =
"IOA timeout detected";
break;
192 case 0x219: reason =
"IOCHK#, EISA add-in board parity or other catastrophic error";
break;
193 case 0x21b: reason =
"EISA fail-safe timer timeout";
break;
194 case 0x21d: reason =
"EISA bus time-out";
break;
195 case 0x21f: reason =
"EISA software generated NMI";
break;
196 case 0x221: reason =
"unexpected ev5 IRQ[3] interrupt";
break;
197 default: reason =
"unknown";
break;
201 reason, mchk_header->
retry ?
" (retryable)" :
"");
205 #ifdef CONFIG_VERBOSE_MCHECK
206 if (alpha_verbose_mcheck > 1) {
208 unsigned long *
ptr = (
unsigned long *)la_ptr;
210 for (i = 0; i < mchk_header->
size /
sizeof(
long); i += 2) {
212 i*
sizeof(
long), ptr[i], ptr[i+1]);
240 .name =
"isa-cascade"
245 .name =
"timer-cascade"
250 .name =
"halt-switch"