Patch "ahci: Acer SA5-271 SSD Not Detected Fix" has been added to the 4.9-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
ahci: Acer SA5-271 SSD Not Detected Fix
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
ahci-acer-sa5-271-ssd-not-detected-fix.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
8bfd174312629866efa535193d9e563768ff4307Mon Sep 17 00:00:00 2001
From: Sui Chen <[email protected]>
Date: Tue, 9 May 2017 07:47:22 -0500
Subject: ahci: Acer SA5-271 SSD Not Detected Fix
From: Sui Chen <[email protected]>
commit 8bfd174312629866efa535193d9e563768ff4307 upstream.
(Correction in this resend: fixed function name acer_sa5_271_workaround; fixed
the always-true condition in the function; fixed description.)
On the Acer Switch Alpha 12 (model number: SA5-271), the internal SSD may not get detected because the port_map and CAP.nr_ports combination causes the driver to skip the port that is actually connected to the SSD. More specifically, either all SATA ports are identified as DUMMY, or all ports get ``link down'' and never get up again.
This problem occurs occasionally. When this problem occurs, CAP may hold a value of 0xC734FF00 or 0xC734FF01 and port_map may hold a value of 0x00 or 0x01. When this problem does not occur, CAP holds a value of 0xC734FF02 and port_map may hold a value of 0x07. Overriding the CAP value to 0xC734FF02 and port_map to 0x7 significantly reduces the occurrence of this problem.
--- drivers/ata/ahci.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+)
drivers/ata/ahci.c +38 -0
@@ -1362,6 +1362,40 @@ static inline void ahci_gtf_filter_worka {}#endif +/* +* On the Acer Aspire Switch Alpha 12, sometimes all SATA ports are detected +* as DUMMY, or detected but eventually get a "link down" and never get up +* again. When this happens, CAP.NP may hold a value of 0x00 or 0x01, and the +* port_map may hold a value of 0x00. +* +* Overriding CAP.NP to 0x02 and the port_map to 0x7 will reveal all 3 ports +* and can significantly reduce the occurrence of the problem. +* +* https://bugzilla.kernel.org/show_bug.cgi?id=189471 +*/ +static void acer_sa5_271_workaround (struct ahci_host_priv *hpriv, +struct pci_dev *pdev) +{ +static const struct dmi_system_id sysids[] = { + { + .ident ="Acer Switch Alpha 12" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Acer" ), +DMI_MATCH (DMI_PRODUCT_NAME ,"Switch SA5-271" ) + }, + }, + { } + }; + +if (dmi_check_system (sysids)) { +dev_info (&pdev->dev,"enabling Acer Switch Alpha 12 workaround\n" ); +if ((hpriv->saved_cap &0xC734FF00 ) ==0xC734FF00 ) { + hpriv->port_map =0x7 ; + hpriv->cap =0xC734FF02 ; + } + } +} +#ifdef CONFIG_ARM64 /* * Due to ERRATA#22536, ThunderX needs to handle HOST_IRQ_STAT differently.
@@ -1597,6 +1631,10 @@ static int ahci_init_one(struct pci_dev "online status unreliable, applying workaround\n"); } + +/* Acer SA5-271 workaround modifies private_data */ +acer_sa5_271_workaround (hpriv, pdev); +/* CAP.NP sometimes indicate the index of the last enabled * port, at other times, that of the last possible port, so * determining the maximum port number requires looking at
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/ahci-acer-sa5-271-ssd-not-detected-fix.patch