ATA exception Emask

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

ATA exception Emask Meldungen des Linux Kernels können auf unterschiedliche Fehler hinweisen. Dieser Artikel gibt einen Überblick, um welche Fehler es sich handeln könnte.

SATA exception

Eine SATA exception Zeile enthält folgende Felder:

Feld Bedeutung
Emask Bitmaske zur Fehlerklassifizierung (AC_ERR_xxx im Quellcode)
SAct SATA SActive Register (bei Native Command Queuing). Das SActive-Register wird verwendet, um den Abschlussstatus von Befehlen in der Warteschlange zu verfolgen. Dieses Register ist Teil der in der Serial-ATA-Spezifikation definierten Steuer-, Status- und Fehler-Superset-Register.[1][2]
SErr SATA SError Register
action ATA_EH_xxx-Aktionen, wie revalidate, softreset, hardreset (siehe include/linux/libata.h)
frozen wenn vorhanden, zeigt an, dass der Anschluss für die SATA-Fehlerbehandlung (EH, error handling) eingefroren wurde

Emask

Die Emask Hex-Werte haben folgende Bedeutung:[3]

Einzelne Bits Byte (in Hex) Bedeutung
9 8 7 6 5 4 3 2 1 0 Emask Details
AC_ERR_OK 0x0 no error Beispiel siehe SATA exception Emask 0x0 SAct 0x80 SErr 0x0 action 0x6 frozen
1 AC_ERR_DEV 0x1 device error Hardware indicates an error with last command. This error is delivered directly from the ATA device. If you see a lot of these, that is often an indication of a hardware problem.
1 AC_ERR_HSM 0x2 HSM violation Hardware failed to respond in an expected manner. "HSM" stands for Host State Machine, a software-based finite state machine required by ATA that expects certain hardware behaviors, based on the current ATA command and other hardware-state programming details.
1 AC_ERR_TIMEOUT 0x4 Timeout Controller failed to respond to an active ATA command. This could be any number of causes. Most often this is due to an unrelated interrupt subsystem bug (try booting with 'pci=nomsi' or 'acpi=off' or 'noapic'), which failed to deliver an interrupt when we were expecting one from the hardware.
1 AC_ERR_MEDIA 0x8 Media Error Software detected a media error
1 AC_ERR_HOST_BUS 0x10 ATA Bus Error chip<->device bus error

Beispiel siehe SATA exception Emask 0x10 SAct 0x0 SErr 0x4000000 action 0xe frozen

1 AC_ERR_SYSTEM 0x20 Host Bus Error Host<->chip bus error (i.e. PCI, if on PCI bus)
1 AC_ERR_INVALID 0x40 System Error / Internal Error Hardware flagged an impossible condition, most likely due to software misprogramming.
1 AC_ERR_OTHER 0x80 Invalid Argument Software marked ATA command as invalid, for some reason
1 AC_ERR_NODEV_HINT 0x100 Unknown Uncategorized error (should never happen)
1 AC_ERR_NCQ 0x200? Polling Device Detection Hint

Auszug aus dem Linux Kernel (include/linux/libata.h):[4]

enum ata_completion_errors {
	AC_ERR_OK		= 0,	    /* no error */
	AC_ERR_DEV		= (1 << 0), /* device reported error */
	AC_ERR_HSM		= (1 << 1), /* host state machine violation */
	AC_ERR_TIMEOUT		= (1 << 2), /* timeout */
	AC_ERR_MEDIA		= (1 << 3), /* media error */
	AC_ERR_ATA_BUS		= (1 << 4), /* ATA bus error */
	AC_ERR_HOST_BUS		= (1 << 5), /* host bus error */
	AC_ERR_SYSTEM		= (1 << 6), /* system error */
	AC_ERR_INVALID		= (1 << 7), /* invalid argument */
	AC_ERR_OTHER		= (1 << 8), /* unknown */
	AC_ERR_NODEV_HINT	= (1 << 9), /* polling device detection hint */
	AC_ERR_NCQ		= (1 << 10), /* marker for offending NCQ qc */

action

Die action Hex-Werte haben folgende Bedeutung:

Einzelne Bits Byte (in Hex)
9 8 7 6 5 4 3 2 1 0
1 ATA_EH_REVALIDATE 0x1
1 ATA_EH_SOFTRESET 0x2
1 ATA_EH_HARDRESET 0x4
1 ATA_EH_ENABLE_LINK 0x8
1 ATA_EH_PARK 0x20

Auszug aus dem Linux Kernel (include/linux/libata.h):[5]

	/* reset / recovery action types */
	ATA_EH_REVALIDATE	= (1 << 0),
	ATA_EH_SOFTRESET	= (1 << 1), /* meaningful only in ->prereset */
	ATA_EH_HARDRESET	= (1 << 2), /* meaningful only in ->prereset */
	ATA_EH_RESET		= ATA_EH_SOFTRESET | ATA_EH_HARDRESET,
	ATA_EH_ENABLE_LINK	= (1 << 3),
	ATA_EH_PARK		= (1 << 5), /* unload heads and stop I/O */

	ATA_EH_PERDEV_MASK	= ATA_EH_REVALIDATE | ATA_EH_PARK,
	ATA_EH_ALL_ACTIONS	= ATA_EH_REVALIDATE | ATA_EH_RESET |
				  ATA_EH_ENABLE_LINK,

Einzelnachweise


Foto Werner Fischer.jpg

Autor: Werner Fischer

Werner Fischer arbeitet im Product Management Team von Thomas-Krenn. Er evaluiert dabei neueste Technologien und teilt sein Wissen in Fachartikeln, bei Konferenzen und im Thomas-Krenn Wiki. Bereits 2005 - ein Jahr nach seinem Abschluss des Studiums zu Computer- und Mediensicherheit an der FH Hagenberg - heuerte er beim bayerischen Server-Hersteller an. Als Öffi-Fan nutzt er gerne Bus & Bahn und genießt seinen morgendlichen Spaziergang ins Büro.


Das könnte Sie auch interessieren

Daten mit rsync unter Linux synchronisieren
Device Mapper Targets
Vi Editor Tipps und Tricks