All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] ata: disable LPM on some WDC drives
@ 2026-07-28 11:13 Niklas Cassel
  2026-07-28 11:13 ` [PATCH 1/2] ata: libata-core: Disable LPM on some WD drives Niklas Cassel
  2026-07-28 11:13 ` [PATCH 2/2] ata: libata-core: Disable LPM on WD Green 2.5 480GB Niklas Cassel
  0 siblings, 2 replies; 4+ messages in thread
From: Niklas Cassel @ 2026-07-28 11:13 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel; +Cc: Ronald Garcia Vazquez, linux-ide

Hello there,

This disables LPM on some WDC drives, which, according to user reports,
have issues with LPM.

Kind regards,
Niklas


Niklas Cassel (2):
  ata: libata-core: Disable LPM on some WD drives
  ata: libata-core: Disable LPM on WD Green 2.5 480GB

 drivers/ata/libata-core.c | 9 +++++++++
 1 file changed, 9 insertions(+)

-- 
2.55.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] ata: libata-core: Disable LPM on some WD drives
  2026-07-28 11:13 [PATCH 0/2] ata: disable LPM on some WDC drives Niklas Cassel
@ 2026-07-28 11:13 ` Niklas Cassel
  2026-07-28 11:22   ` sashiko-bot
  2026-07-28 11:13 ` [PATCH 2/2] ata: libata-core: Disable LPM on WD Green 2.5 480GB Niklas Cassel
  1 sibling, 1 reply; 4+ messages in thread
From: Niklas Cassel @ 2026-07-28 11:13 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel; +Cc: Ronald Garcia Vazquez, linux-ide

According to a user report WDC WD100EFGX-68CPLN0 and WDC WD102KFBX-68M95N0
have problems with LPM.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=220693
Signed-off-by: Niklas Cassel <cassel@kernel.org>
---
 drivers/ata/libata-core.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index c43bd28b20b1..15781b4f0489 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -4413,6 +4413,14 @@ static const struct ata_dev_quirks_entry __ata_dev_quirks[] = {
 	{ "WDC WD3000JD-*",		NULL,	ATA_QUIRK_WD_BROKEN_LPM },
 	{ "WDC WD3200JD-*",		NULL,	ATA_QUIRK_WD_BROKEN_LPM },
 
+	/*
+	 * WD drives with LPM issues (irrespective of supported SATA speeds).
+	 * (Unlike ATA_QUIRK_WD_BROKEN_LPM, which is only applied if the drive
+	 * exposes SATA Gen1 speed support, and SATA Gen1 speed support only.)
+	 */
+	{ "WDC WD100EFGX-68CPLN0",	NULL,	ATA_QUIRK_NOLPM },
+	{ "WDC WD102KFBX-68M95N0",	NULL,	ATA_QUIRK_NOLPM },
+
 	/*
 	 * This sata dom device goes on a walkabout when the ATA_LOG_DIRECTORY
 	 * log page is accessed. Ensure we never ask for this log page with
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] ata: libata-core: Disable LPM on WD Green 2.5 480GB
  2026-07-28 11:13 [PATCH 0/2] ata: disable LPM on some WDC drives Niklas Cassel
  2026-07-28 11:13 ` [PATCH 1/2] ata: libata-core: Disable LPM on some WD drives Niklas Cassel
@ 2026-07-28 11:13 ` Niklas Cassel
  1 sibling, 0 replies; 4+ messages in thread
From: Niklas Cassel @ 2026-07-28 11:13 UTC (permalink / raw)
  To: Damien Le Moal, Niklas Cassel; +Cc: Ronald Garcia Vazquez, linux-ide

According to a user report, the WD Green 2.5 480GB has problems with LPM.

Link: https://lore.kernel.org/linux-ide/CAGiKK17Fg4SgS+y0GzD3new44QzD_yPZU5V3ZeHdUr9mFnfn1Q@mail.gmail.com/
Signed-off-by: Niklas Cassel <cassel@kernel.org>
---
 drivers/ata/libata-core.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 15781b4f0489..961d03fbc4d9 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -4420,6 +4420,7 @@ static const struct ata_dev_quirks_entry __ata_dev_quirks[] = {
 	 */
 	{ "WDC WD100EFGX-68CPLN0",	NULL,	ATA_QUIRK_NOLPM },
 	{ "WDC WD102KFBX-68M95N0",	NULL,	ATA_QUIRK_NOLPM },
+	{ "WD Green 2.5 480GB",		NULL,	ATA_QUIRK_NOLPM },
 
 	/*
 	 * This sata dom device goes on a walkabout when the ATA_LOG_DIRECTORY
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] ata: libata-core: Disable LPM on some WD drives
  2026-07-28 11:13 ` [PATCH 1/2] ata: libata-core: Disable LPM on some WD drives Niklas Cassel
@ 2026-07-28 11:22   ` sashiko-bot
  0 siblings, 0 replies; 4+ messages in thread
From: sashiko-bot @ 2026-07-28 11:22 UTC (permalink / raw)
  To: Niklas Cassel; +Cc: linux-ide, dlemoal, cassel

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:

Pre-existing issues:
- [High] Incorrect loop iteration in `ata_scsi_lpm_supported` completely ignores `ATA_QUIRK_NOLPM` for devices attached via a Port Multiplier.
--

--- Patch [1]: [PATCH 1/2] ata: libata-core: Disable LPM on some WD drives ---
commit ddcafc7d1d056ed46964475cc9dcb5abcb0d3b87
Author: Niklas Cassel <cassel@kernel.org>

ata: libata-core: Disable LPM on some WD drives

This commit adds the ATA_QUIRK_NOLPM quirk for specific WD drives that
have problems with Link Power Management (LPM).

Link: https://bugzilla.kernel.org/show_bug.cgi?id=220693

> diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
> index c43bd28b20b1a..15781b4f04897 100644
> --- a/drivers/ata/libata-core.c
> +++ b/drivers/ata/libata-core.c
> @@ -4413,6 +4413,14 @@ static const struct ata_dev_quirks_entry __ata_dev_quirks[] = {
>  	{ "WDC WD3000JD-*",		NULL,	ATA_QUIRK_WD_BROKEN_LPM },
>  	{ "WDC WD3200JD-*",		NULL,	ATA_QUIRK_WD_BROKEN_LPM },
>  
> +	/*
> +	 * WD drives with LPM issues (irrespective of supported SATA speeds).
> +	 * (Unlike ATA_QUIRK_WD_BROKEN_LPM, which is only applied if the drive
> +	 * exposes SATA Gen1 speed support, and SATA Gen1 speed support only.)
> +	 */
> +	{ "WDC WD100EFGX-68CPLN0",	NULL,	ATA_QUIRK_NOLPM },
> +	{ "WDC WD102KFBX-68M95N0",	NULL,	ATA_QUIRK_NOLPM },

[Severity: High]
This is a pre-existing issue, but will these devices still experience LPM
issues if they are attached via a Port Multiplier?

Looking at ata_scsi_lpm_supported() in drivers/ata/libata-sata.c:

static bool ata_scsi_lpm_supported(struct ata_port *ap)
{
	struct ata_link *link;
	struct ata_device *dev;

	if ((ap->flags & ATA_FLAG_NO_LPM) || !ap->ops->set_lpm)
		return false;

	ata_for_each_link(link, ap, EDGE) {
		ata_for_each_dev(dev, &ap->link, ENABLED) {
			if (dev->quirks & ATA_QUIRK_NOLPM)
				return false;
		}
	}

	return true;
}

The outer loop correctly iterates over all links, including PMP links, but
the inner loop iterates over &ap->link instead of the current link being
evaluated.

Could this cause the code to repeatedly check the host link's devices while
entirely ignoring devices on PMP links? If so, the ATA_QUIRK_NOLPM quirk
might be bypassed for these buggy drives when they are attached via a Port
Multiplier and power management is configured.

> +
>  	/*
>  	 * This sata dom device goes on a walkabout when the ATA_LOG_DIRECTORY
>  	 * log page is accessed. Ensure we never ask for this log page with

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260728111310.722450-4-cassel@kernel.org?part=1

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-07-28 11:22 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-28 11:13 [PATCH 0/2] ata: disable LPM on some WDC drives Niklas Cassel
2026-07-28 11:13 ` [PATCH 1/2] ata: libata-core: Disable LPM on some WD drives Niklas Cassel
2026-07-28 11:22   ` sashiko-bot
2026-07-28 11:13 ` [PATCH 2/2] ata: libata-core: Disable LPM on WD Green 2.5 480GB Niklas Cassel

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.