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)
This commit is contained in:
parent
5724250a0a
commit
39e53b54d0
@ -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
|
||||
|
45
0001-uas-Limit-qdepth-at-the-scsi-host-level.patch
Normal file
45
0001-uas-Limit-qdepth-at-the-scsi-host-level.patch
Normal file
@ -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
|
||||
|
14
kernel.spec
14
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
|
||||
|
77
thermal-fix.patch
Normal file
77
thermal-fix.patch
Normal file
@ -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;
|
Loading…
Reference in New Issue
Block a user