patch-pre2.0.14-final2.0 linux/arch/alpha/kernel/cia.c

Next file: linux/arch/alpha/kernel/entry.S
Previous file: linux/arch/alpha/kernel/bios32.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file pre2.0.14/linux/arch/alpha/kernel/cia.c linux/arch/alpha/kernel/cia.c
@@ -138,6 +138,7 @@
 		DBG(("conf_read: TYPE1 access\n"));
 	}
 
+	mb();
 	draina();
 	CIA_mcheck_expected = 1;
 	CIA_mcheck_taken = 0;
@@ -159,7 +160,7 @@
 	 * know).  When we build kernels for one particular platform
 	 * then we can make this conditional on the type.
 	 */
-#if 1
+#if 0
 	draina();
 
 	/* now look for any errors */
@@ -229,7 +230,7 @@
 	 * know).  When we build kernels for one particular platform
 	 * then we can make this conditional on the type.
 	 */
-#if 1
+#if 0
 	draina();
 
 	/* now look for any errors */
@@ -439,8 +440,8 @@
 void cia_machine_check(unsigned long vector, unsigned long la_ptr,
 			 struct pt_regs * regs)
 {
-#if 1
-        printk("CIA machine check\n") ;
+#if 0
+        printk("CIA machine check ignored\n") ;
 #else
 	struct el_common *mchk_header;
 	struct el_CIA_sysdata_mcheck *mchk_sysdata;
@@ -470,16 +471,23 @@
 	 * Check if machine check is due to a badaddr() and if so,
 	 * ignore the machine check.
 	 */
-	if (CIA_mcheck_expected && (mchk_sysdata->epic_dcsr && 0x0c00UL)) {
+	mb();
+	mb();
+	if (CIA_mcheck_expected/* && (mchk_sysdata->epic_dcsr && 0x0c00UL)*/) {
+		DBG(("CIA machine check expected\n"));
 		CIA_mcheck_expected = 0;
 		CIA_mcheck_taken = 1;
 		mb();
 		mb();
+		draina();
 		cia_pci_clr_err();
 		wrmces(0x7);
 		mb();
-		draina();
 	}
+#if 1
+	else
+	  printk("CIA machine check NOT expected\n") ;
+#endif
 #endif
 }
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov with Sam's (original) version
of this