libata: implement dump_id force param
Add dump_id libata.force parameter. If specified, libata dumps full IDENTIFY data during device configuration. This is to aid debugging. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Larry Baker <baker@usgs.gov> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
parent
e7ecd43569
commit
43c9c59185
3 changed files with 12 additions and 0 deletions
|
@ -1252,6 +1252,8 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||||
* nohrst, nosrst, norst: suppress hard, soft
|
* nohrst, nosrst, norst: suppress hard, soft
|
||||||
and both resets.
|
and both resets.
|
||||||
|
|
||||||
|
* dump_id: dump IDENTIFY data.
|
||||||
|
|
||||||
If there are multiple matching configurations changing
|
If there are multiple matching configurations changing
|
||||||
the same attribute, the last one is used.
|
the same attribute, the last one is used.
|
||||||
|
|
||||||
|
|
|
@ -2126,6 +2126,14 @@ int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class,
|
||||||
goto err_out;
|
goto err_out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dev->horkage & ATA_HORKAGE_DUMP_ID) {
|
||||||
|
ata_dev_printk(dev, KERN_DEBUG, "dumping IDENTIFY data, "
|
||||||
|
"class=%d may_fallback=%d tried_spinup=%d\n",
|
||||||
|
class, may_fallback, tried_spinup);
|
||||||
|
print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_OFFSET,
|
||||||
|
16, 2, id, ATA_ID_WORDS * sizeof(*id), true);
|
||||||
|
}
|
||||||
|
|
||||||
/* Falling back doesn't make sense if ID data was read
|
/* Falling back doesn't make sense if ID data was read
|
||||||
* successfully at least once.
|
* successfully at least once.
|
||||||
*/
|
*/
|
||||||
|
@ -6377,6 +6385,7 @@ static int __init ata_parse_force_one(char **cur,
|
||||||
{ "3.0Gbps", .spd_limit = 2 },
|
{ "3.0Gbps", .spd_limit = 2 },
|
||||||
{ "noncq", .horkage_on = ATA_HORKAGE_NONCQ },
|
{ "noncq", .horkage_on = ATA_HORKAGE_NONCQ },
|
||||||
{ "ncq", .horkage_off = ATA_HORKAGE_NONCQ },
|
{ "ncq", .horkage_off = ATA_HORKAGE_NONCQ },
|
||||||
|
{ "dump_id", .horkage_on = ATA_HORKAGE_DUMP_ID },
|
||||||
{ "pio0", .xfer_mask = 1 << (ATA_SHIFT_PIO + 0) },
|
{ "pio0", .xfer_mask = 1 << (ATA_SHIFT_PIO + 0) },
|
||||||
{ "pio1", .xfer_mask = 1 << (ATA_SHIFT_PIO + 1) },
|
{ "pio1", .xfer_mask = 1 << (ATA_SHIFT_PIO + 1) },
|
||||||
{ "pio2", .xfer_mask = 1 << (ATA_SHIFT_PIO + 2) },
|
{ "pio2", .xfer_mask = 1 << (ATA_SHIFT_PIO + 2) },
|
||||||
|
|
|
@ -386,6 +386,7 @@ enum {
|
||||||
ATA_HORKAGE_1_5_GBPS = (1 << 13), /* force 1.5 Gbps */
|
ATA_HORKAGE_1_5_GBPS = (1 << 13), /* force 1.5 Gbps */
|
||||||
ATA_HORKAGE_NOSETXFER = (1 << 14), /* skip SETXFER, SATA only */
|
ATA_HORKAGE_NOSETXFER = (1 << 14), /* skip SETXFER, SATA only */
|
||||||
ATA_HORKAGE_BROKEN_FPDMA_AA = (1 << 15), /* skip AA */
|
ATA_HORKAGE_BROKEN_FPDMA_AA = (1 << 15), /* skip AA */
|
||||||
|
ATA_HORKAGE_DUMP_ID = (1 << 16), /* dump IDENTIFY data */
|
||||||
|
|
||||||
/* DMA mask for user DMA control: User visible values; DO NOT
|
/* DMA mask for user DMA control: User visible values; DO NOT
|
||||||
renumber */
|
renumber */
|
||||||
|
|
Loading…
Reference in a new issue