Bei Machine Check Architecture handelt es sich um einen Mechanismus innerhalb einer CPU, mit dem Hardwareprobleme erkannt und gemeldet werden können. Wenn ein Problem erkannt wird, wird eine Maschinenprüfausnahme (Machine Check Exception, MCE) ausgegeben. Falls eine MCE ausgegeben und ein violetter Diagnosebildschirm angezeigt wird, ist ein Hardwareproblem die Ursache. Es gibt keine andere Möglichkeit, eine MCE zu generieren.
Wenn im System ein violetter Bildschirm mit Fehlern angezeigt wird, erfassen Sie die Bildschirmausgabe und starten Sie dann den Server neu. Nehmen Sie außerdem Kontakt mit Ihrem Hardwareanbieter auf. In der Zwischenzeit können die Informationen zum Fehler selbst entschlüsselt werden, um besser zu verstehen, was möglicherweise passiert ist.
Während einer MCE werden die Inhalte der Machine Check Architecture-Register protokolliert. Die Meldungen werden im violetten Diagnosebildschirm selbst angezeigt und in der Protokolldatei innerhalb der VMkernel zdump-Datei aufgezeichnet. Weitere Informationen finden Sie unter Extracting the log file after an ESX or ESXi host fails with a purple screen error (1006796). Wenn die serielle Protokollierung konfiguriert ist, werden dieselben Meldungen am seriellen Port ausgegeben. Weitere Informationen finden Sie unter Enabling serial-line logging for an ESX and ESXi host (1003900).
Das globale MCA-Register (MCG_STATUS) meldet, ob eine MCE in Bearbeitung ist und ob der Befehlszähler, der auf den Stack geschoben wurde, verwendet werden kann, um die Ausführung des Programms zuverlässig neu zu starten, oder ob er dem Fehler direkt zugeordnet ist.
Das Register für globale Funktionen (MCG_CAP) gibt die Funktionen der Machine Check Architecture des Prozessors an. Die unteren 8 Bits geben die Anzahl der Fehlerberichterstattungs-Banken einer Hardware-Einheit an, die in einem bestimmten Prozessor vorhanden sind. Eine Bank mit Fehlerberichterstattungs-Registern ist einer bestimmten Hardware-Einheit (oder einer Gruppe von Hardware-Einheiten) zugeordnet, wobei die Zuordnung anbieter- und modellspezifisch ist. Weitere Informationen finden Sie in der Dokumentation des Anbieters, die im Abschnitt Zusätzliche Informationen dieses Artikels aufgeführt ist.
Jede Fehlerberichterstattungs-Bank setzt sich aus mehreren Registern zusammen. Von vorrangiger Bedeutung während einer Maschinenprüfausnahme ist das Statusregister (MCi_STATUS) der Bank, das detaillierte Informationen zu der Maschinenprüfausnahme enthält, sowie die Adressregister (MCi_ADDR) und die sonstigen Register (MCi_MISC), die möglicherweise zusätzliche Informationen liefern.
Verschiedene Versionen von ESX/ESXi protokollieren die Inhalte der Machine Check Architecture in verschiedenen Formaten. Weitere Informationen finden Sie unter Determining VMware Software Version and Build Number (392).
MCE
und beginnt mit der physischen CPU (C), bei der die Ausnahme aufgetreten ist. Das Register mit dem allgemeinen Status wird in einer eigenen Zeile angezeigt. Die Statusregister (s), Adressregister (a) und sonstigen Register (m) jeder zu prüfenden Bank werden in einer eigenen Zeile angezeigt. cpuC:xxxx)Alert: MCE: Machine Check Exception: General Status 000000000000000n
cpuC:xxxx)Alert: MCE: Machine Check Exception: Bank b, Status ssssssssssssssss
cpuC:xxxx)Alert: MCE: Machine Check Exception: Bank b, Addr aaaaaaaaaaaaaaaa
cpuC:xxxx)Alert: MCE: Machine Check Exception: Bank b, Misc mmmm
MCE
und enthält die Nummer der physischen CPU (C), die Banknummer (B) und die Statusregister (s), die sonstigen Register (m) und die Adressregister (a) gefolgt vom Wert des Registers mit dem allgemeinen Status.Machine Check Global status on cpuC: 0x000000000000000n
MCE on cpuC bankB: Status:0xssssssssssssssss Misc:0xmmmm Addr:0xaaaaaaaaaaaaaaaa
MC
und enthält die Nummer der physischen CPU, die Banknummer und die Status-, sonstigen und Adressregister, gefolgt vom Wert des Registers mit dem allgemeinen Status.MC:PCPUc B:b S:0xssssssssssssssss M:0xmmmm A:0xaaaaaaaaaaaaaaaan
Unabhängig von der ESX/ESXi-Version müssen die folgenden Informationen verfügbar sein:
MCE on cpuC bankB: Status:0xssssssssssssssss Misc:0xmmmm Addr:0xaaaaaaaaaaaaaaaa: Valid.UC.Err enabled.Misc valid.Addr valid.
Hardware (Machine) Error: Cache Hierarchy:_Level_2_Instruction_Cache_Instruction_Fetch_Error. PCPUc in world xxxx:process
Hinweis: Wenn die automatische Interpretation und die Interpretation des Anbieters nicht übereinstimmen, sollte die Interpretation des Anbieters als korrekt angesehen werden. Die Raw-Inhalte des Statusregisters sind ebenfalls verfügbar, sodass sie manuell überprüft werden können.
63 | 3 | 2 | 1 | 0 |
Reserviert | MCIP | EIPV | RIPV |
Beispielsweise entspricht der Wert „5“ des Registers dem globalen Status 0101 im Binärformat. Dies entspricht MCIP=1, EIPV=0, RIPV=1. Damit wird angegeben, dass eine Maschinenprüfung in Bearbeitung und die Neustart-IP (Restart IP) gültig ist.
Das Register MCi_STATUS jeder Bank enthält Informationen, die sich auf einen Maschinenprüfungsfehler beziehen. Diese Informationen sind nur sinnvoll und werden nur dann protokolliert, wenn das Flag für die Gültigkeit „Valid“ (Bit 63) gesetzt ist. Dieses Register umfasst 64 Bit.
63 | 62 | 61 | 60 | 59 | 58 | 57 | 56 | 32 | 31 | 16 | 15 | 0 |
VAL | OVER | UC | EN | MISCV | ADDRV | PCC | Weitere Informationen | Erweiterter Fehlercode | MCA-Fehlercode |
Die Bits 56:32 enthalten sonstige Informationen. Sie können reserviert oder für Indikatoren verwendet werden oder weitere modellspezifische Informationen enthalten. Weitere Informationen finden Sie in der Dokumentation des Anbieters, die im Abschnitt Zusätzliche Informationen dieses Artikels aufgeführt ist.
Die Bits 31:16 enthalten modellspezifischen erweiterten Fehlercode. Weitere Informationen finden Sie in der Dokumentation des Anbieters, die im Abschnitt Zusätzliche Informationen dieses Artikels aufgeführt ist.
Die Bits 15:0 enthalten den für die Machine Check Architecture definierten Fehlercode für die erkannte Maschinenprüfungs-Fehlerbedingung. Diese Fehlercodes sind für alle Prozessoren, die die Machine Check Architecture implementieren, identisch, wobei für einzelne Prozessormodelle möglicherweise zusätzliche Abstufungen definiert sind. Weitere Informationen finden Sie in der Dokumentation des Anbieters, die im Abschnitt Zusätzliche Informationen dieses Artikels aufgeführt ist.
Die Machine Check Architecture definiert verschiedene Fehler, die im Statusregister jeder Bank vorkommen können und in einfache und zusammengesetzte Fehlercodes eingeteilt werden. Ermitteln Sie das Muster, das den Inhalten des Statusregisters entspricht.
Einfache Fehlercodes geben einen bestimmten Fehler wieder und entsprechen genau den Inhalten des Statusregisters:
0000 0000 0000 0000
– Für diese Bank wurde kein Fehler gemeldet. 0000 0000 0000 0001
– Nicht klassifiziert. Dieser Fehler wurde in den MCA-Fehlerklassen nicht klassifiziert. Der Abschnitt mit zusätzlichen Informationen ist möglicherweise aussagekräftig. 0000 0000 0000 0010
– Paritätsfehler im internen Microcode-ROM 0000 0000 0000 0011
– Das BINT# eines anderen Prozessors hat verursacht, dass dieser Prozessor der Maschinenprüfung unterzogen wird. 0000 0000 0000 0100
– Master-/Slave-Fehler bei funktionaler Redundanzprüfung (Functional Redundancy Check, FRC) 0000 0000 0000 0101
– Interner Paritätsfehler 0000 0100 0000 0000
– Interner Timer-Fehler 0000 01xx xxxx xxxx
– Interner nicht klassifizierter Fehler. Mindestens ein x entspricht 1.Zusammengesetzte Fehlercodes folgen einem Muster und definieren mehrere Aspekte des Fehlers mit einer einzelnen Fehlernummer:
000F 0000 0000 11LL
– Generische Cache-Hierarchiefehler 000F 0000 0001 TTLL
– TLB-Fehler 000F 0000 1MMM CCCC
– Arbeitsspeicher-Controller-Fehler (nur Intel) 000F 0001 RRRR TTLL
– Arbeitsspeicherfehler in der Cache-Hierarchie 000F 1PPT RRRR IILL
– Bus- und Interconnect-FehlerUntergeordnete Felder zusammengesetzter Fehlercodes definieren Abschnitte eines zusammengesetzten Fehlercodes. Verwenden Sie diese, um die durch den zusammengesetzten Fehlercode definierte Vorlage aufzufüllen:
00
– Anweisung 01
– Daten 10
– Generisch 11
– Reserviert00
– Ebene 0 01
– Ebene 1 10
– Ebene 2 11
– Generisch000
– Generische nicht definierte Anforderung 001
– Arbeitsspeicher-Lesefehler 010
– Arbeitsspeicher-Schreibfehler 011
– Adress- oder Befehlsfehler 100
– Arbeitsspeicher-Bereinigungsfehler 101-111
– Reserviert0000-1110
– Kanalnummer 1111
– Kanal nicht angegeben0000
– Generischer Fehler 0001
– Generischer Lesevorgang 0010
– Generischer Schreibvorgang 0011
– Datenlesevorgang 0100
– Datenschreibvorgang 0101
– Abrufen der Anweisung 0110
– Vorabrufen 0111
– Entfernen 1000
– Überwachen (Test)00
– Anforderung wurde vom lokalen Knoten ausgegeben. 01
– Lokaler Knoten hat auf die Anforderung reagiert. 10
– Lokaler Knoten hat Fehler als Dritter beobachtet. 11
– Generisch0
– Keine Zeitüberschreitung bei Anforderung 1
– Zeitüberschreitung bei Anforderung00
– Arbeitsspeicherzugriff 01
– Reserviert 10
– E/A 11
– SonstigesDie Machine Check Architecture ermöglicht Bits oder Bit-Gruppen in den Statusregistern der Bank (MCi_STATUS) und den sonstigen Registern der Bank (MCi_MISC), basierend auf dem Prozessormodell und der Banknummer eine zusätzliche Bedeutung anzunehmen. Die Auflistung der Feldbedeutungen für alle Prozessorfamilien wird in diesem Artikel nicht behandelt.
Informationen zum Interpretieren der zusätzlichen Inhalte der Statusregister der Bank (MCi_STATUS) und der sonstigen Register der Bank (MCi_MISC) finden Sie in der Dokumentation zum jeweiligen Prozessormodell. Weitere Informationen finden Sie in der Dokumentation des Anbieters, die im Abschnitt Zusätzliche Informationen dieses Artikels aufgeführt ist, oder wenden Sie sich an den Hardwareanbieter.
MCE: 215: CMCI on cpu1 bank8: Status:0xd000008000310080 Misc:0x0 Addr:0x0: Valid.Overflow.Err enabled.MCE: 220: Status bits: "Memory Controller Error on Channel 0.