patch-2.4.25 linux-2.4.25/arch/ppc64/kernel/ras.c
Next file: linux-2.4.25/arch/ppc64/kernel/rtas-proc.c
Previous file: linux-2.4.25/arch/ppc64/kernel/ptrace32.c
Back to the patch index
Back to the overall index
- Lines: 72
- Date:
2004-02-18 05:36:30.000000000 -0800
- Orig file:
linux-2.4.24/arch/ppc64/kernel/ras.c
- Orig date:
2002-08-02 17:39:43.000000000 -0700
diff -urN linux-2.4.24/arch/ppc64/kernel/ras.c linux-2.4.25/arch/ppc64/kernel/ras.c
@@ -73,7 +73,7 @@
(ireg = (unsigned int *)get_property(np, "open-pic-interrupt",
&len))) {
for(i=0; i<(len / sizeof(*ireg)); i++) {
- request_irq(virt_irq_create_mapping(*(ireg)) + NUM_8259_INTERRUPTS,
+ request_irq(irq_offset_up(*(ireg)),
&ras_error_interrupt, 0,
"RAS_ERROR", NULL);
ireg++;
@@ -84,7 +84,7 @@
(ireg = (unsigned int *)get_property(np, "open-pic-interrupt",
&len))) {
for(i=0; i<(len / sizeof(*ireg)); i++) {
- request_irq(virt_irq_create_mapping(*(ireg)) + NUM_8259_INTERRUPTS,
+ request_irq(irq_offset_up(*(ireg)),
&ras_epow_interrupt, 0,
"RAS_EPOW", NULL);
ireg++;
@@ -108,7 +108,7 @@
status = rtas_call(rtas_token("check-exception"), 6, 1, NULL,
0x500, irq,
- EPOW_WARNING | POWERMGM_EVENTS,
+ RTAS_EPOW_WARNING | RTAS_POWERMGM_EVENTS,
1, /* Time Critical */
__pa(&log_entry), size);
@@ -116,6 +116,9 @@
*((unsigned long *)&log_entry), status);
printk(KERN_WARNING
"EPOW <0x%lx 0x%lx>\n",*((unsigned long *)&log_entry), status);
+
+ /* format and print the extended information */
+ log_error((char *)&log_entry, ERR_TYPE_RTAS_LOG, 0);
}
/*
@@ -132,15 +135,23 @@
struct rtas_error_log log_entry;
unsigned int size = sizeof(log_entry);
long status = 0xdeadbeef;
+ int fatal;
status = rtas_call(rtas_token("check-exception"), 6, 1, NULL,
0x500, irq,
- INTERNAL_ERROR,
+ RTAS_INTERNAL_ERROR,
1, /* Time Critical */
__pa(&log_entry), size);
- if((status != 1) &&
- (log_entry.severity >= SEVERITY_ERROR_SYNC)) {
+ if ((status == 0) && (log_entry.severity >= SEVERITY_ERROR_SYNC))
+ fatal = 1;
+ else
+ fatal = 0;
+
+ /* format and print the extended information */
+ log_error((char *)&log_entry, ERR_TYPE_RTAS_LOG, fatal);
+
+ if (fatal) {
udbg_printf("HW Error <0x%lx 0x%lx>\n",
*((unsigned long *)&log_entry), status);
printk(KERN_EMERG
@@ -150,6 +161,7 @@
#ifndef DEBUG
/* Don't actually power off when debugging so we can test
* without actually failing while injecting errors.
+ * Error data will not be logged to syslog.
*/
ppc_md.power_off();
#endif
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)