From: Mario Limonciello <superm1@kernel.org>
To: Niklas Cassel <cassel@kernel.org>, Damien Le Moal <dlemoal@kernel.org>
Cc: linux-ide@vger.kernel.org, grandmastertriplej@gmail.com,
"Natikar, Basavaraj" <basavaraj.natikar@amd.com>,
Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
Subject: Re: [PATCH 1/2] ata: libata-core: Extend Samsung LPM quirk to AMD controllers
Date: Sat, 19 Sep 2026 12:21:35 -0500 [thread overview]
Message-ID: <20c5cd79-a9a8-4fc3-8a46-d1313a650397@kernel.org> (raw)
In-Reply-To: <20260918124030.1962773-5-cassel@kernel.org>
On 9/18/26 07:40, Niklas Cassel wrote:
> A Samsung SSD 870 QVO 8TB connected to an AMD 600 Series chipset SATA
> controller is reported to time out on STANDBY IMMEDIATE during system
> suspend with med_power_with_dipm enabled. The command completes when
> using max_performance instead.
>
> The existing Samsung LPM quirk only matches ATI controllers, leaving
> AMD controllers unaffected. Rename it to
> ATA_QUIRK_NO_LPM_ON_ATI_AND_AMD and extend the vendor check to AMD for
> the same Samsung SSD model patterns. Keep LPM behavior unchanged for
> other controller vendors, including Intel.
>
> Leave ATA_QUIRK_NO_NCQ_ON_ATI restricted to ATI, since the reported AMD
> issue concerns LPM rather than NCQ.
>
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=221986
> Signed-off-by: Niklas Cassel <cassel@kernel.org>
Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org>> ---
> drivers/ata/libata-core.c | 15 ++++++++-------
> include/linux/libata.h | 4 ++--
> 2 files changed, 10 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
> index f482c0a6d7e9..92233fb25051 100644
> --- a/drivers/ata/libata-core.c
> +++ b/drivers/ata/libata-core.c
> @@ -2972,9 +2972,10 @@ static void ata_dev_config_lpm(struct ata_device *dev)
> (dev->id[ATA_ID_SATA_CAPABILITY] & 0xe) == 0x2)
> dev->quirks |= ATA_QUIRK_NOLPM;
>
> - /* ATI specific quirk */
> - if ((dev->quirks & ATA_QUIRK_NO_LPM_ON_ATI) &&
> - ata_dev_check_adapter(dev, PCI_VENDOR_ID_ATI))
> + /* ATI and AMD specific quirk */
> + if ((dev->quirks & ATA_QUIRK_NO_LPM_ON_ATI_AND_AMD) &&
> + (ata_dev_check_adapter(dev, PCI_VENDOR_ID_ATI) ||
> + ata_dev_check_adapter(dev, PCI_VENDOR_ID_AMD)))
> dev->quirks |= ATA_QUIRK_NOLPM;
> }
>
> @@ -4136,7 +4137,7 @@ static const char * const ata_quirk_names[] = {
> [__ATA_QUIRK_MAX_SEC] = "maxsec",
> [__ATA_QUIRK_MAX_TRIM_128M] = "maxtrim128m",
> [__ATA_QUIRK_NO_NCQ_ON_ATI] = "noncqonati",
> - [__ATA_QUIRK_NO_LPM_ON_ATI] = "nolpmonati",
> + [__ATA_QUIRK_NO_LPM_ON_ATI_AND_AMD] = "nolpmonatiandamd",
> [__ATA_QUIRK_NO_ID_DEV_LOG] = "noiddevlog",
> [__ATA_QUIRK_NO_LOG_DIR] = "nologdir",
> [__ATA_QUIRK_NO_FUA] = "nofua",
> @@ -4420,15 +4421,15 @@ static const struct ata_dev_quirks_entry __ata_dev_quirks[] = {
> { "Samsung SSD 860*", NULL, ATA_QUIRK_NO_NCQ_TRIM |
> ATA_QUIRK_ZERO_AFTER_TRIM |
> ATA_QUIRK_NO_NCQ_ON_ATI |
> - ATA_QUIRK_NO_LPM_ON_ATI },
> + ATA_QUIRK_NO_LPM_ON_ATI_AND_AMD },
> { "Samsung SSD 870*", NULL, ATA_QUIRK_NO_NCQ_TRIM |
> ATA_QUIRK_ZERO_AFTER_TRIM |
> ATA_QUIRK_NO_NCQ_ON_ATI |
> - ATA_QUIRK_NO_LPM_ON_ATI },
> + ATA_QUIRK_NO_LPM_ON_ATI_AND_AMD },
> { "SAMSUNG*MZ7LH*", NULL, ATA_QUIRK_NO_NCQ_TRIM |
> ATA_QUIRK_ZERO_AFTER_TRIM |
> ATA_QUIRK_NO_NCQ_ON_ATI |
> - ATA_QUIRK_NO_LPM_ON_ATI },
> + ATA_QUIRK_NO_LPM_ON_ATI_AND_AMD },
> { "FCCT*M500*", NULL, ATA_QUIRK_NO_NCQ_TRIM |
> ATA_QUIRK_ZERO_AFTER_TRIM },
>
> diff --git a/include/linux/libata.h b/include/linux/libata.h
> index 313e96173b19..48bde275968d 100644
> --- a/include/linux/libata.h
> +++ b/include/linux/libata.h
> @@ -76,7 +76,7 @@ enum ata_quirks {
> __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 */
> - __ATA_QUIRK_NO_LPM_ON_ATI, /* Disable LPM on ATI chipset */
> + __ATA_QUIRK_NO_LPM_ON_ATI_AND_AMD, /* Disable LPM on ATI and AMD chipsets */
> __ATA_QUIRK_NO_ID_DEV_LOG, /* Identify device log missing */
> __ATA_QUIRK_NO_LOG_DIR, /* Do not read log directory */
> __ATA_QUIRK_NO_FUA, /* Do not use FUA */
> @@ -115,7 +115,7 @@ enum {
> ATA_QUIRK_MAX_SEC = BIT_ULL(__ATA_QUIRK_MAX_SEC),
> ATA_QUIRK_MAX_TRIM_128M = BIT_ULL(__ATA_QUIRK_MAX_TRIM_128M),
> ATA_QUIRK_NO_NCQ_ON_ATI = BIT_ULL(__ATA_QUIRK_NO_NCQ_ON_ATI),
> - ATA_QUIRK_NO_LPM_ON_ATI = BIT_ULL(__ATA_QUIRK_NO_LPM_ON_ATI),
> + ATA_QUIRK_NO_LPM_ON_ATI_AND_AMD = BIT_ULL(__ATA_QUIRK_NO_LPM_ON_ATI_AND_AMD),
> ATA_QUIRK_NO_ID_DEV_LOG = BIT_ULL(__ATA_QUIRK_NO_ID_DEV_LOG),
> ATA_QUIRK_NO_LOG_DIR = BIT_ULL(__ATA_QUIRK_NO_LOG_DIR),
> ATA_QUIRK_NO_FUA = BIT_ULL(__ATA_QUIRK_NO_FUA),
next prev parent reply other threads:[~2026-09-19 17:21 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-18 12:40 [PATCH 0/2] ata: Extend Samsung LPM quirk to AMD and fix force documentation Niklas Cassel
2026-09-18 12:40 ` [PATCH 1/2] ata: libata-core: Extend Samsung LPM quirk to AMD controllers Niklas Cassel
2026-09-19 17:21 ` Mario Limonciello [this message]
2026-09-20 4:33 ` Damien Le Moal
2026-09-18 12:40 ` [PATCH 2/2] ata: libata: Correct libata.force parameter documentation Niklas Cassel
2026-09-18 12:49 ` Niklas Cassel
2026-09-20 4:35 ` Damien Le Moal
2026-09-21 11:26 ` Niklas Cassel
2026-09-20 4:34 ` Damien Le Moal
2026-09-21 11:21 ` [PATCH 0/2] ata: Extend Samsung LPM quirk to AMD and fix force documentation Niklas Cassel
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=20c5cd79-a9a8-4fc3-8a46-d1313a650397@kernel.org \
--to=superm1@kernel.org \
--cc=Shyam-sundar.S-k@amd.com \
--cc=basavaraj.natikar@amd.com \
--cc=cassel@kernel.org \
--cc=dlemoal@kernel.org \
--cc=grandmastertriplej@gmail.com \
--cc=linux-ide@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.