diff options
Diffstat (limited to 'drivers/ide/ide-lib.c')
| -rw-r--r-- | drivers/ide/ide-lib.c | 27 |
1 files changed, 6 insertions, 21 deletions
diff --git a/drivers/ide/ide-lib.c b/drivers/ide/ide-lib.c index 56ff8c46c7d1..2148df836ce7 100644 --- a/drivers/ide/ide-lib.c +++ b/drivers/ide/ide-lib.c | |||
| @@ -31,24 +31,6 @@ void ide_toggle_bounce(ide_drive_t *drive, int on) | |||
| 31 | blk_queue_bounce_limit(drive->queue, addr); | 31 | blk_queue_bounce_limit(drive->queue, addr); |
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | static void ide_dump_opcode(ide_drive_t *drive) | ||
| 35 | { | ||
| 36 | struct request *rq = drive->hwif->rq; | ||
| 37 | struct ide_cmd *cmd = NULL; | ||
| 38 | |||
| 39 | if (!rq) | ||
| 40 | return; | ||
| 41 | |||
| 42 | if (rq->cmd_type == REQ_TYPE_ATA_TASKFILE) | ||
| 43 | cmd = rq->special; | ||
| 44 | |||
| 45 | printk(KERN_ERR "ide: failed opcode was: "); | ||
| 46 | if (cmd == NULL) | ||
| 47 | printk(KERN_CONT "unknown\n"); | ||
| 48 | else | ||
| 49 | printk(KERN_CONT "0x%02x\n", cmd->tf.command); | ||
| 50 | } | ||
| 51 | |||
| 52 | u64 ide_get_lba_addr(struct ide_cmd *cmd, int lba48) | 34 | u64 ide_get_lba_addr(struct ide_cmd *cmd, int lba48) |
| 53 | { | 35 | { |
| 54 | struct ide_taskfile *tf = &cmd->tf; | 36 | struct ide_taskfile *tf = &cmd->tf; |
| @@ -91,7 +73,7 @@ static void ide_dump_sector(ide_drive_t *drive) | |||
| 91 | 73 | ||
| 92 | static void ide_dump_ata_error(ide_drive_t *drive, u8 err) | 74 | static void ide_dump_ata_error(ide_drive_t *drive, u8 err) |
| 93 | { | 75 | { |
| 94 | printk(KERN_ERR "{ "); | 76 | printk(KERN_CONT "{ "); |
| 95 | if (err & ATA_ABORTED) | 77 | if (err & ATA_ABORTED) |
| 96 | printk(KERN_CONT "DriveStatusError "); | 78 | printk(KERN_CONT "DriveStatusError "); |
| 97 | if (err & ATA_ICRC) | 79 | if (err & ATA_ICRC) |
| @@ -121,7 +103,7 @@ static void ide_dump_ata_error(ide_drive_t *drive, u8 err) | |||
| 121 | 103 | ||
| 122 | static void ide_dump_atapi_error(ide_drive_t *drive, u8 err) | 104 | static void ide_dump_atapi_error(ide_drive_t *drive, u8 err) |
| 123 | { | 105 | { |
| 124 | printk(KERN_ERR "{ "); | 106 | printk(KERN_CONT "{ "); |
| 125 | if (err & ATAPI_ILI) | 107 | if (err & ATAPI_ILI) |
| 126 | printk(KERN_CONT "IllegalLengthIndication "); | 108 | printk(KERN_CONT "IllegalLengthIndication "); |
| 127 | if (err & ATAPI_EOM) | 109 | if (err & ATAPI_EOM) |
| @@ -179,7 +161,10 @@ u8 ide_dump_status(ide_drive_t *drive, const char *msg, u8 stat) | |||
| 179 | else | 161 | else |
| 180 | ide_dump_atapi_error(drive, err); | 162 | ide_dump_atapi_error(drive, err); |
| 181 | } | 163 | } |
| 182 | ide_dump_opcode(drive); | 164 | |
| 165 | printk(KERN_ERR "%s: possibly failed opcode: 0x%02x\n", | ||
| 166 | drive->name, drive->hwif->cmd.tf.command); | ||
| 167 | |||
| 183 | return err; | 168 | return err; |
| 184 | } | 169 | } |
| 185 | EXPORT_SYMBOL(ide_dump_status); | 170 | EXPORT_SYMBOL(ide_dump_status); |
