summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaura Abbott <labbott@fedoraproject.org>2016-03-21 10:27:34 -0700
committerLaura Abbott <labbott@fedoraproject.org>2016-03-21 11:08:06 -0700
commit39e53b54d026d2dba4bf4d0a658db54504b69744 (patch)
treef63c95baf90b1a68df37e4c2323720d8459d7383
parent5724250a0ad240f39326cf6ba1d15593fe0fd95f (diff)
downloadkernel-39e53b54d026d2dba4bf4d0a658db54504b69744.tar.gz
kernel-39e53b54d026d2dba4bf4d0a658db54504b69744.tar.xz
kernel-39e53b54d026d2dba4bf4d0a658db54504b69744.zip
Misc fixes
- uas: Limit qdepth at the scsi-host level (rhbz 1315013) - Fix for performance regression caused by thermal (rhbz 1317190) - Input: synaptics - handle spurious release of trackstick buttons, again (rhbz 1318079)
-rw-r--r--0001-Input-synaptics-handle-spurious-release-of-trackstic.patch31
-rw-r--r--0001-uas-Limit-qdepth-at-the-scsi-host-level.patch45
-rw-r--r--kernel.spec14
-rw-r--r--thermal-fix.patch77
4 files changed, 167 insertions, 0 deletions
diff --git a/0001-Input-synaptics-handle-spurious-release-of-trackstic.patch b/0001-Input-synaptics-handle-spurious-release-of-trackstic.patch
new file mode 100644
index 000000000..52b082b36
--- /dev/null
+++ b/0001-Input-synaptics-handle-spurious-release-of-trackstic.patch
@@ -0,0 +1,31 @@
+From cb6fcfe5a7e9197ceb7e9eec56e9c526e4e76354 Mon Sep 17 00:00:00 2001
+From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Date: Mon, 14 Mar 2016 19:37:12 +0100
+Subject: [PATCH] Input: synaptics - handle spurious release of trackstick
+ buttons, again
+
+Looks like the fimware 8.2 stall has the extra buttons spurious release
+bug.
+
+Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+---
+ drivers/input/mouse/synaptics.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
+index 6025eb4..4ef8d7a 100644
+--- a/drivers/input/mouse/synaptics.c
++++ b/drivers/input/mouse/synaptics.c
+@@ -863,7 +863,8 @@ static void synaptics_report_ext_buttons(struct psmouse *psmouse,
+ return;
+
+ /* Bug in FW 8.1, buttons are reported only when ExtBit is 1 */
+- if (SYN_ID_FULL(priv->identity) == 0x801 &&
++ if ((SYN_ID_FULL(priv->identity) == 0x801 ||
++ SYN_ID_FULL(priv->identity) == 0x802) &&
+ !((psmouse->packet[0] ^ psmouse->packet[3]) & 0x02))
+ return;
+
+--
+2.5.0
+
diff --git a/0001-uas-Limit-qdepth-at-the-scsi-host-level.patch b/0001-uas-Limit-qdepth-at-the-scsi-host-level.patch
new file mode 100644
index 000000000..b6c446829
--- /dev/null
+++ b/0001-uas-Limit-qdepth-at-the-scsi-host-level.patch
@@ -0,0 +1,45 @@
+From 79abe2bd501d628b165f323098d6972d69bd13d7 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Wed, 16 Mar 2016 13:20:51 +0100
+Subject: [PATCH] uas: Limit qdepth at the scsi-host level
+
+Commit 64d513ac31bd ("scsi: use host wide tags by default") causes
+the scsi-core to queue more cmnds then we can handle on devices with
+multiple LUNs, limit the qdepth at the scsi-host level instead of
+per slave to fix this.
+
+BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1315013
+Cc: stable@vger.kernel.org # 4.4.x and 4.5.x
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+---
+ drivers/usb/storage/uas.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c
+index c90a7e4..b5cb7ab 100644
+--- a/drivers/usb/storage/uas.c
++++ b/drivers/usb/storage/uas.c
+@@ -800,7 +800,6 @@ static int uas_slave_configure(struct scsi_device *sdev)
+ if (devinfo->flags & US_FL_BROKEN_FUA)
+ sdev->broken_fua = 1;
+
+- scsi_change_queue_depth(sdev, devinfo->qdepth - 2);
+ return 0;
+ }
+
+@@ -932,6 +931,12 @@ static int uas_probe(struct usb_interface *intf, const struct usb_device_id *id)
+ if (result)
+ goto set_alt0;
+
++ /*
++ * 1 tag is reserved for untagged commands +
++ * 1 tag to avoid of by one errors in some bridge firmwares
++ */
++ shost->can_queue = devinfo->qdepth - 2;
++
+ usb_set_intfdata(intf, shost);
+ result = scsi_add_host(shost, &intf->dev);
+ if (result)
+--
+2.7.3
+
diff --git a/kernel.spec b/kernel.spec
index f1f0921e4..b9e365d3e 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -629,6 +629,15 @@ Patch680: ALSA-hda-Really-restrict-i915-notifier-to-HSW.patch
Patch681: ALSA-hda-Fix-forgotten-HDMI-monitor_present-update.patch
Patch682: ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM.patch
+#rhbz 1315013
+Patch683: 0001-uas-Limit-qdepth-at-the-scsi-host-level.patch
+
+#rhbz 1317190
+Patch684: thermal-fix.patch
+
+#rhbz 1318079
+Patch685: 0001-Input-synaptics-handle-spurious-release-of-trackstic.patch
+
# END OF PATCH DEFINITIONS
%endif
@@ -2151,6 +2160,11 @@ fi
#
#
%changelog
+* Mon Mar 21 2016 Laura Abbott <labbott@fedoraproject.org>
+- uas: Limit qdepth at the scsi-host level (rhbz 1315013)
+- Fix for performance regression caused by thermal (rhbz 1317190)
+- Input: synaptics - handle spurious release of trackstick buttons, again (rhbz 1318079)
+
* Mon Mar 21 2016 Josh Boyer <jwboyer@fedoraproject.org> - 4.6.0-0.rc0.git16.1
- Linux v4.5-9542-g643ad15d4741
- pekeys, efi, objtool merges
diff --git a/thermal-fix.patch b/thermal-fix.patch
new file mode 100644
index 000000000..bca27cfbe
--- /dev/null
+++ b/thermal-fix.patch
@@ -0,0 +1,77 @@
+From 81ad4276b505e987dd8ebbdf63605f92cd172b52 Mon Sep 17 00:00:00 2001
+From: Zhang Rui <rui.zhang@intel.com>
+Date: Fri, 18 Mar 2016 10:03:24 +0800
+Subject: [PATCH] Thermal: Ignore invalid trip points
+
+In some cases, platform thermal driver may report invalid trip points,
+thermal core should not take any action for these trip points.
+
+CC: <stable@vger.kernel.org> #3.18+
+Link: https://bugzilla.redhat.com/show_bug.cgi?id=1317190
+Link: https://bugzilla.kernel.org/show_bug.cgi?id=114551
+Signed-off-by: Zhang Rui <rui.zhang@intel.com>
+---
+ drivers/thermal/thermal_core.c | 13 ++++++++++++-
+ include/linux/thermal.h | 2 ++
+ 2 files changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
+index a0a8fd1..d4b5465 100644
+--- a/drivers/thermal/thermal_core.c
++++ b/drivers/thermal/thermal_core.c
+@@ -454,6 +454,10 @@ static void handle_thermal_trip(struct thermal_zone_device *tz, int trip)
+ {
+ enum thermal_trip_type type;
+
++ /* Ignore disabled trip points */
++ if (test_bit(trip, &tz->trips_disabled))
++ return;
++
+ tz->ops->get_trip_type(tz, trip, &type);
+
+ if (type == THERMAL_TRIP_CRITICAL || type == THERMAL_TRIP_HOT)
+@@ -1800,6 +1804,7 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
+ {
+ struct thermal_zone_device *tz;
+ enum thermal_trip_type trip_type;
++ int trip_temp;
+ int result;
+ int count;
+ int passive = 0;
+@@ -1871,9 +1876,15 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
+ goto unregister;
+
+ for (count = 0; count < trips; count++) {
+- tz->ops->get_trip_type(tz, count, &trip_type);
++ if (tz->ops->get_trip_type(tz, count, &trip_type))
++ set_bit(count, &tz->trips_disabled);
+ if (trip_type == THERMAL_TRIP_PASSIVE)
+ passive = 1;
++ if (tz->ops->get_trip_temp(tz, count, &trip_temp))
++ set_bit(count, &tz->trips_disabled);
++ /* Check for bogus trip points */
++ if (trip_temp == 0)
++ set_bit(count, &tz->trips_disabled);
+ }
+
+ if (!passive) {
+diff --git a/include/linux/thermal.h b/include/linux/thermal.h
+index 9c48199..a55d052 100644
+--- a/include/linux/thermal.h
++++ b/include/linux/thermal.h
+@@ -156,6 +156,7 @@ struct thermal_attr {
+ * @trip_hyst_attrs: attributes for trip points for sysfs: trip hysteresis
+ * @devdata: private pointer for device private data
+ * @trips: number of trip points the thermal zone supports
++ * @trips_disabled; bitmap for disabled trips
+ * @passive_delay: number of milliseconds to wait between polls when
+ * performing passive cooling.
+ * @polling_delay: number of milliseconds to wait between polls when
+@@ -191,6 +192,7 @@ struct thermal_zone_device {
+ struct thermal_attr *trip_hyst_attrs;
+ void *devdata;
+ int trips;
++ unsigned long trips_disabled; /* bitmap for disabled trips */
+ int passive_delay;
+ int polling_delay;
+ int temperature;