From 979c416275e43d150e69b7e719b600ac8201eb18 Mon Sep 17 00:00:00 2001 From: mav Date: Mon, 8 Jul 2013 16:02:03 +0000 Subject: [PATCH] MFC r252204, r252250: Add bunch of names for Seagate and HGST vennor-specififc ASC/ASCQ codes. git-svn-id: svn://svn.freebsd.org/base/stable/9@253039 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- sys/cam/scsi/scsi_all.c | 186 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) diff --git a/sys/cam/scsi/scsi_all.c b/sys/cam/scsi/scsi_all.c index 678c9818f..7cd53d84b 100644 --- a/sys/cam/scsi/scsi_all.c +++ b/sys/cam/scsi/scsi_all.c @@ -737,6 +737,172 @@ static struct asc_table_entry sony_mo_entries[] = { "Logical unit not ready, cause not reportable") } }; +static struct asc_table_entry hgst_entries[] = { + { SST(0x04, 0xF0, SS_RDEF, + "Vendor Unique - Logical Unit Not Ready") }, + { SST(0x0A, 0x01, SS_RDEF, + "Unrecovered Super Certification Log Write Error") }, + { SST(0x0A, 0x02, SS_RDEF, + "Unrecovered Super Certification Log Read Error") }, + { SST(0x15, 0x03, SS_RDEF, + "Unrecovered Sector Error") }, + { SST(0x3E, 0x04, SS_RDEF, + "Unrecovered Self-Test Hard-Cache Test Fail") }, + { SST(0x3E, 0x05, SS_RDEF, + "Unrecovered Self-Test OTF-Cache Fail") }, + { SST(0x40, 0x00, SS_RDEF, + "Unrecovered SAT No Buffer Overflow Error") }, + { SST(0x40, 0x01, SS_RDEF, + "Unrecovered SAT Buffer Overflow Error") }, + { SST(0x40, 0x02, SS_RDEF, + "Unrecovered SAT No Buffer Overflow With ECS Fault") }, + { SST(0x40, 0x03, SS_RDEF, + "Unrecovered SAT Buffer Overflow With ECS Fault") }, + { SST(0x40, 0x81, SS_RDEF, + "DRAM Failure") }, + { SST(0x44, 0x0B, SS_RDEF, + "Vendor Unique - Internal Target Failure") }, + { SST(0x44, 0xF2, SS_RDEF, + "Vendor Unique - Internal Target Failure") }, + { SST(0x44, 0xF6, SS_RDEF, + "Vendor Unique - Internal Target Failure") }, + { SST(0x44, 0xF9, SS_RDEF, + "Vendor Unique - Internal Target Failure") }, + { SST(0x44, 0xFA, SS_RDEF, + "Vendor Unique - Internal Target Failure") }, + { SST(0x5D, 0x22, SS_RDEF, + "Extreme Over-Temperature Warning") }, + { SST(0x5D, 0x50, SS_RDEF, + "Load/Unload cycle Count Warning") }, + { SST(0x81, 0x00, SS_RDEF, + "Vendor Unique - Internal Logic Error") }, + { SST(0x85, 0x00, SS_RDEF, + "Vendor Unique - Internal Key Seed Error") }, +}; + +static struct asc_table_entry seagate_entries[] = { + { SST(0x04, 0xF0, SS_RDEF, + "Logical Unit Not Ready, super certify in Progress") }, + { SST(0x08, 0x86, SS_RDEF, + "Write Fault Data Corruption") }, + { SST(0x09, 0x0D, SS_RDEF, + "Tracking Failure") }, + { SST(0x09, 0x0E, SS_RDEF, + "ETF Failure") }, + { SST(0x0B, 0x5D, SS_RDEF, + "Pre-SMART Warning") }, + { SST(0x0B, 0x85, SS_RDEF, + "5V Voltage Warning") }, + { SST(0x0B, 0x8C, SS_RDEF, + "12V Voltage Warning") }, + { SST(0x0C, 0xFF, SS_RDEF, + "Write Error - Too many error recovery revs") }, + { SST(0x11, 0xFF, SS_RDEF, + "Unrecovered Read Error - Too many error recovery revs") }, + { SST(0x19, 0x0E, SS_RDEF, + "Fewer than 1/2 defect list copies") }, + { SST(0x20, 0xF3, SS_RDEF, + "Illegal CDB linked to skip mask cmd") }, + { SST(0x24, 0xF0, SS_RDEF, + "Illegal byte in CDB, LBA not matching") }, + { SST(0x24, 0xF1, SS_RDEF, + "Illegal byte in CDB, LEN not matching") }, + { SST(0x24, 0xF2, SS_RDEF, + "Mask not matching transfer length") }, + { SST(0x24, 0xF3, SS_RDEF, + "Drive formatted without plist") }, + { SST(0x26, 0x95, SS_RDEF, + "Invalid Field Parameter - CAP File") }, + { SST(0x26, 0x96, SS_RDEF, + "Invalid Field Parameter - RAP File") }, + { SST(0x26, 0x97, SS_RDEF, + "Invalid Field Parameter - TMS Firmware Tag") }, + { SST(0x26, 0x98, SS_RDEF, + "Invalid Field Parameter - Check Sum") }, + { SST(0x26, 0x99, SS_RDEF, + "Invalid Field Parameter - Firmware Tag") }, + { SST(0x29, 0x08, SS_RDEF, + "Write Log Dump data") }, + { SST(0x29, 0x09, SS_RDEF, + "Write Log Dump data") }, + { SST(0x29, 0x0A, SS_RDEF, + "Reserved disk space") }, + { SST(0x29, 0x0B, SS_RDEF, + "SDBP") }, + { SST(0x29, 0x0C, SS_RDEF, + "SDBP") }, + { SST(0x31, 0x91, SS_RDEF, + "Format Corrupted World Wide Name (WWN) is Invalid") }, + { SST(0x32, 0x03, SS_RDEF, + "Defect List - Length exceeds Command Allocated Length") }, + { SST(0x33, 0x00, SS_RDEF, + "Flash not ready for access") }, + { SST(0x3F, 0x70, SS_RDEF, + "Invalid RAP block") }, + { SST(0x3F, 0x71, SS_RDEF, + "RAP/ETF mismatch") }, + { SST(0x3F, 0x90, SS_RDEF, + "Invalid CAP block") }, + { SST(0x3F, 0x91, SS_RDEF, + "World Wide Name (WWN) Mismatch") }, + { SST(0x40, 0x01, SS_RDEF, + "DRAM Parity Error") }, + { SST(0x40, 0x02, SS_RDEF, + "DRAM Parity Error") }, + { SST(0x42, 0x0A, SS_RDEF, + "Loopback Test") }, + { SST(0x42, 0x0B, SS_RDEF, + "Loopback Test") }, + { SST(0x44, 0xF2, SS_RDEF, + "Compare error during data integrity check") }, + { SST(0x44, 0xF6, SS_RDEF, + "Unrecoverable error during data integrity check") }, + { SST(0x47, 0x80, SS_RDEF, + "Fibre Channel Sequence Error") }, + { SST(0x4E, 0x01, SS_RDEF, + "Information Unit Too Short") }, + { SST(0x80, 0x00, SS_RDEF, + "General Firmware Error / Command Timeout") }, + { SST(0x80, 0x01, SS_RDEF, + "Command Timeout") }, + { SST(0x80, 0x02, SS_RDEF, + "Command Timeout") }, + { SST(0x80, 0x80, SS_RDEF, + "FC FIFO Error During Read Transfer") }, + { SST(0x80, 0x81, SS_RDEF, + "FC FIFO Error During Write Transfer") }, + { SST(0x80, 0x82, SS_RDEF, + "DISC FIFO Error During Read Transfer") }, + { SST(0x80, 0x83, SS_RDEF, + "DISC FIFO Error During Write Transfer") }, + { SST(0x80, 0x84, SS_RDEF, + "LBA Seeded LRC Error on Read") }, + { SST(0x80, 0x85, SS_RDEF, + "LBA Seeded LRC Error on Write") }, + { SST(0x80, 0x86, SS_RDEF, + "IOEDC Error on Read") }, + { SST(0x80, 0x87, SS_RDEF, + "IOEDC Error on Write") }, + { SST(0x80, 0x88, SS_RDEF, + "Host Parity Check Failed") }, + { SST(0x80, 0x89, SS_RDEF, + "IOEDC error on read detected by formatter") }, + { SST(0x80, 0x8A, SS_RDEF, + "Host Parity Errors / Host FIFO Initialization Failed") }, + { SST(0x80, 0x8B, SS_RDEF, + "Host Parity Errors") }, + { SST(0x80, 0x8C, SS_RDEF, + "Host Parity Errors") }, + { SST(0x80, 0x8D, SS_RDEF, + "Host Parity Errors") }, + { SST(0x81, 0x00, SS_RDEF, + "LA Check Failed") }, + { SST(0x82, 0x00, SS_RDEF, + "Internal client detected insufficient buffer") }, + { SST(0x84, 0x00, SS_RDEF, + "Scheduled Diagnostic And Repair") }, +}; + static struct scsi_sense_quirk_entry sense_quirk_table[] = { { /* @@ -759,6 +925,26 @@ static struct scsi_sense_quirk_entry sense_quirk_table[] = { sizeof(sony_mo_entries)/sizeof(struct asc_table_entry), /*sense key entries*/NULL, sony_mo_entries + }, + { + /* + * HGST vendor-specific error codes + */ + {T_DIRECT, SIP_MEDIA_FIXED, "HGST", "*", "*"}, + /*num_sense_keys*/0, + sizeof(hgst_entries)/sizeof(struct asc_table_entry), + /*sense key entries*/NULL, + hgst_entries + }, + { + /* + * SEAGATE vendor-specific error codes + */ + {T_DIRECT, SIP_MEDIA_FIXED, "SEAGATE", "*", "*"}, + /*num_sense_keys*/0, + sizeof(seagate_entries)/sizeof(struct asc_table_entry), + /*sense key entries*/NULL, + seagate_entries } }; -- 2.45.0