Commit 43c9c59185eec7caaff6e9dd8d4c93a4d9836a86

Authored by Tejun Heo
Committed by Jeff Garzik
1 parent e7ecd43569

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>

Showing 3 changed files with 12 additions and 0 deletions Side-by-side Diff

Documentation/kernel-parameters.txt
... ... @@ -1252,6 +1252,8 @@
1252 1252 * nohrst, nosrst, norst: suppress hard, soft
1253 1253 and both resets.
1254 1254  
  1255 + * dump_id: dump IDENTIFY data.
  1256 +
1255 1257 If there are multiple matching configurations changing
1256 1258 the same attribute, the last one is used.
1257 1259  
drivers/ata/libata-core.c
... ... @@ -2126,6 +2126,14 @@
2126 2126 goto err_out;
2127 2127 }
2128 2128  
  2129 + if (dev->horkage & ATA_HORKAGE_DUMP_ID) {
  2130 + ata_dev_printk(dev, KERN_DEBUG, "dumping IDENTIFY data, "
  2131 + "class=%d may_fallback=%d tried_spinup=%d\n",
  2132 + class, may_fallback, tried_spinup);
  2133 + print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_OFFSET,
  2134 + 16, 2, id, ATA_ID_WORDS * sizeof(*id), true);
  2135 + }
  2136 +
2129 2137 /* Falling back doesn't make sense if ID data was read
2130 2138 * successfully at least once.
2131 2139 */
... ... @@ -6377,6 +6385,7 @@
6377 6385 { "3.0Gbps", .spd_limit = 2 },
6378 6386 { "noncq", .horkage_on = ATA_HORKAGE_NONCQ },
6379 6387 { "ncq", .horkage_off = ATA_HORKAGE_NONCQ },
  6388 + { "dump_id", .horkage_on = ATA_HORKAGE_DUMP_ID },
6380 6389 { "pio0", .xfer_mask = 1 << (ATA_SHIFT_PIO + 0) },
6381 6390 { "pio1", .xfer_mask = 1 << (ATA_SHIFT_PIO + 1) },
6382 6391 { "pio2", .xfer_mask = 1 << (ATA_SHIFT_PIO + 2) },
include/linux/libata.h
... ... @@ -386,6 +386,7 @@
386 386 ATA_HORKAGE_1_5_GBPS = (1 << 13), /* force 1.5 Gbps */
387 387 ATA_HORKAGE_NOSETXFER = (1 << 14), /* skip SETXFER, SATA only */
388 388 ATA_HORKAGE_BROKEN_FPDMA_AA = (1 << 15), /* skip AA */
  389 + ATA_HORKAGE_DUMP_ID = (1 << 16), /* dump IDENTIFY data */
389 390  
390 391 /* DMA mask for user DMA control: User visible values; DO NOT
391 392 renumber */