diff mbox series

ata: libata-core: Allow command duration limits detection for ACS-4 drives

Message ID 20240411201224.1311198-1-ipylypiv@google.com
State New
Headers show
Series ata: libata-core: Allow command duration limits detection for ACS-4 drives | expand

Commit Message

Igor Pylypiv April 11, 2024, 8:12 p.m. UTC
Even though the command duration limits (CDL) feature was first added
in ACS-5 (major version 12), there are some ACS-4 (major version 11)
drives that implement CDL as well.

IDENTIFY_DEVICE, SUPPORTED_CAPABILITIES, and CURRENT_SETTINGS log pages
are mandatory in the ACS-4 standard so it should be safe to read these
log pages on older drives implementing the ACS-4 standard.

Signed-off-by: Igor Pylypiv <ipylypiv@google.com>
---
 drivers/ata/libata-core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Damien Le Moal April 13, 2024, 12:57 a.m. UTC | #1
On 4/12/24 05:12, Igor Pylypiv wrote:
> Even though the command duration limits (CDL) feature was first added
> in ACS-5 (major version 12), there are some ACS-4 (major version 11)
> drives that implement CDL as well.
> 
> IDENTIFY_DEVICE, SUPPORTED_CAPABILITIES, and CURRENT_SETTINGS log pages
> are mandatory in the ACS-4 standard so it should be safe to read these
> log pages on older drives implementing the ACS-4 standard.
> 
> Signed-off-by: Igor Pylypiv <ipylypiv@google.com>

Looks good, but I think this needs:

Fixes: 62e4a60e0cdb ("scsi: ata: libata: Detect support for command duration
limits")
Cc: stable.vger.kernel.org

so that we have 6.6 LTS also getting this fix and accepting the same devices as
mainline. I will add that when applying.

> ---
>  drivers/ata/libata-core.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
> index be3412cdb22e..c449d60d9bb9 100644
> --- a/drivers/ata/libata-core.c
> +++ b/drivers/ata/libata-core.c
> @@ -2539,7 +2539,7 @@ static void ata_dev_config_cdl(struct ata_device *dev)
>  	bool cdl_enabled;
>  	u64 val;
>  
> -	if (ata_id_major_version(dev->id) < 12)
> +	if (ata_id_major_version(dev->id) < 11)
>  		goto not_supported;
>  
>  	if (!ata_log_supported(dev, ATA_LOG_IDENTIFY_DEVICE) ||
diff mbox series

Patch

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index be3412cdb22e..c449d60d9bb9 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -2539,7 +2539,7 @@  static void ata_dev_config_cdl(struct ata_device *dev)
 	bool cdl_enabled;
 	u64 val;
 
-	if (ata_id_major_version(dev->id) < 12)
+	if (ata_id_major_version(dev->id) < 11)
 		goto not_supported;
 
 	if (!ata_log_supported(dev, ATA_LOG_IDENTIFY_DEVICE) ||