public inbox for linux-ide@vger.kernel.org
 help / color / mirror / Atom feed
From: Damien Le Moal <dlemoal@kernel.org>
To: Niklas Cassel <cassel@kernel.org>
Cc: linux-ide@vger.kernel.org, xxjack12xx@gmail.com
Subject: Re: [PATCH 2/3] ata: libata-core: Quirk DELLBOSS VD MV.R00-0 max_sectors
Date: Tue, 25 Nov 2025 09:20:36 +0900	[thread overview]
Message-ID: <4a5fe360-6d26-4d06-9eca-d087966fee0a@kernel.org> (raw)
In-Reply-To: <20251124134414.3057512-7-cassel@kernel.org>

On 11/24/25 10:44 PM, Niklas Cassel wrote:
> DELLBOSS VD MV.R00-0 with FW rev MV.R00-0 times out when sending
> I/Os of size 4096 KiB.
> 
> Add a quirk so that the SATA controller is usable again.

Please name the quirk here and describe it.

> 
> Fixes: 9b8b84879d4a ("block: Increase BLK_DEF_MAX_SECTORS_CAP")
> Signed-off-by: Niklas Cassel <cassel@kernel.org>
> ---
>  drivers/ata/libata-core.c | 12 ++++++++++++
>  include/linux/ata.h       |  1 +
>  include/linux/libata.h    |  2 ++
>  3 files changed, 15 insertions(+)
> 
> diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
> index f48fb63d7e85..be320c3e0fef 100644
> --- a/drivers/ata/libata-core.c
> +++ b/drivers/ata/libata-core.c
> @@ -3146,6 +3146,10 @@ int ata_dev_configure(struct ata_device *dev)
>  		dev->max_sectors = min_t(unsigned int, ATA_MAX_SECTORS_1024,
>  					 dev->max_sectors);
>  
> +	if (dev->quirks & ATA_QUIRK_MAX_SEC_8191)
> +		dev->max_sectors = min_t(unsigned int, ATA_MAX_SECTORS_8191,
> +					 dev->max_sectors);
> +
>  	if (dev->quirks & ATA_QUIRK_MAX_SEC_LBA48)
>  		dev->max_sectors = ATA_MAX_SECTORS_LBA48;
>  
> @@ -3998,6 +4002,7 @@ static const char * const ata_quirk_names[] = {
>  	[__ATA_QUIRK_NO_DMA_LOG]	= "nodmalog",
>  	[__ATA_QUIRK_NOTRIM]		= "notrim",
>  	[__ATA_QUIRK_MAX_SEC_1024]	= "maxsec1024",
> +	[__ATA_QUIRK_MAX_SEC_8191]	= "maxsec8191",

It would be a lot better  if we could have a definition for this a little more
generic, that is, add a value to a generic "maxsec" quirk. E.g.:
 	
	[__ATA_QUIRK_MAX_SEC_8191]	= { "maxsec", 8191 },

That would avoid the need for more of these if other drives have different
limits. We already have 2 maxsec limit, this is the 3rd one...

>  	[__ATA_QUIRK_MAX_TRIM_128M]	= "maxtrim128m",
>  	[__ATA_QUIRK_NO_NCQ_ON_ATI]	= "noncqonati",
>  	[__ATA_QUIRK_NO_LPM_ON_ATI]	= "nolpmonati",
> @@ -4104,6 +4109,12 @@ static const struct ata_dev_quirks_entry __ata_dev_quirks[] = {
>  	{ "LITEON CX1-JB*-HP",	NULL,		ATA_QUIRK_MAX_SEC_1024 },
>  	{ "LITEON EP1-*",	NULL,		ATA_QUIRK_MAX_SEC_1024 },
>  
> +	/*
> +	 * These devices time out with higher max sects.
> +	 * https://bugzilla.kernel.org/show_bug.cgi?id=220693
> +	 */
> +	{ "DELLBOSS VD MV.R00-0", "MV.R00-0",	ATA_QUIRK_MAX_SEC_8191 },
> +
>  	/* Devices we expect to fail diagnostics */
>  
>  	/* Devices where NCQ should be avoided */
> @@ -6455,6 +6466,7 @@ static const struct ata_force_param force_tbl[] __initconst = {
>  
>  	force_quirk_on(max_sec_128,	ATA_QUIRK_MAX_SEC_128),
>  	force_quirk_on(max_sec_1024,	ATA_QUIRK_MAX_SEC_1024),
> +	force_quirk_on(max_sec_8191,	ATA_QUIRK_MAX_SEC_8191),
>  	force_quirk_on(max_sec_lba48,	ATA_QUIRK_MAX_SEC_LBA48),
>  
>  	force_quirk_onoff(lpm,		ATA_QUIRK_NOLPM),
> diff --git a/include/linux/ata.h b/include/linux/ata.h
> index c9013e472aa3..54b416e26995 100644
> --- a/include/linux/ata.h
> +++ b/include/linux/ata.h
> @@ -29,6 +29,7 @@ enum {
>  	ATA_MAX_SECTORS_128	= 128,
>  	ATA_MAX_SECTORS		= 256,
>  	ATA_MAX_SECTORS_1024    = 1024,
> +	ATA_MAX_SECTORS_8191    = 8191,
>  	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) */
> diff --git a/include/linux/libata.h b/include/linux/libata.h
> index 171268d65169..39534fafa36a 100644
> --- a/include/linux/libata.h
> +++ b/include/linux/libata.h
> @@ -75,6 +75,7 @@ enum ata_quirks {
>  	__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_8191,	/* Limit max sects to 8191 */
>  	__ATA_QUIRK_MAX_TRIM_128M,	/* Limit max trim size to 128M */
>  	__ATA_QUIRK_NO_NCQ_ON_ATI,	/* Disable NCQ on ATI chipset */
>  	__ATA_QUIRK_NO_LPM_ON_ATI,	/* Disable LPM on ATI chipset */
> @@ -115,6 +116,7 @@ enum {
>  	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_8191		= (1U << __ATA_QUIRK_MAX_SEC_8191),
>  	ATA_QUIRK_MAX_TRIM_128M		= (1U << __ATA_QUIRK_MAX_TRIM_128M),
>  	ATA_QUIRK_NO_NCQ_ON_ATI		= (1U << __ATA_QUIRK_NO_NCQ_ON_ATI),
>  	ATA_QUIRK_NO_LPM_ON_ATI		= (1U << __ATA_QUIRK_NO_LPM_ON_ATI),


-- 
Damien Le Moal
Western Digital Research

  parent reply	other threads:[~2025-11-25  0:24 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-24 13:44 [PATCH 0/3] ata: libata: Quirk DELLBOSS VD MV.R00-0 max_sectors Niklas Cassel
2025-11-24 13:44 ` [PATCH 1/3] ata: libata: Move quirk flags to their own enum Niklas Cassel
2025-11-25  4:29   ` Damien Le Moal
2025-11-24 13:44 ` [PATCH 2/3] ata: libata-core: Quirk DELLBOSS VD MV.R00-0 max_sectors Niklas Cassel
2025-11-24 14:09   ` Niklas Cassel
2025-11-24 20:51     ` Jack L.
2025-11-25  0:00     ` Jack L.
2025-11-25  0:20   ` Damien Le Moal [this message]
2025-11-24 13:44 ` [PATCH 3/3] ata: libata: Allow more quirks Niklas Cassel
2025-11-25  4:30   ` Damien Le Moal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4a5fe360-6d26-4d06-9eca-d087966fee0a@kernel.org \
    --to=dlemoal@kernel.org \
    --cc=cassel@kernel.org \
    --cc=linux-ide@vger.kernel.org \
    --cc=xxjack12xx@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox