Re: SATA LPM issue - ATA error in logs 'frozen'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 24-04-18 01:08, Kevin Shanahan wrote:
On Mon, Apr 23, 2018 at 09:39:27AM +0200, Hans de Goede wrote:
I guess so I'm somewhat surprised about this because Samsung SSDs tend to be well
behaved, but this is a msata version, which may have some firmware differences
to the regular 2.5" models I guess and the PM830 SSD has many OEM firmware
customizations.

So based on that I think a narrow quirk targeting your specific firmware version
is the best solution for this for now.

I've attached a patch for this, can you build an arch kernel with that patch
added and see if that fixes things without you needing to manually change
anything?  /sys/class/scsi_host/host0/link_power_management_policy should now
default to max_performance for your SSD. Note that there are almost no powersavings
when going from maximum_performance to medium_power, so we simply disable LPM
all together on models which have issues with med_power_with_dipm.

Thanks.  This quirk correctly picked up my device and set the policy to
max_performance by default and there are no more freezes:

   # cat /sys/class/scsi_host/host0/link_power_management_policy
   max_performance

Thanks for testing, I've submitted the patch for this upstream now.

May I ask what motherboard your router is using ?

The motherboard appears to be custom for this particular machine:

   http://www.inctel.com.cn/product/detail/PartakerI4.html

"inctel" almost had me fooled for a minute there. Anyways thanks
for the info, now if we get more reports from the same (or very
similar) devices we may be able to come to the conclusion that this
is a motherboard issue not a SSD issue.

Regards,

Hans





 From dmidecode:

Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
         Manufacturer: INTEL Corporation
         Product Name: CRESCENTBAY
         Version: To be filled by O.E.M.
         Serial Number: To be filled by O.E.M.
         Asset Tag: To be filled by O.E.M.
         Features:
                 Board is a hosting board
                 Board is replaceable
         Location In Chassis: To be filled by O.E.M.
         Chassis Handle: 0x0003
         Type: Motherboard
         Contained Object Handles: 0

Regards,
Kevin.


 From 7f63aa54bf722b0585c5521d4728279d3d8fa40f Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@xxxxxxxxxx>
Date: Mon, 23 Apr 2018 09:27:28 +0200
Subject: [PATCH] libata: Apply NOLPM quirk for SAMSUNG MZMPC128HBFU-000MV SSD

Kevin Shanahan reports the following repeating errors when using LPM,
causing long delays accessing the disk:

   Apr 23 10:21:43 link kernel: ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x50000 action 0x6 frozen
   Apr 23 10:21:43 link kernel: ata1: SError: { PHYRdyChg CommWake }
   Apr 23 10:21:43 link kernel: ata1.00: failed command: WRITE DMA
   Apr 23 10:21:43 link kernel: ata1.00: cmd ca/00:08:60:5d:cd/00:00:00:00:00/e1 tag 9 dma 4096 out
                                         res 50/01:01:01:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
   Apr 23 10:21:43 link kernel: ata1.00: status: { DRDY }
   Apr 23 10:21:43 link kernel: ata1.00: error: { AMNF }
   Apr 23 10:21:43 link kernel: ata1: hard resetting link
   Apr 23 10:21:43 link kernel: ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
   Apr 23 10:21:43 link kernel: ata1.00: configured for UDMA/133
   Apr 23 10:21:43 link kernel: ata1: EH complete

These go away when switching from med_power_with_dipm to medium_power.

This is somewhat weird as the PM830 datasheet explicitly mentions DIPM
being supported and the idle power-consumption is specified with DIPM
enabled.

There are many OEM customized firmware versions for the PM830, so for now
lets assume this is firmware version specific and blacklist LPM based on
the firmware version.

Cc: Kevin Shanahan <kevin@xxxxxxxxxxxxxx>
Reported-by: Kevin Shanahan <kevin@xxxxxxxxxxxxxx>
Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
---
  drivers/ata/libata-core.c | 3 +++
  1 file changed, 3 insertions(+)

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 8bc71ca61e7f..6e400ff2b5db 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -4549,6 +4549,9 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
  						ATA_HORKAGE_ZERO_AFTER_TRIM |
  						ATA_HORKAGE_NOLPM, },
+ /* This specific Samsung model/firmware-rev does not handle LPM well */
+	{ "SAMSUNG MZMPC128HBFU-000MV", "CXM14M1Q", ATA_HORKAGE_NOLPM, },
+
  	/* devices that don't properly handle queued TRIM commands */
  	{ "Micron_M500_*",		NULL,	ATA_HORKAGE_NO_NCQ_TRIM |
  						ATA_HORKAGE_ZERO_AFTER_TRIM, },
--
2.17.0


--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux