ata: libata-core: Allow forcing most horkage flags
authorDamien Le Moal <damien.lemoal@opensource.wdc.com>
Fri, 18 Mar 2022 05:03:06 +0000 (14:03 +0900)
committerDamien Le Moal <damien.lemoal@opensource.wdc.com>
Mon, 9 May 2022 11:42:36 +0000 (20:42 +0900)
To facilitate debugging of drive issues in the field without kernel
changes (e.g. temporary test patches), add an entry for most horkage
flags in the force_tbl array to allow controlling these horkage
settings with the libata.force kernel boot parameter.

Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Reviewed-by: Hannes Reinecke <hare@suse.de>
drivers/ata/libata-core.c

index 78591ba..40e8164 100644 (file)
@@ -6187,9 +6187,27 @@ static const struct ata_force_param force_tbl[] __initconst = {
        force_horkage_onoff(ncqtrim,    ATA_HORKAGE_NO_NCQ_TRIM),
        force_horkage_onoff(ncqati,     ATA_HORKAGE_NO_NCQ_ON_ATI),
 
-       force_horkage_on(dump_id,       ATA_HORKAGE_DUMP_ID),
+       force_horkage_onoff(trim,       ATA_HORKAGE_NOTRIM),
+       force_horkage_on(trim_zero,     ATA_HORKAGE_ZERO_AFTER_TRIM),
+       force_horkage_on(max_trim_128m, ATA_HORKAGE_MAX_TRIM_128M),
+
+       force_horkage_onoff(dma,        ATA_HORKAGE_NODMA),
        force_horkage_on(atapi_dmadir,  ATA_HORKAGE_ATAPI_DMADIR),
-       force_horkage_on(disable,       ATA_HORKAGE_DISABLE)
+       force_horkage_on(atapi_mod16_dma, ATA_HORKAGE_ATAPI_MOD16_DMA),
+
+       force_horkage_onoff(dmalog,     ATA_HORKAGE_NO_DMA_LOG),
+       force_horkage_onoff(iddevlog,   ATA_HORKAGE_NO_ID_DEV_LOG),
+       force_horkage_onoff(logdir,     ATA_HORKAGE_NO_LOG_DIR),
+
+       force_horkage_on(max_sec_128,   ATA_HORKAGE_MAX_SEC_128),
+       force_horkage_on(max_sec_1024,  ATA_HORKAGE_MAX_SEC_1024),
+       force_horkage_on(max_sec_lba48, ATA_HORKAGE_MAX_SEC_LBA48),
+
+       force_horkage_onoff(lpm,        ATA_HORKAGE_NOLPM),
+       force_horkage_onoff(setxfer,    ATA_HORKAGE_NOSETXFER),
+       force_horkage_on(dump_id,       ATA_HORKAGE_DUMP_ID),
+
+       force_horkage_on(disable,       ATA_HORKAGE_DISABLE),
 };
 
 static int __init ata_parse_force_one(char **cur,