If the non maskable interrupt was caused by a memory parity error on the main board, the function shown in Figure 11.11, from arch/i386/kernel/traps.c, is called. It prints a warning message and reenables parity error detection.
380 static void mem_parity_error(unsigned char reason, struct pt_regs * regs)
382 printk("Uhhuh. NMI received. Dazed and confused, but trying to continue\n");
38 3 printk("You probably have a hardware problem with your RAM
387 outb(reason, 0x61);
Figure 11.11 Clearing and disabling the memory parity bit
380 the reason parameter is a byte read from port 0x61, port B of the PC. The pt_regs structure on the stack is never used.
386 the four high-order bits of reason are cleared. These are read-only bits anyway. The four low-order bits are not affected. Bit 2 is set. This clears system board parity detection (bit 7) but leaves it disabled. The user has been warned that there is a problem; we do not want to be overwhelmed with repetitions of the same interrupt.
387 then this value is then written to IO port 0x61, port B of the PC.
Was this article helpful?
Read how to maintain and repair any desktop and laptop computer. This Ebook has articles with photos and videos that show detailed step by step pc repair and maintenance procedures. There are many links to online videos that explain how you can build, maintain, speed up, clean, and repair your computer yourself. Put the money that you were going to pay the PC Tech in your own pocket.