]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ata: libata: Add libata.force parameter max_sec
authorNiklas Cassel <cassel@kernel.org>
Tue, 2 Dec 2025 12:21:35 +0000 (13:21 +0100)
committerDamien Le Moal <dlemoal@kernel.org>
Mon, 15 Dec 2025 07:32:05 +0000 (16:32 +0900)
Add a new libata.force parameter called max_sec.

The parameter can take an arbitrary value using the format:
libata.force=max_sec=<number of 512B sectors>

e.g. libata.force=max_sec=8191
or
libata.force=max_sec=2048

This will allow the user to set an arbitrary maximum command size
(dev->max_sectors) using libata.force.

We cannot remove the existing libata.force parameters "max_sec_128" and
"max_sec_1024", as these are a part of the exising user facing API.

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>
Documentation/admin-guide/kernel-parameters.txt
drivers/ata/libata-core.c

index a8d0afde7f85a506b827ae31d48fc5d9dbabc095..a467a7661efb19d4cb17547b78b48a3fb5ede9c4 100644 (file)
@@ -3412,6 +3412,11 @@ Kernel parameters
                        * [no]logdir: Enable or disable access to the general
                          purpose log directory.
 
+                       * max_sec=<sectors>: Set the transfer size limit, in
+                         number of 512-byte sectors, to the value specified in
+                         <sectors>. The value specified in <sectors> has to be
+                         a non-zero positive integer.
+
                        * max_sec_128: Set transfer size limit to 128 sectors.
 
                        * max_sec_1024: Set or clear transfer size limit to
index cd1ebdbe659bd35fe97cb5d8c7b01242e189381c..9b0efca03a7d5f3693fb252d1a3bcbdcf4f4148c 100644 (file)
@@ -6569,6 +6569,7 @@ static const struct ata_force_param force_tbl[] __initconst = {
 
        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=,        ATA_QUIRK_MAX_SEC),
        force_quirk_on(max_sec_lba48,   ATA_QUIRK_MAX_SEC_LBA48),
 
        force_quirk_onoff(lpm,          ATA_QUIRK_NOLPM),