{"id":27843,"date":"2007-02-27T10:00:00","date_gmt":"2007-02-27T10:00:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/oldnewthing\/2007\/02\/27\/what-does-an-nmi-error-mean-the-infamous-hardware-malfunction\/"},"modified":"2007-02-27T10:00:00","modified_gmt":"2007-02-27T10:00:00","slug":"what-does-an-nmi-error-mean-the-infamous-hardware-malfunction","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20070227-00\/?p=27843","title":{"rendered":"What does an NMI error mean? (The infamous &#034;Hardware Malfunction&#034;)"},"content":{"rendered":"<p><a href=\"http:\/\/blogs.msdn.com\/oldnewthing\/archive\/2007\/01\/30\/1557491.aspx\"> I promised to talk more about NMI<\/a>, so here it is.\n What generates an NMI? What does it mean?\n The first question is easy to answer but doesn&#8217;t actually shed much light: Any device can pull the NMI line, and that will generate a non-maskable interrupt. Back in the Windows&nbsp;95 days, a few really cool people had taken the ball-point pen trick one step further: They had a special expansion card in their computer with a cord coming out the back. At the end of the cord was a momentary switch like the one you might see on a quiz show. If you pressed it, the card generated an NMI. No fumbling around with ball-point pens for these folks, no-ho! (To be honest, I had two of these. One of them was a simple NMI card, triggered by a foot pedal! The other was really a card with a high-resolution real-time clock that could be used for performance analysis. I used the NMI button far more often than the timer&#8230;)\n In practice, the only device that generates an NMI (on purpose) is the memory controller, which raises it when a <a href=\"http:\/\/support.microsoft.com\/?kbid=101272\"> parity error is detected<\/a>. The non-geek explanation of a parity error: Your memory chips are acting flakey.\n <a href=\"http:\/\/wendyhome.com\/2006\/03\/06\/blue-screen-of-tinkerbell\/\"> Here&#8217;s what a parity error looks like<\/a>. It shows up as a mysterious &#8220;Hardware Malfunction&#8221; error.\n Now, it&#8217;s possible that a device may be generating an NMI by mistake. For example, in Wendy&#8217;s case, it may have been due to damaged caused by overheating.\n If you suspect your memory chips, you can run a <a href=\"http:\/\/oca.microsoft.com\/en\/windiag.asp\"> memory diagnostic tool<\/a> to see if it can find the bad memory.<\/p>\n<p> My colleague Keith Moore reminded me that paradoxically, on the IBM PC-AT, you could mask the non-maskable interrupt! This definitely falls into the category of &#8220;Unclear on the concept.&#8221; The masking was done in hardware that could be configured via some magic port I\/O. It prevented the NMI from reaching the CPU in the first place. (NMI is still not maskable in the CPU.) <\/p>\n","protected":false},"excerpt":{"rendered":"<p>I promised to talk more about NMI, so here it is. What generates an NMI? What does it mean? The first question is easy to answer but doesn&#8217;t actually shed much light: Any device can pull the NMI line, and that will generate a non-maskable interrupt. Back in the Windows&nbsp;95 days, a few really cool [&hellip;]<\/p>\n","protected":false},"author":1069,"featured_media":111744,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[104],"class_list":["post-27843","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-tipssupport"],"acf":[],"blog_post_summary":"<p>I promised to talk more about NMI, so here it is. What generates an NMI? What does it mean? The first question is easy to answer but doesn&#8217;t actually shed much light: Any device can pull the NMI line, and that will generate a non-maskable interrupt. Back in the Windows&nbsp;95 days, a few really cool [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/27843","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/users\/1069"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/comments?post=27843"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/27843\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media\/111744"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media?parent=27843"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=27843"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=27843"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}