mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 03:04:51 +01:00
ata: libata: Change libata.force to use the generic ATA_QUIRK_MAX_SEC quirk
Modify the existing libata.force parameters "max_sec_128" and "max_sec_1024" to use the generic ATA_QUIRK_MAX_SEC quirk rather than individual quirks. This also allows us to remove the individual quirks ATA_QUIRK_MAX_SEC_128 and ATA_QUIRK_MAX_SEC_1024. Signed-off-by: Niklas Cassel <cassel@kernel.org> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Reviewed-by: Damien Le Moal <dlemoal@kernel.org> Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
This commit is contained in:
parent
873abd72b8
commit
dfd975151d
3 changed files with 16 additions and 18 deletions
|
|
@ -84,6 +84,7 @@ static DEFINE_IDA(ata_ida);
|
|||
#ifdef CONFIG_ATA_FORCE
|
||||
struct ata_force_param {
|
||||
const char *name;
|
||||
u64 value;
|
||||
u8 cbl;
|
||||
u8 spd_limit;
|
||||
unsigned int xfer_mask;
|
||||
|
|
@ -3169,14 +3170,6 @@ int ata_dev_configure(struct ata_device *dev)
|
|||
dev->quirks |= ATA_QUIRK_STUCK_ERR;
|
||||
}
|
||||
|
||||
if (dev->quirks & ATA_QUIRK_MAX_SEC_128)
|
||||
dev->max_sectors = min_t(unsigned int, ATA_MAX_SECTORS_128,
|
||||
dev->max_sectors);
|
||||
|
||||
if (dev->quirks & ATA_QUIRK_MAX_SEC_1024)
|
||||
dev->max_sectors = min_t(unsigned int, ATA_MAX_SECTORS_1024,
|
||||
dev->max_sectors);
|
||||
|
||||
if (dev->quirks & ATA_QUIRK_MAX_SEC)
|
||||
dev->max_sectors = min_t(unsigned int, dev->max_sectors,
|
||||
ata_dev_get_quirk_value(dev,
|
||||
|
|
@ -4012,7 +4005,6 @@ static const char * const ata_quirk_names[] = {
|
|||
[__ATA_QUIRK_DIAGNOSTIC] = "diagnostic",
|
||||
[__ATA_QUIRK_NODMA] = "nodma",
|
||||
[__ATA_QUIRK_NONCQ] = "noncq",
|
||||
[__ATA_QUIRK_MAX_SEC_128] = "maxsec128",
|
||||
[__ATA_QUIRK_BROKEN_HPA] = "brokenhpa",
|
||||
[__ATA_QUIRK_DISABLE] = "disable",
|
||||
[__ATA_QUIRK_HPA_SIZE] = "hpasize",
|
||||
|
|
@ -4033,7 +4025,6 @@ static const char * const ata_quirk_names[] = {
|
|||
[__ATA_QUIRK_ZERO_AFTER_TRIM] = "zeroaftertrim",
|
||||
[__ATA_QUIRK_NO_DMA_LOG] = "nodmalog",
|
||||
[__ATA_QUIRK_NOTRIM] = "notrim",
|
||||
[__ATA_QUIRK_MAX_SEC_1024] = "maxsec1024",
|
||||
[__ATA_QUIRK_MAX_SEC] = "maxsec",
|
||||
[__ATA_QUIRK_MAX_TRIM_128M] = "maxtrim128m",
|
||||
[__ATA_QUIRK_NO_NCQ_ON_ATI] = "noncqonati",
|
||||
|
|
@ -4417,6 +4408,14 @@ static u64 ata_dev_get_max_sec_quirk_value(struct ata_device *dev)
|
|||
const struct ata_dev_quirk_value *ad = __ata_dev_max_sec_quirks;
|
||||
u64 val = 0;
|
||||
|
||||
#ifdef CONFIG_ATA_FORCE
|
||||
const struct ata_force_ent *fe = ata_force_get_fe_for_dev(dev);
|
||||
if (fe && (fe->param.quirk_on & ATA_QUIRK_MAX_SEC) && fe->param.value)
|
||||
val = fe->param.value;
|
||||
#endif
|
||||
if (val)
|
||||
goto out;
|
||||
|
||||
ata_id_c_string(dev->id, model_num, ATA_ID_PROD, sizeof(model_num));
|
||||
ata_id_c_string(dev->id, model_rev, ATA_ID_FW_REV, sizeof(model_rev));
|
||||
|
||||
|
|
@ -4429,6 +4428,7 @@ static u64 ata_dev_get_max_sec_quirk_value(struct ata_device *dev)
|
|||
ad++;
|
||||
}
|
||||
|
||||
out:
|
||||
ata_dev_warn(dev, "%s quirk is using value: %llu\n",
|
||||
ata_quirk_names[__ATA_QUIRK_MAX_SEC], val);
|
||||
|
||||
|
|
@ -6482,6 +6482,10 @@ EXPORT_SYMBOL_GPL(ata_platform_remove_one);
|
|||
#define force_quirk_on(name, flag) \
|
||||
{ #name, .quirk_on = (flag) }
|
||||
|
||||
#define force_quirk_val(name, flag, val) \
|
||||
{ #name, .quirk_on = (flag), \
|
||||
.value = (val) }
|
||||
|
||||
#define force_quirk_onoff(name, flag) \
|
||||
{ "no" #name, .quirk_on = (flag) }, \
|
||||
{ #name, .quirk_off = (flag) }
|
||||
|
|
@ -6556,8 +6560,8 @@ static const struct ata_force_param force_tbl[] __initconst = {
|
|||
force_quirk_onoff(iddevlog, ATA_QUIRK_NO_ID_DEV_LOG),
|
||||
force_quirk_onoff(logdir, ATA_QUIRK_NO_LOG_DIR),
|
||||
|
||||
force_quirk_on(max_sec_128, ATA_QUIRK_MAX_SEC_128),
|
||||
force_quirk_on(max_sec_1024, ATA_QUIRK_MAX_SEC_1024),
|
||||
force_quirk_val(max_sec_128, ATA_QUIRK_MAX_SEC, 128),
|
||||
force_quirk_val(max_sec_1024, ATA_QUIRK_MAX_SEC, 1024),
|
||||
force_quirk_on(max_sec_lba48, ATA_QUIRK_MAX_SEC_LBA48),
|
||||
|
||||
force_quirk_onoff(lpm, ATA_QUIRK_NOLPM),
|
||||
|
|
|
|||
|
|
@ -26,9 +26,7 @@ enum {
|
|||
ATA_MAX_DEVICES = 2, /* per bus/port */
|
||||
ATA_MAX_PRD = 256, /* we could make these 256/256 */
|
||||
ATA_SECT_SIZE = 512,
|
||||
ATA_MAX_SECTORS_128 = 128,
|
||||
ATA_MAX_SECTORS = 256,
|
||||
ATA_MAX_SECTORS_1024 = 1024,
|
||||
ATA_MAX_SECTORS_LBA48 = 65535,/* avoid count to be 0000h */
|
||||
ATA_MAX_SECTORS_TAPE = 65535,
|
||||
ATA_MAX_TRIM_RNUM = 64, /* 512-byte payload / (6-byte LBA + 2-byte range per entry) */
|
||||
|
|
|
|||
|
|
@ -52,7 +52,6 @@ enum ata_quirks {
|
|||
__ATA_QUIRK_DIAGNOSTIC, /* Failed boot diag */
|
||||
__ATA_QUIRK_NODMA, /* DMA problems */
|
||||
__ATA_QUIRK_NONCQ, /* Don't use NCQ */
|
||||
__ATA_QUIRK_MAX_SEC_128, /* Limit max sects to 128 */
|
||||
__ATA_QUIRK_BROKEN_HPA, /* Broken HPA */
|
||||
__ATA_QUIRK_DISABLE, /* Disable it */
|
||||
__ATA_QUIRK_HPA_SIZE, /* Native size off by one */
|
||||
|
|
@ -74,7 +73,6 @@ enum ata_quirks {
|
|||
__ATA_QUIRK_ZERO_AFTER_TRIM, /* Guarantees zero after trim */
|
||||
__ATA_QUIRK_NO_DMA_LOG, /* Do not use DMA for log read */
|
||||
__ATA_QUIRK_NOTRIM, /* Do not use TRIM */
|
||||
__ATA_QUIRK_MAX_SEC_1024, /* Limit max sects to 1024 */
|
||||
__ATA_QUIRK_MAX_SEC, /* Limit max sectors */
|
||||
__ATA_QUIRK_MAX_TRIM_128M, /* Limit max trim size to 128M */
|
||||
__ATA_QUIRK_NO_NCQ_ON_ATI, /* Disable NCQ on ATI chipset */
|
||||
|
|
@ -94,7 +92,6 @@ enum {
|
|||
ATA_QUIRK_DIAGNOSTIC = (1U << __ATA_QUIRK_DIAGNOSTIC),
|
||||
ATA_QUIRK_NODMA = (1U << __ATA_QUIRK_NODMA),
|
||||
ATA_QUIRK_NONCQ = (1U << __ATA_QUIRK_NONCQ),
|
||||
ATA_QUIRK_MAX_SEC_128 = (1U << __ATA_QUIRK_MAX_SEC_128),
|
||||
ATA_QUIRK_BROKEN_HPA = (1U << __ATA_QUIRK_BROKEN_HPA),
|
||||
ATA_QUIRK_DISABLE = (1U << __ATA_QUIRK_DISABLE),
|
||||
ATA_QUIRK_HPA_SIZE = (1U << __ATA_QUIRK_HPA_SIZE),
|
||||
|
|
@ -115,7 +112,6 @@ enum {
|
|||
ATA_QUIRK_ZERO_AFTER_TRIM = (1U << __ATA_QUIRK_ZERO_AFTER_TRIM),
|
||||
ATA_QUIRK_NO_DMA_LOG = (1U << __ATA_QUIRK_NO_DMA_LOG),
|
||||
ATA_QUIRK_NOTRIM = (1U << __ATA_QUIRK_NOTRIM),
|
||||
ATA_QUIRK_MAX_SEC_1024 = (1U << __ATA_QUIRK_MAX_SEC_1024),
|
||||
ATA_QUIRK_MAX_SEC = (1U << __ATA_QUIRK_MAX_SEC),
|
||||
ATA_QUIRK_MAX_TRIM_128M = (1U << __ATA_QUIRK_MAX_TRIM_128M),
|
||||
ATA_QUIRK_NO_NCQ_ON_ATI = (1U << __ATA_QUIRK_NO_NCQ_ON_ATI),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue