Commit 7ebd8c5a authored by Damien Le Moal's avatar Damien Le Moal

ata: libata: Use QUIRK instead of HORKAGE

According to Wiktionary, the verb "hork" is computing slang defined as
"To foul up; to be occupied with difficulty, tangle, or unpleasantness;
to be broken" (https://en.wiktionary.org/wiki/hork#Verb). libata uses
this with the term "horkage" to refer to broken device features. Given
that this term is not widely used and its meaning unknown to many,
rename it to the more commonly used term "quirk", similar to many other
places in the kernel.

The renaming done is:
1) Rename all ATA_HORKAGE_XXX flags to ATA_QUIRK_XXX
2) Rename struct ata_device horkage field to quirks
3) Rename struct ata_blacklist_entry to struct ata_dev_quirks_entry. The
   array of these structures defining quirks for known devices is
   renamed __ata_dev_quirks.
4) The functions ata_dev_blacklisted() and ata_force_horkage() are
   renamed to ata_dev_quirks() and ata_force_quirks() respectively.
5) All the force_horkage_xxx() macros are renamed to force_quirk_xxx()

And while at it, make sure that the type "unsigned int" is used
consistantly for quirk flags variables and data structure fields.
Signed-off-by: default avatarDamien Le Moal <dlemoal@kernel.org>
Reviewed-by: default avatarNiklas Cassel <cassel@kernel.org>
Reviewed-by: default avatarIgor Pylypiv <ipylypiv@google.com>
parent f209d8ed
This diff is collapsed.
...@@ -818,7 +818,7 @@ static ssize_t ata_scsi_lpm_store(struct device *device, ...@@ -818,7 +818,7 @@ static ssize_t ata_scsi_lpm_store(struct device *device,
ata_for_each_link(link, ap, EDGE) { ata_for_each_link(link, ap, EDGE) {
ata_for_each_dev(dev, &ap->link, ENABLED) { ata_for_each_dev(dev, &ap->link, ENABLED) {
if (dev->horkage & ATA_HORKAGE_NOLPM) { if (dev->quirks & ATA_QUIRK_NOLPM) {
count = -EOPNOTSUPP; count = -EOPNOTSUPP;
goto out_unlock; goto out_unlock;
} }
......
...@@ -2083,7 +2083,7 @@ static unsigned int ata_scsiop_inq_b0(struct ata_scsi_args *args, u8 *rbuf) ...@@ -2083,7 +2083,7 @@ static unsigned int ata_scsiop_inq_b0(struct ata_scsi_args *args, u8 *rbuf)
if (ata_id_has_trim(args->id)) { if (ata_id_has_trim(args->id)) {
u64 max_blocks = 65535 * ATA_MAX_TRIM_RNUM; u64 max_blocks = 65535 * ATA_MAX_TRIM_RNUM;
if (dev->horkage & ATA_HORKAGE_MAX_TRIM_128M) if (dev->quirks & ATA_QUIRK_MAX_TRIM_128M)
max_blocks = 128 << (20 - SECTOR_SHIFT); max_blocks = 128 << (20 - SECTOR_SHIFT);
put_unaligned_be64(max_blocks, &rbuf[36]); put_unaligned_be64(max_blocks, &rbuf[36]);
...@@ -2561,11 +2561,11 @@ static unsigned int ata_scsiop_read_cap(struct ata_scsi_args *args, u8 *rbuf) ...@@ -2561,11 +2561,11 @@ static unsigned int ata_scsiop_read_cap(struct ata_scsi_args *args, u8 *rbuf)
rbuf[15] = lowest_aligned; rbuf[15] = lowest_aligned;
if (ata_id_has_trim(args->id) && if (ata_id_has_trim(args->id) &&
!(dev->horkage & ATA_HORKAGE_NOTRIM)) { !(dev->quirks & ATA_QUIRK_NOTRIM)) {
rbuf[14] |= 0x80; /* LBPME */ rbuf[14] |= 0x80; /* LBPME */
if (ata_id_has_zero_after_trim(args->id) && if (ata_id_has_zero_after_trim(args->id) &&
dev->horkage & ATA_HORKAGE_ZERO_AFTER_TRIM) { dev->quirks & ATA_QUIRK_ZERO_AFTER_TRIM) {
ata_dev_info(dev, "Enabling discard_zeroes_data\n"); ata_dev_info(dev, "Enabling discard_zeroes_data\n");
rbuf[14] |= 0x40; /* LBPRZ */ rbuf[14] |= 0x40; /* LBPRZ */
} }
...@@ -3229,8 +3229,7 @@ static unsigned int ata_scsi_write_same_xlat(struct ata_queued_cmd *qc) ...@@ -3229,8 +3229,7 @@ static unsigned int ata_scsi_write_same_xlat(struct ata_queued_cmd *qc)
} }
scsi_16_lba_len(cdb, &block, &n_block); scsi_16_lba_len(cdb, &block, &n_block);
if (!unmap || if (!unmap || (dev->quirks & ATA_QUIRK_NOTRIM) ||
(dev->horkage & ATA_HORKAGE_NOTRIM) ||
!ata_id_has_trim(dev->id)) { !ata_id_has_trim(dev->id)) {
fp = 1; fp = 1;
bp = 3; bp = 3;
......
...@@ -970,7 +970,7 @@ int ata_sff_hsm_move(struct ata_port *ap, struct ata_queued_cmd *qc, ...@@ -970,7 +970,7 @@ int ata_sff_hsm_move(struct ata_port *ap, struct ata_queued_cmd *qc,
* We ignore ERR here to workaround and proceed sending * We ignore ERR here to workaround and proceed sending
* the CDB. * the CDB.
*/ */
if (!(qc->dev->horkage & ATA_HORKAGE_STUCK_ERR)) { if (!(qc->dev->quirks & ATA_QUIRK_STUCK_ERR)) {
ata_ehi_push_desc(ehi, "ST_FIRST: " ata_ehi_push_desc(ehi, "ST_FIRST: "
"DRQ=1 with device error, " "DRQ=1 with device error, "
"dev_stat 0x%X", status); "dev_stat 0x%X", status);
...@@ -1045,8 +1045,8 @@ int ata_sff_hsm_move(struct ata_port *ap, struct ata_queued_cmd *qc, ...@@ -1045,8 +1045,8 @@ int ata_sff_hsm_move(struct ata_port *ap, struct ata_queued_cmd *qc,
* IDENTIFY, it's likely a phantom * IDENTIFY, it's likely a phantom
* device. Mark hint. * device. Mark hint.
*/ */
if (qc->dev->horkage & if (qc->dev->quirks &
ATA_HORKAGE_DIAGNOSTIC) ATA_QUIRK_DIAGNOSTIC)
qc->err_mask |= qc->err_mask |=
AC_ERR_NODEV_HINT; AC_ERR_NODEV_HINT;
} else { } else {
...@@ -1762,7 +1762,7 @@ unsigned int ata_sff_dev_classify(struct ata_device *dev, int present, ...@@ -1762,7 +1762,7 @@ unsigned int ata_sff_dev_classify(struct ata_device *dev, int present,
/* see if device passed diags: continue and warn later */ /* see if device passed diags: continue and warn later */
if (err == 0) if (err == 0)
/* diagnostic fail : do nothing _YET_ */ /* diagnostic fail : do nothing _YET_ */
dev->horkage |= ATA_HORKAGE_DIAGNOSTIC; dev->quirks |= ATA_QUIRK_DIAGNOSTIC;
else if (err == 1) else if (err == 1)
/* do nothing */ ; /* do nothing */ ;
else if ((dev->devno == 0) && (err == 0x81)) else if ((dev->devno == 0) && (err == 0x81))
...@@ -1781,7 +1781,7 @@ unsigned int ata_sff_dev_classify(struct ata_device *dev, int present, ...@@ -1781,7 +1781,7 @@ unsigned int ata_sff_dev_classify(struct ata_device *dev, int present,
* device signature is invalid with diagnostic * device signature is invalid with diagnostic
* failure. * failure.
*/ */
if (present && (dev->horkage & ATA_HORKAGE_DIAGNOSTIC)) if (present && (dev->quirks & ATA_QUIRK_DIAGNOSTIC))
class = ATA_DEV_ATA; class = ATA_DEV_ATA;
else else
class = ATA_DEV_NONE; class = ATA_DEV_NONE;
......
...@@ -617,10 +617,10 @@ show_ata_dev_trim(struct device *dev, ...@@ -617,10 +617,10 @@ show_ata_dev_trim(struct device *dev,
if (!ata_id_has_trim(ata_dev->id)) if (!ata_id_has_trim(ata_dev->id))
mode = "unsupported"; mode = "unsupported";
else if (ata_dev->horkage & ATA_HORKAGE_NOTRIM) else if (ata_dev->quirks & ATA_QUIRK_NOTRIM)
mode = "forced_unsupported"; mode = "forced_unsupported";
else if (ata_dev->horkage & ATA_HORKAGE_NO_NCQ_TRIM) else if (ata_dev->quirks & ATA_QUIRK_NO_NCQ_TRIM)
mode = "forced_unqueued"; mode = "forced_unqueued";
else if (ata_fpdma_dsm_supported(ata_dev)) else if (ata_fpdma_dsm_supported(ata_dev))
mode = "queued"; mode = "queued";
else else
......
...@@ -519,9 +519,9 @@ static void it821x_dev_config(struct ata_device *adev) ...@@ -519,9 +519,9 @@ static void it821x_dev_config(struct ata_device *adev)
} }
/* This is a controller firmware triggered funny, don't /* This is a controller firmware triggered funny, don't
report the drive faulty! */ report the drive faulty! */
adev->horkage &= ~ATA_HORKAGE_DIAGNOSTIC; adev->quirks &= ~ATA_QUIRK_DIAGNOSTIC;
/* No HPA in 'smart' mode */ /* No HPA in 'smart' mode */
adev->horkage |= ATA_HORKAGE_BROKEN_HPA; adev->quirks |= ATA_QUIRK_BROKEN_HPA;
} }
/** /**
......
...@@ -616,7 +616,7 @@ static void sil_dev_config(struct ata_device *dev) ...@@ -616,7 +616,7 @@ static void sil_dev_config(struct ata_device *dev)
unsigned char model_num[ATA_ID_PROD_LEN + 1]; unsigned char model_num[ATA_ID_PROD_LEN + 1];
/* This controller doesn't support trim */ /* This controller doesn't support trim */
dev->horkage |= ATA_HORKAGE_NOTRIM; dev->quirks |= ATA_QUIRK_NOTRIM;
ata_id_c_string(dev->id, model_num, ATA_ID_PROD, sizeof(model_num)); ata_id_c_string(dev->id, model_num, ATA_ID_PROD, sizeof(model_num));
......
...@@ -362,40 +362,41 @@ enum { ...@@ -362,40 +362,41 @@ enum {
*/ */
ATA_EH_CMD_TIMEOUT_TABLE_SIZE = 8, ATA_EH_CMD_TIMEOUT_TABLE_SIZE = 8,
/* Horkage types. May be set by libata or controller on drives /*
(some horkage may be drive/controller pair dependent */ * Quirk flags: may be set by libata or controller drivers on drives.
* Some quirks may be drive/controller pair dependent.
ATA_HORKAGE_DIAGNOSTIC = (1 << 0), /* Failed boot diag */ */
ATA_HORKAGE_NODMA = (1 << 1), /* DMA problems */ ATA_QUIRK_DIAGNOSTIC = (1 << 0), /* Failed boot diag */
ATA_HORKAGE_NONCQ = (1 << 2), /* Don't use NCQ */ ATA_QUIRK_NODMA = (1 << 1), /* DMA problems */
ATA_HORKAGE_MAX_SEC_128 = (1 << 3), /* Limit max sects to 128 */ ATA_QUIRK_NONCQ = (1 << 2), /* Do not use NCQ */
ATA_HORKAGE_BROKEN_HPA = (1 << 4), /* Broken HPA */ ATA_QUIRK_MAX_SEC_128 = (1 << 3), /* Limit max sects to 128 */
ATA_HORKAGE_DISABLE = (1 << 5), /* Disable it */ ATA_QUIRK_BROKEN_HPA = (1 << 4), /* Broken HPA */
ATA_HORKAGE_HPA_SIZE = (1 << 6), /* native size off by one */ ATA_QUIRK_DISABLE = (1 << 5), /* Disable it */
ATA_HORKAGE_IVB = (1 << 8), /* cbl det validity bit bugs */ ATA_QUIRK_HPA_SIZE = (1 << 6), /* Native size off by one */
ATA_HORKAGE_STUCK_ERR = (1 << 9), /* stuck ERR on next PACKET */ ATA_QUIRK_IVB = (1 << 8), /* CBL det validity bit bugs */
ATA_HORKAGE_BRIDGE_OK = (1 << 10), /* no bridge limits */ ATA_QUIRK_STUCK_ERR = (1 << 9), /* Stuck ERR on next PACKET */
ATA_HORKAGE_ATAPI_MOD16_DMA = (1 << 11), /* use ATAPI DMA for commands ATA_QUIRK_BRIDGE_OK = (1 << 10), /* No bridge limits */
not multiple of 16 bytes */ ATA_QUIRK_ATAPI_MOD16_DMA = (1 << 11), /* Use ATAPI DMA for commands */
ATA_HORKAGE_FIRMWARE_WARN = (1 << 12), /* firmware update warning */ /* not multiple of 16 bytes */
ATA_HORKAGE_1_5_GBPS = (1 << 13), /* force 1.5 Gbps */ ATA_QUIRK_FIRMWARE_WARN = (1 << 12), /* Firmware update warning */
ATA_HORKAGE_NOSETXFER = (1 << 14), /* skip SETXFER, SATA only */ ATA_QUIRK_1_5_GBPS = (1 << 13), /* Force 1.5 Gbps */
ATA_HORKAGE_BROKEN_FPDMA_AA = (1 << 15), /* skip AA */ ATA_QUIRK_NOSETXFER = (1 << 14), /* Skip SETXFER, SATA only */
ATA_HORKAGE_DUMP_ID = (1 << 16), /* dump IDENTIFY data */ ATA_QUIRK_BROKEN_FPDMA_AA = (1 << 15), /* Skip AA */
ATA_HORKAGE_MAX_SEC_LBA48 = (1 << 17), /* Set max sects to 65535 */ ATA_QUIRK_DUMP_ID = (1 << 16), /* Dump IDENTIFY data */
ATA_HORKAGE_ATAPI_DMADIR = (1 << 18), /* device requires dmadir */ ATA_QUIRK_MAX_SEC_LBA48 = (1 << 17), /* Set max sects to 65535 */
ATA_HORKAGE_NO_NCQ_TRIM = (1 << 19), /* don't use queued TRIM */ ATA_QUIRK_ATAPI_DMADIR = (1 << 18), /* Device requires dmadir */
ATA_HORKAGE_NOLPM = (1 << 20), /* don't use LPM */ ATA_QUIRK_NO_NCQ_TRIM = (1 << 19), /* Do not use queued TRIM */
ATA_HORKAGE_WD_BROKEN_LPM = (1 << 21), /* some WDs have broken LPM */ ATA_QUIRK_NOLPM = (1 << 20), /* Do not use LPM */
ATA_HORKAGE_ZERO_AFTER_TRIM = (1 << 22),/* guarantees zero after trim */ ATA_QUIRK_WD_BROKEN_LPM = (1 << 21), /* Some WDs have broken LPM */
ATA_HORKAGE_NO_DMA_LOG = (1 << 23), /* don't use DMA for log read */ ATA_QUIRK_ZERO_AFTER_TRIM = (1 << 22), /* Guarantees zero after trim */
ATA_HORKAGE_NOTRIM = (1 << 24), /* don't use TRIM */ ATA_QUIRK_NO_DMA_LOG = (1 << 23), /* Do not use DMA for log read */
ATA_HORKAGE_MAX_SEC_1024 = (1 << 25), /* Limit max sects to 1024 */ ATA_QUIRK_NOTRIM = (1 << 24), /* Do not use TRIM */
ATA_HORKAGE_MAX_TRIM_128M = (1 << 26), /* Limit max trim size to 128M */ ATA_QUIRK_MAX_SEC_1024 = (1 << 25), /* Limit max sects to 1024 */
ATA_HORKAGE_NO_NCQ_ON_ATI = (1 << 27), /* Disable NCQ on ATI chipset */ ATA_QUIRK_MAX_TRIM_128M = (1 << 26), /* Limit max trim size to 128M */
ATA_HORKAGE_NO_ID_DEV_LOG = (1 << 28), /* Identify device log missing */ ATA_QUIRK_NO_NCQ_ON_ATI = (1 << 27), /* Disable NCQ on ATI chipset */
ATA_HORKAGE_NO_LOG_DIR = (1 << 29), /* Do not read log directory */ ATA_QUIRK_NO_ID_DEV_LOG = (1 << 28), /* Identify device log missing */
ATA_HORKAGE_NO_FUA = (1 << 30), /* Do not use FUA */ ATA_QUIRK_NO_LOG_DIR = (1 << 29), /* Do not read log directory */
ATA_QUIRK_NO_FUA = (1 << 30), /* Do not use FUA */
/* DMA mask for user DMA control: User visible values; DO NOT /* DMA mask for user DMA control: User visible values; DO NOT
renumber */ renumber */
...@@ -663,7 +664,7 @@ struct ata_cpr_log { ...@@ -663,7 +664,7 @@ struct ata_cpr_log {
struct ata_device { struct ata_device {
struct ata_link *link; struct ata_link *link;
unsigned int devno; /* 0 or 1 */ unsigned int devno; /* 0 or 1 */
unsigned int horkage; /* List of broken features */ unsigned int quirks; /* List of broken features */
unsigned long flags; /* ATA_DFLAG_xxx */ unsigned long flags; /* ATA_DFLAG_xxx */
struct scsi_device *sdev; /* attached SCSI device */ struct scsi_device *sdev; /* attached SCSI device */
void *private_data; void *private_data;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment