[kernel] Fix UAS crashes with Seagate and Fresco Logic drives (rhbz 1164945)

Josh Boyer jwboyer at fedoraproject.org
Wed Dec 10 19:13:21 UTC 2014


commit 7722e301a4f62e3072ff0e411afdcedf416fbf9e
Author: Josh Boyer <jwboyer at fedoraproject.org>
Date:   Wed Dec 10 14:11:21 2014 -0500

    Fix UAS crashes with Seagate and Fresco Logic drives (rhbz 1164945)

 kernel.spec                                        |   11 +++++
 ...FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch |   39 +++++++++++++++++
 ...FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch |   37 ++++++++++++++++
 ...oken-streams-quirk-for-Fresco-Logic-FL100.patch |   45 ++++++++++++++++++++
 4 files changed, 132 insertions(+), 0 deletions(-)
---
diff --git a/kernel.spec b/kernel.spec
index 202e801..a840ee6 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -615,6 +615,11 @@ Patch26070: HID-add-support-for-MS-Surface-Pro-3-Type-Cover.patch
 #CVE-2014-8134 rhbz 1172765 1172769
 Patch26091: x86-kvm-Clear-paravirt_enabled-on-KVM-guests-for-esp.patch
 
+#rhbz 1164945
+Patch26092: xhci-Add-broken-streams-quirk-for-Fresco-Logic-FL100.patch
+Patch26093: uas-Add-US_FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch
+Patch26094: uas-Add-US_FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch
+
 # git clone ssh://git.fedorahosted.org/git/kernel-arm64.git, git diff master...devel
 Patch30000: kernel-arm64.patch
 
@@ -1339,6 +1344,11 @@ ApplyPatch HID-add-support-for-MS-Surface-Pro-3-Type-Cover.patch
 #CVE-2014-8134 rhbz 1172765 1172769
 ApplyPatch x86-kvm-Clear-paravirt_enabled-on-KVM-guests-for-esp.patch
 
+#rhbz 1164945
+ApplyPatch xhci-Add-broken-streams-quirk-for-Fresco-Logic-FL100.patch
+ApplyPatch uas-Add-US_FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch
+ApplyPatch uas-Add-US_FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch
+
 %if 0%{?aarch64patches}
 ApplyPatch kernel-arm64.patch
 %ifnarch aarch64 # this is stupid, but i want to notice before secondary koji does.
@@ -2208,6 +2218,7 @@ fi
 #                                    ||     ||
 %changelog
 * Wed Dec 10 2014 Josh Boyer <jwboyer at fedoraproject.org>
+- Fix UAS crashes with Seagate and Fresco Logic drives (rhbz 1164945)
 - CVE-2014-8134 fix espfix for 32-bit KVM paravirt guests (rhbz 1172765 1172769)
 
 * Tue Dec 09 2014 Josh Boyer <jwboyer at fedoraproject.org> - 3.18.0-1
diff --git a/uas-Add-US_FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch b/uas-Add-US_FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch
new file mode 100644
index 0000000..1e12a64
--- /dev/null
+++ b/uas-Add-US_FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch
@@ -0,0 +1,39 @@
+From 37a72caa7f031da7b3e63252c1f0023b8272203c Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede at redhat.com>
+Date: Fri, 5 Dec 2014 11:06:36 +0100
+Subject: [PATCH 2/3] uas: Add US_FL_NO_ATA_1X for Seagate devices with usb-id
+ 0bc2:a013
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This is yet another Seagate device which needs the US_FL_NO_ATA_1X quirk
+
+Reported-by: Marcin Zajączkowski <mszpak at wp.pl>
+Cc: stable at vger.kernel.org # 3.16
+Signed-off-by: Hans de Goede <hdegoede at redhat.com>
+---
+ drivers/usb/storage/unusual_uas.h | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/drivers/usb/storage/unusual_uas.h b/drivers/usb/storage/unusual_uas.h
+index 18a283d6de1c..2918376a1979 100644
+--- a/drivers/usb/storage/unusual_uas.h
++++ b/drivers/usb/storage/unusual_uas.h
+@@ -68,6 +68,13 @@ UNUSUAL_DEV(0x0bc2, 0xa003, 0x0000, 0x9999,
+ 		USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+ 		US_FL_NO_ATA_1X),
+ 
++/* Reported-by: Marcin Zajączkowski <mszpak at wp.pl> */
++UNUSUAL_DEV(0x0bc2, 0xa013, 0x0000, 0x9999,
++		"Seagate",
++		"Backup Plus",
++		USB_SC_DEVICE, USB_PR_DEVICE, NULL,
++		US_FL_NO_ATA_1X),
++
+ /* https://bbs.archlinux.org/viewtopic.php?id=183190 */
+ UNUSUAL_DEV(0x0bc2, 0xab20, 0x0000, 0x9999,
+ 		"Seagate",
+-- 
+2.1.0
+
diff --git a/uas-Add-US_FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch b/uas-Add-US_FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch
new file mode 100644
index 0000000..11725df
--- /dev/null
+++ b/uas-Add-US_FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch
@@ -0,0 +1,37 @@
+From a7ea9a460f28ef9781ba8dad4a6feb5fd01202f2 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede at redhat.com>
+Date: Mon, 8 Dec 2014 09:46:36 +0100
+Subject: [PATCH 3/3] uas: Add US_FL_NO_REPORT_OPCODES for JMicron JMS566 with
+ usb-id 0bc2:a013
+
+Like the JMicron JMS567 enclosures with the JMS566 choke on report-opcodes,
+so avoid it.
+
+Tested-and-reported-by: Takeo Nakayama <javhera at gmx.com>
+Cc: stable at vger.kernel.org # 3.16
+Signed-off-by: Hans de Goede <hdegoede at redhat.com>
+---
+ drivers/usb/storage/unusual_uas.h | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/drivers/usb/storage/unusual_uas.h b/drivers/usb/storage/unusual_uas.h
+index 2918376a1979..2f0a3d35269a 100644
+--- a/drivers/usb/storage/unusual_uas.h
++++ b/drivers/usb/storage/unusual_uas.h
+@@ -111,6 +111,13 @@ UNUSUAL_DEV(0x2109, 0x0711, 0x0000, 0x9999,
+ 		USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+ 		US_FL_NO_ATA_1X),
+ 
++/* Reported-by: Takeo Nakayama <javhera at gmx.com> */
++UNUSUAL_DEV(0x357d, 0x7788, 0x0000, 0x9999,
++		"JMicron",
++		"JMS566",
++		USB_SC_DEVICE, USB_PR_DEVICE, NULL,
++		US_FL_NO_REPORT_OPCODES),
++
+ /* Reported-by: Hans de Goede <hdegoede at redhat.com> */
+ UNUSUAL_DEV(0x4971, 0x1012, 0x0000, 0x9999,
+ 		"Hitachi",
+-- 
+2.1.0
+
diff --git a/xhci-Add-broken-streams-quirk-for-Fresco-Logic-FL100.patch b/xhci-Add-broken-streams-quirk-for-Fresco-Logic-FL100.patch
new file mode 100644
index 0000000..43181ff
--- /dev/null
+++ b/xhci-Add-broken-streams-quirk-for-Fresco-Logic-FL100.patch
@@ -0,0 +1,45 @@
+From e6a429eb0bfa03e3dca62e3922874d768833395f Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede at redhat.com>
+Date: Fri, 5 Dec 2014 11:01:00 +0100
+Subject: [PATCH 1/3] xhci: Add broken-streams quirk for Fresco Logic FL1000G
+ xhci controllers
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Streams do not work reliabe on Fresco Logic FL1000G xhci controllers,
+trying to use them results in errors like this:
+
+21:37:33 kernel: xhci_hcd 0000:04:00.0: ERROR Transfer event for disabled endpoint or incorrect stream ring
+21:37:33 kernel: xhci_hcd 0000:04:00.0: @00000000368b3570 9067b000 00000000 05000000 01078001
+21:37:33 kernel: xhci_hcd 0000:04:00.0: ERROR Transfer event for disabled endpoint or incorrect stream ring
+21:37:33 kernel: xhci_hcd 0000:04:00.0: @00000000368b3580 9067b400 00000000 05000000 01038001
+
+As always I've ordered a pci-e addon card with a Fresco Logic controller for
+myself to see if I can come up with a better fix then the big hammer, in
+the mean time this will make uas devices work again (in usb-storage mode)
+for FL1000G users.
+
+Reported-by: Marcin Zajączkowski <mszpak at wp.pl>
+Cc: stable at vger.kernel.org # 3.15
+Signed-off-by: Hans de Goede <hdegoede at redhat.com>
+---
+ drivers/usb/host/xhci-pci.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
+index d41ce7aaa97d..63f79aa82673 100644
+--- a/drivers/usb/host/xhci-pci.c
++++ b/drivers/usb/host/xhci-pci.c
+@@ -80,6 +80,8 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
+ 				"must be suspended extra slowly",
+ 				pdev->revision);
+ 		}
++		if (pdev->device == PCI_DEVICE_ID_FRESCO_LOGIC_PDK)
++			xhci->quirks |= XHCI_BROKEN_STREAMS;
+ 		/* Fresco Logic confirms: all revisions of this chip do not
+ 		 * support MSI, even though some of them claim to in their PCI
+ 		 * capabilities.
+-- 
+2.1.0
+


More information about the scm-commits mailing list