libata: Apply NOLPM quirk to Crucial M500 480 and 960GB SSDs
authorHans de Goede <hdegoede@redhat.com>
Mon, 19 Mar 2018 15:33:58 +0000 (16:33 +0100)
committerBen Hutchings <ben@decadent.org.uk>
Thu, 31 May 2018 23:30:23 +0000 (00:30 +0100)
commit 62ac3f7305470e3f52f159de448bc1a771717e88 upstream.

There have been reports of the Crucial M500 480GB model not working
with LPM set to min_power / med_power_with_dipm level.

It has not been tested with medium_power, but that typically has no
measurable power-savings.

Note the reporters Crucial_CT480M500SSD3 has a firmware version of MU03
and there is a MU05 update available, but that update does not mention any
LPM fixes in its changelog, so the quirk matches all firmware versions.

In my experience the LPM problems with (older) Crucial SSDs seem to be
limited to higher capacity versions of the SSDs (different firmware?),
so this commit adds a NOLPM quirk for the 480 and 960GB versions of the
M500, to avoid LPM causing issues with these SSDs.

Reported-and-tested-by: Martin Steigerwald <martin@lichtvoll.de>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
[bwh: Backported to 3.2: Drop the TRIM quirk flags, which aren't supported]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/ata/libata-core.c

index 0c98594..532450c 100644 (file)
@@ -4161,6 +4161,10 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
        /* The 512GB version of the MX100 has LPM issues */
        { "Crucial_CT512MX100*",        NULL,   ATA_HORKAGE_NOLPM, },
 
        /* The 512GB version of the MX100 has LPM issues */
        { "Crucial_CT512MX100*",        NULL,   ATA_HORKAGE_NOLPM, },
 
+       /* 480GB+ M500 SSDs have LPM issues */
+       { "Crucial_CT480M500*",         NULL,   ATA_HORKAGE_NOLPM, },
+       { "Crucial_CT960M500*",         NULL,   ATA_HORKAGE_NOLPM, },
+
        /* devices that don't properly handle TRIM commands */
        { "SuperSSpeed S238*",          NULL,   ATA_HORKAGE_NOTRIM, },
 
        /* devices that don't properly handle TRIM commands */
        { "SuperSSpeed S238*",          NULL,   ATA_HORKAGE_NOTRIM, },