Libata Error Message 解析
Libata error messages
Contents[hide] |
Overview
All libata error messages produced by the kernel use a standard format:
ata3.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
ata3.00: cmd ea/00:00:00:00:00/00:00:00:00:00/a0 tag 0
res 40/00:00:01:4f:c2/00:00:00:00:00/00 Emask 0x4 (timeout)
ata3.00: status: { DRDY }
Prefix
The prefix
ata3.00:
decodes as
| ata | prefix, indicating this is a libata port or device message |
| 3 | port number, counting from one (1) |
| 00 | device number, usually zero unless Port Multiplier or PATA master/slave is involved |
Exception line
The exception line gives an overview of the EH (Error Handler) state.
exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x2 frozen
| Emask | Error classification bitmask (AC_ERR_xxx in source code) |
| SAct | SATA SActive register |
| SErr | SATA SError register |
| action | ATA_EH_xxx actions, like revalidate, softreset, hardreset (see include/linux/libata.h) |
| frozen | if present, indicates the port was frozen for EH |
| t<number> | number of retries |
Input taskfile
The "cmd" line gives the ATA command (taskfile) sent to the device:
cmd ea/00:00:00:00:00/00:00:00:00:00/a0 tag 0
This lists ATA registers in the following order:
| ea | Command (FLUSH CACHE EXT EAh, Non-Data) |
| / | (separator) |
| 00 | Feature |
| 00 | NSect |
| 00 | LBA L |
| 00 | LBA M |
| 00 | LBA H |
| / | (separator) |
| 00 | HOB Feature |
| 00 | HOB NSect |
| 00 | HOB LBA L |
| 00 | HOB LBA M |
| 00 | HOB LBA H |
| / | (separator) |
| a0 | Device/Head |
| tag | NCQ tag |
| 0 | NCQ tag number, or listed as zero if NCQ is not active/applicable. |
Output taskfile, error summary
The next line contains a current dump of the ATA device's registers, along with an error summary:
res 40/00:00:01:4f:c2/00:00:00:00:00/00 Emask 0x4 (timeout)
In order:
| 40 | Status |
| / | (separator) |
| 00 | Error |
| 00 | NSect |
| 01 | LBA L |
| 4f | LBA M |
| c2 | LBA H |
| / | (separator) |
| 00 | HOB Error |
| 00 | HOB NSect |
| 00 | HOB LBA L |
| 00 | HOB LBA M |
| 00 | HOB LBA H |
| / | (separator) |
| 00 | Device/Head |
| Emask | ATA command's internal error mask (AC_ERR_xxx in source code) |
| 0x4 | An English summary of the error, such as
See below for a full list. |
Error classes
These are the possible values for the internal error mask in each error message mentioned above.
AC_ERR_XXX, ATA Completion Errors were defined in include/linux/libata.h.
| 0x20 | host bus error | Host<->chip bus error (i.e. PCI, if on PCI bus) |
| 0x10 | ATA bus error | chip<->device bus error |
| 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. |
| 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. |
| 0x40 | internal error | Hardware flagged an impossible condition, most likely due to software misprogramming. |
| 0x8 | media error | Software detected a media error |
| 0x80 | invalid argument | Software marked ATA command as invalid, for some reason |
| 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. |
| 0x100 | unknown error | Uncategorized error (should never happen) |
ATA status expansion
The final line
status: { DRDY }
expands the ATA status register returned in the output taskfile into its component bits:
| Busy | Device busy (all other bits invalid) |
| DRDY | Device ready. Normally 1, when all is OK. |
| DRQ | Data ready to be sent/received via PIO |
| DF | Device fault |
| ERR | Error (see Error register for more info) |
ATA error expansion
If any bits in the Error register are set, the Error register contents will be expanded into its component bits, for example:
error: { ICRC ABRT }
| ICRC | Interface CRC error during Ultra DMA transfer - often either a bad cable or power problem, though possibly an incorrect Ultra DMA mode setting by the driver |
| UNC | Uncorrectable error - often due to bad sectors on the disk |
| IDNF | Requested address was not found |
| ABRT | Command aborted - either command not supported, unable to complete, or interface CRC (with ICRC) |
SATA SError expansion
If any bits in the SATA SError register are set, the SError register contents will be expanded into its component bits, for example:
SError: { PHYRdyChg CommWake }
These bits are set by the SATA host interface in response to error conditions on the SATA link. Unless a drive hotplug or unplug operation occurred, it is generally not normal to see any of these bits set. If they are, it usually points strongly toward a hardware problem (often a bad SATA cable or a bad or inadequate power supply).
| RecovData | Data integrity error occurred, but the interface recovered |
| RecovComm | Communications between device and host temporarily lost, but regained |
| UnrecovData | Data integrity error occurred, interface did not recover |
| Persist | Persistent communication or data integrity error |
| Proto | SATA protocol violation detected |
| HostInt | Host bus adapter internal error |
| PHYRdyChg | PhyRdy signal changed state |
| PHYInt | PHY internal error |
| CommWake | COMWAKE detected by PHY (PHY woken up) |
| 10B8B | 10b to 8b decoding error occurred |
| Dispar | Incorrect disparity detected |
| BadCRC | Link layer CRC error occurred |
| Handshk | R_ERR handshake response received in response to frame transmission |
| LinkSeq | Link state machine error occurred |
| TrStaTrns | Transport layer state transition error occurred |
| UnrecFIS | Unrecognized FIS (frame information structure) received |
| DevExch | Device presence has changed |
Libata Error Message 解析的更多相关文章
- Compiler Error Message: CS0016: Could not write to output file 回绝访问
Compiler Error Message: CS0016: Could not write to output file 'c:\Windows...dll' 拒绝访问 C:\Windows\Te ...
- Oracle Error - "OCIEnvCreate failed with return code -1 but error message text was not available".
ISSUE: When trying to connect to an Oracle database you receive the following error: "OCIEnvCre ...
- 网站部署后Parser Error Message: Could not load type 的解决方案
asp.net 的Webproject 项目是在64bit机上开发,默认选项发布后,部署到32bit的服务器上,出现Parser Error Message: Could not load type的 ...
- [BTS] The adapter "SQL" raised an error message. Details "The Messaging Engine is shutting down. ".
Get a warning in event log. Log Name: ApplicationSource: BizTalk ServerDate: 3/ ...
- Error message when you try to modify or to delete an alternate access mapping in Windows SharePoint Services 3.0: "An update conflict has occurred, and you must re-try this action"
Article ID: 939308 - View products that this article applies to. Expand all | Collapse all Symptoms ...
- Fix the “No Private Key” Error Message
This article will show you how to correct the “No Private Key” error message in Windows Internet Inf ...
- undefined reference to typeinfo - C++ error message
undefined reference to typeinfo - C++ error message There are some compiler and loader error message ...
- "This connection is untrusted" - Firefox error message
Error Messages I am receiving the following error message in Firefox: After selecting Cancel to clos ...
- android stack error message is Fail to start the plugin
E: 08-26 16:34:11.934: E/AliSDK(32236): 错误编码 = 1002208-26 16:34:11.934: E/AliSDK(32236): 错误消息 = SDK ...
- Error message “Assembly must be registered in isolation” when registering Plugins in Microsoft Dynamics CRM 2011 2013 解决办法
Error message “Assembly must be registered in isolation” when registering Plugins in Microsoft Dynam ...
随机推荐
- spring boot 集成配置阿里 Druid监控配置
本文为博主原创,转载请注明出处: github 地址如下:https://github.com/alibaba/druid/wiki 其相关问题也可参考:https://github.com/alib ...
- 2023 SHCTF-校外赛道 MISC WP
WEEK1 请对我使用社工吧 提示:k1sme4的朋友考到了一所在k1sme4家附近的大学,一天,k1sme4的朋友去了学校对面的商场玩,并给k1sme4拍了一张照片,你能找到他的学校吗? flag格 ...
- 浏览器兼容 : IE 5 到 IE 9
<!--[if IE]> <link href="ie.css" rel="stylesheet"> <![endif]--> ...
- Go-数据类型-数字
Go数字类型 整数 int 类 int(在32机器上为int32,在64位机器上为int64) int8 int16 int32 int64 unit类 uint(在32机器上为uint32,在64位 ...
- Django数据导入导出神器django-import-export使用
前言 Django以快速开发闻名,但是如果处理数据的导出导入还需要自己写脚本,那就有违"Python之禅"了-- 而且导数据通常需要不同的格式,Excel.csv.json等,每种 ...
- [转帖]Java和Scala的前世今生
第一部分:Java 计算机语言介绍 第一代语言:机器语言.指令以二进制代码形式存在 第二代语言:汇编语言.使用助记符表示一条机器指令 第三代语言:高级语言 C.Pascal.Fortran面向过程的语 ...
- [转帖]Intel固态硬盘总结
https://www.cnblogs.com/hongdada/p/17326247.html 2012年推出的S3700,采用的是25nm闪存颗粒. 2015年推出s3710,采用的是20nm闪存 ...
- 【转帖】一道面试题:JVM老年代空间担保机制
面试问题 昨天面试的时候,面试官问的问题: 什么是老年代空间担保机制?担保的过程是什么? 老年代空间担保机制是谁给谁担保? 为什么要有老年代空间担保机制?或者说空间担保机制的目的是什么? 如果没有老年 ...
- [转帖]【JVM】常用虚拟机参数及实例
常用参数表 参数 描述 -XX:+PrintGC 启动java虚拟机后,只要遇到gc,就打印日志 -XX:+PrintGCDetails gc发生时,打印更详细的日志 -XX:+PrintHeapAt ...
- 说透IO多路复用模型
作者:京东零售 石朝阳 在说IO多路复用模型之前,我们先来大致了解下Linux文件系统.在Linux系统中,不论是你的鼠标,键盘,还是打印机,甚至于连接到本机的socket client端,都是以文件 ...