All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sascha Hauer <s.hauer@pengutronix.de>
To: linux-pm@vger.kernel.org
Cc: Sascha Hauer <s.hauer@pengutronix.de>,
	Zhang Rui <rui.zhang@intel.com>,
	Eduardo Valentin <edubezval@gmail.com>,
	linux-kernel@vger.kernel.org, Jean Delvare <jdelvare@suse.de>,
	Peter Feuerer <peter@piie.net>, Heiko Stuebner <heiko@sntech.de>,
	Lukasz Majewski <l.majewski@samsung.com>,
	Stephen Warren <swarren@wwwdotorg.org>,
	Thierry Reding <thierry.reding@gmail.com>,
	linux-acpi@vger.kernel.org, platform-driver-x86@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-omap@vger.kernel.org,
	linux-samsung-soc@vger.kernel.org,
	Guenter Roeck <linux@roeck-us.net>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Maxime Ripard <maxime.ripard@free-electrons.com>,
	Darren Hart <dvhart@infradead.org>,
	lm-sensors@lm-sensors.org
Subject: [PATCH] thermal: consistently use int for temperatures
Date: Mon,  6 Jul 2015 09:19:49 +0200	[thread overview]
Message-ID: <1436167189-29835-1-git-send-email-s.hauer@pengutronix.de> (raw)

The thermal code uses int, long and unsigned long for temperatures
in different places.

Using an unsigned type limits the thermal framework to positive
temperatures without need. Also several drivers currently will report
temperatures near UINT_MAX for temperatures below 0°C. This will probably
immediately shut the machine down due to overtemperature if started below
0°C.

'long' is 64bit on several architectures. This is not needed since INT_MAX °mC
is above the melting point of all known materials.

Consistently use a plain 'int' for temperatures throughout the thermal code and
the drivers. This only changes the places in the drivers where the temperature
is passed around as pointer, when drivers internally use another type this is
not changed.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: Eduardo Valentin <edubezval@gmail.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: Jean Delvare <jdelvare@suse.de>
Cc: Peter Feuerer <peter@piie.net>
Cc: Heiko Stuebner <heiko@sntech.de>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Stephen Warren <swarren@wwwdotorg.org>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: linux-acpi@vger.kernel.org
Cc: platform-driver-x86@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-omap@vger.kernel.org
Cc: linux-samsung-soc@vger.kernel.org
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Darren Hart <dvhart@infradead.org>
Cc: lm-sensors@lm-sensors.org
---
 drivers/acpi/thermal.c                             | 12 +++++-----
 drivers/hwmon/lm75.c                               |  2 +-
 drivers/hwmon/ntc_thermistor.c                     |  2 +-
 drivers/hwmon/tmp102.c                             |  2 +-
 drivers/input/touchscreen/sun4i-ts.c               |  8 +++----
 drivers/platform/x86/acerhdf.c                     |  9 ++++----
 drivers/platform/x86/intel_mid_thermal.c           |  9 ++++----
 drivers/power/power_supply_core.c                  |  2 +-
 drivers/thermal/armada_thermal.c                   |  2 +-
 drivers/thermal/db8500_thermal.c                   |  7 +++---
 drivers/thermal/dove_thermal.c                     |  2 +-
 drivers/thermal/fair_share.c                       |  2 +-
 drivers/thermal/gov_bang_bang.c                    |  5 ++--
 drivers/thermal/hisi_thermal.c                     |  4 ++--
 drivers/thermal/imx_thermal.c                      | 27 +++++++++++-----------
 drivers/thermal/int340x_thermal/int3400_thermal.c  |  2 +-
 .../thermal/int340x_thermal/int340x_thermal_zone.c | 10 ++++----
 .../thermal/int340x_thermal/int340x_thermal_zone.h |  8 +++----
 .../int340x_thermal/processor_thermal_device.c     |  4 ++--
 drivers/thermal/intel_quark_dts_thermal.c          | 13 +++++------
 drivers/thermal/intel_soc_dts_iosf.c               |  8 +++----
 drivers/thermal/kirkwood_thermal.c                 |  2 +-
 drivers/thermal/of-thermal.c                       | 14 +++++------
 drivers/thermal/power_allocator.c                  | 16 ++++++-------
 drivers/thermal/qcom-spmi-temp-alarm.c             |  2 +-
 drivers/thermal/rcar_thermal.c                     |  7 +++---
 drivers/thermal/rockchip_thermal.c                 | 10 ++++----
 drivers/thermal/samsung/exynos_tmu.c               | 23 +++++++++---------
 drivers/thermal/spear_thermal.c                    |  2 +-
 drivers/thermal/st/st_thermal.c                    |  5 ++--
 drivers/thermal/step_wise.c                        |  4 ++--
 drivers/thermal/tegra_soctherm.c                   |  4 ++--
 drivers/thermal/thermal_core.c                     | 26 ++++++++++-----------
 drivers/thermal/thermal_hwmon.c                    | 10 ++++----
 drivers/thermal/ti-soc-thermal/ti-thermal-common.c | 10 ++++----
 drivers/thermal/x86_pkg_temp_thermal.c             | 10 ++++----
 include/linux/thermal.h                            | 26 +++++++++------------
 37 files changed, 148 insertions(+), 163 deletions(-)

diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index 6d4e44e..e66ad25 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -529,8 +529,7 @@ static void acpi_thermal_check(void *data)
 
 /* sys I/F for generic thermal sysfs support */
 
-static int thermal_get_temp(struct thermal_zone_device *thermal,
-			    unsigned long *temp)
+static int thermal_get_temp(struct thermal_zone_device *thermal, int *temp)
 {
 	struct acpi_thermal *tz = thermal->devdata;
 	int result;
@@ -637,7 +636,7 @@ static int thermal_get_trip_type(struct thermal_zone_device *thermal,
 }
 
 static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
-				 int trip, unsigned long *temp)
+				 int trip, int *temp)
 {
 	struct acpi_thermal *tz = thermal->devdata;
 	int i;
@@ -690,7 +689,8 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
 }
 
 static int thermal_get_crit_temp(struct thermal_zone_device *thermal,
-				unsigned long *temperature) {
+				int *temperature)
+{
 	struct acpi_thermal *tz = thermal->devdata;
 
 	if (tz->trips.critical.flags.valid) {
@@ -713,8 +713,8 @@ static int thermal_get_trend(struct thermal_zone_device *thermal,
 		return -EINVAL;
 
 	if (type == THERMAL_TRIP_ACTIVE) {
-		unsigned long trip_temp;
-		unsigned long temp = DECI_KELVIN_TO_MILLICELSIUS_WITH_OFFSET(
+		int trip_temp;
+		int temp = DECI_KELVIN_TO_MILLICELSIUS_WITH_OFFSET(
 					tz->temperature, tz->kelvin_offset);
 		if (thermal_get_trip_temp(thermal, trip, &trip_temp))
 			return -EINVAL;
diff --git a/drivers/hwmon/lm75.c b/drivers/hwmon/lm75.c
index fe41d5a..e4e57bb 100644
--- a/drivers/hwmon/lm75.c
+++ b/drivers/hwmon/lm75.c
@@ -104,7 +104,7 @@ static inline long lm75_reg_to_mc(s16 temp, u8 resolution)
 
 /* sysfs attributes for hwmon */
 
-static int lm75_read_temp(void *dev, long *temp)
+static int lm75_read_temp(void *dev, int *temp)
 {
 	struct lm75_data *data = lm75_update_device(dev);
 
diff --git a/drivers/hwmon/ntc_thermistor.c b/drivers/hwmon/ntc_thermistor.c
index dc0b76c..feed306 100644
--- a/drivers/hwmon/ntc_thermistor.c
+++ b/drivers/hwmon/ntc_thermistor.c
@@ -477,7 +477,7 @@ static int ntc_thermistor_get_ohm(struct ntc_data *data)
 	return -EINVAL;
 }
 
-static int ntc_read_temp(void *dev, long *temp)
+static int ntc_read_temp(void *dev, int *temp)
 {
 	struct ntc_data *data = dev_get_drvdata(dev);
 	int ohm;
diff --git a/drivers/hwmon/tmp102.c b/drivers/hwmon/tmp102.c
index 9da2735..6548262 100644
--- a/drivers/hwmon/tmp102.c
+++ b/drivers/hwmon/tmp102.c
@@ -98,7 +98,7 @@ static struct tmp102 *tmp102_update_device(struct device *dev)
 	return tmp102;
 }
 
-static int tmp102_read_temp(void *dev, long *temp)
+static int tmp102_read_temp(void *dev, int *temp)
 {
 	struct tmp102 *tmp102 = tmp102_update_device(dev);
 
diff --git a/drivers/input/touchscreen/sun4i-ts.c b/drivers/input/touchscreen/sun4i-ts.c
index c011699..4857943 100644
--- a/drivers/input/touchscreen/sun4i-ts.c
+++ b/drivers/input/touchscreen/sun4i-ts.c
@@ -191,7 +191,7 @@ static void sun4i_ts_close(struct input_dev *dev)
 	writel(TEMP_IRQ_EN(1), ts->base + TP_INT_FIFOC);
 }
 
-static int sun4i_get_temp(const struct sun4i_ts_data *ts, long *temp)
+static int sun4i_get_temp(const struct sun4i_ts_data *ts, int *temp)
 {
 	/* No temp_data until the first irq */
 	if (ts->temp_data == -1)
@@ -202,7 +202,7 @@ static int sun4i_get_temp(const struct sun4i_ts_data *ts, long *temp)
 	return 0;
 }
 
-static int sun4i_get_tz_temp(void *data, long *temp)
+static int sun4i_get_tz_temp(void *data, int *temp)
 {
 	return sun4i_get_temp(data, temp);
 }
@@ -215,14 +215,14 @@ static ssize_t show_temp(struct device *dev, struct device_attribute *devattr,
 			 char *buf)
 {
 	struct sun4i_ts_data *ts = dev_get_drvdata(dev);
-	long temp;
+	int temp;
 	int error;
 
 	error = sun4i_get_temp(ts, &temp);
 	if (error)
 		return error;
 
-	return sprintf(buf, "%ld\n", temp);
+	return sprintf(buf, "%d\n", temp);
 }
 
 static ssize_t show_temp_label(struct device *dev,
diff --git a/drivers/platform/x86/acerhdf.c b/drivers/platform/x86/acerhdf.c
index 1ef02da..460fa67 100644
--- a/drivers/platform/x86/acerhdf.c
+++ b/drivers/platform/x86/acerhdf.c
@@ -346,8 +346,7 @@ static void acerhdf_check_param(struct thermal_zone_device *thermal)
  * as late as the polling interval is since we can't do that in the respective
  * accessors of the module parameters.
  */
-static int acerhdf_get_ec_temp(struct thermal_zone_device *thermal,
-			       unsigned long *t)
+static int acerhdf_get_ec_temp(struct thermal_zone_device *thermal, int *t)
 {
 	int temp, err = 0;
 
@@ -453,7 +452,7 @@ static int acerhdf_get_trip_type(struct thermal_zone_device *thermal, int trip,
 }
 
 static int acerhdf_get_trip_hyst(struct thermal_zone_device *thermal, int trip,
-				 unsigned long *temp)
+				 int *temp)
 {
 	if (trip != 0)
 		return -EINVAL;
@@ -464,7 +463,7 @@ static int acerhdf_get_trip_hyst(struct thermal_zone_device *thermal, int trip,
 }
 
 static int acerhdf_get_trip_temp(struct thermal_zone_device *thermal, int trip,
-				 unsigned long *temp)
+				 int *temp)
 {
 	if (trip == 0)
 		*temp = fanon;
@@ -477,7 +476,7 @@ static int acerhdf_get_trip_temp(struct thermal_zone_device *thermal, int trip,
 }
 
 static int acerhdf_get_crit_temp(struct thermal_zone_device *thermal,
-				 unsigned long *temperature)
+				 int *temperature)
 {
 	*temperature = ACERHDF_TEMP_CRIT;
 	return 0;
diff --git a/drivers/platform/x86/intel_mid_thermal.c b/drivers/platform/x86/intel_mid_thermal.c
index 0944e83..9f713b8 100644
--- a/drivers/platform/x86/intel_mid_thermal.c
+++ b/drivers/platform/x86/intel_mid_thermal.c
@@ -132,7 +132,7 @@ static int is_valid_adc(uint16_t adc_val, uint16_t min, uint16_t max)
  * to achieve very close approximate temp value with less than
  * 0.5C error
  */
-static int adc_to_temp(int direct, uint16_t adc_val, unsigned long *tp)
+static int adc_to_temp(int direct, uint16_t adc_val, int *tp)
 {
 	int temp;
 
@@ -174,14 +174,13 @@ static int adc_to_temp(int direct, uint16_t adc_val, unsigned long *tp)
  *
  * Can sleep
  */
-static int mid_read_temp(struct thermal_zone_device *tzd, unsigned long *temp)
+static int mid_read_temp(struct thermal_zone_device *tzd, int *temp)
 {
 	struct thermal_device_info *td_info = tzd->devdata;
 	uint16_t adc_val, addr;
 	uint8_t data = 0;
 	int ret;
-	unsigned long curr_temp;
-
+	int curr_temp;
 
 	addr = td_info->chnl_addr;
 
@@ -453,7 +452,7 @@ static SIMPLE_DEV_PM_OPS(mid_thermal_pm,
  *
  * Can sleep
  */
-static int read_curr_temp(struct thermal_zone_device *tzd, unsigned long *temp)
+static int read_curr_temp(struct thermal_zone_device *tzd, int *temp)
 {
 	WARN_ON(tzd == NULL);
 	return mid_read_temp(tzd, temp);
diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c
index 869284c..456987c 100644
--- a/drivers/power/power_supply_core.c
+++ b/drivers/power/power_supply_core.c
@@ -557,7 +557,7 @@ EXPORT_SYMBOL_GPL(power_supply_unreg_notifier);
 
 #ifdef CONFIG_THERMAL
 static int power_supply_read_temp(struct thermal_zone_device *tzd,
-		unsigned long *temp)
+		int *temp)
 {
 	struct power_supply *psy;
 	union power_supply_propval val;
diff --git a/drivers/thermal/armada_thermal.c b/drivers/thermal/armada_thermal.c
index 01255fd..26b8d32 100644
--- a/drivers/thermal/armada_thermal.c
+++ b/drivers/thermal/armada_thermal.c
@@ -155,7 +155,7 @@ static bool armada_is_valid(struct armada_thermal_priv *priv)
 }
 
 static int armada_get_temp(struct thermal_zone_device *thermal,
-			  unsigned long *temp)
+			  int *temp)
 {
 	struct armada_thermal_priv *priv = thermal->devdata;
 	unsigned long reg;
diff --git a/drivers/thermal/db8500_thermal.c b/drivers/thermal/db8500_thermal.c
index 2fb273c..652acd8 100644
--- a/drivers/thermal/db8500_thermal.c
+++ b/drivers/thermal/db8500_thermal.c
@@ -107,8 +107,7 @@ static int db8500_cdev_unbind(struct thermal_zone_device *thermal,
 }
 
 /* Callback to get current temperature */
-static int db8500_sys_get_temp(struct thermal_zone_device *thermal,
-		unsigned long *temp)
+static int db8500_sys_get_temp(struct thermal_zone_device *thermal, int *temp)
 {
 	struct db8500_thermal_zone *pzone = thermal->devdata;
 
@@ -180,7 +179,7 @@ static int db8500_sys_get_trip_type(struct thermal_zone_device *thermal,
 
 /* Callback to get trip point temperature */
 static int db8500_sys_get_trip_temp(struct thermal_zone_device *thermal,
-		int trip, unsigned long *temp)
+		int trip, int *temp)
 {
 	struct db8500_thermal_zone *pzone = thermal->devdata;
 	struct db8500_thsens_platform_data *ptrips = pzone->trip_tab;
@@ -195,7 +194,7 @@ static int db8500_sys_get_trip_temp(struct thermal_zone_device *thermal,
 
 /* Callback to get critical trip point temperature */
 static int db8500_sys_get_crit_temp(struct thermal_zone_device *thermal,
-		unsigned long *temp)
+		int *temp)
 {
 	struct db8500_thermal_zone *pzone = thermal->devdata;
 	struct db8500_thsens_platform_data *ptrips = pzone->trip_tab;
diff --git a/drivers/thermal/dove_thermal.c b/drivers/thermal/dove_thermal.c
index 09f6e30..a0bc9de 100644
--- a/drivers/thermal/dove_thermal.c
+++ b/drivers/thermal/dove_thermal.c
@@ -93,7 +93,7 @@ static int dove_init_sensor(const struct dove_thermal_priv *priv)
 }
 
 static int dove_get_temp(struct thermal_zone_device *thermal,
-			  unsigned long *temp)
+			  int *temp)
 {
 	unsigned long reg;
 	struct dove_thermal_priv *priv = thermal->devdata;
diff --git a/drivers/thermal/fair_share.c b/drivers/thermal/fair_share.c
index c2c10bb..34fe365 100644
--- a/drivers/thermal/fair_share.c
+++ b/drivers/thermal/fair_share.c
@@ -34,7 +34,7 @@
 static int get_trip_level(struct thermal_zone_device *tz)
 {
 	int count = 0;
-	unsigned long trip_temp;
+	int trip_temp;
 	enum thermal_trip_type trip_type;
 
 	if (tz->trips == 0 || !tz->ops->get_trip_temp)
diff --git a/drivers/thermal/gov_bang_bang.c b/drivers/thermal/gov_bang_bang.c
index c5dd76b..70836c5 100644
--- a/drivers/thermal/gov_bang_bang.c
+++ b/drivers/thermal/gov_bang_bang.c
@@ -25,14 +25,13 @@
 
 static void thermal_zone_trip_update(struct thermal_zone_device *tz, int trip)
 {
-	long trip_temp;
-	unsigned long trip_hyst;
+	int trip_temp, trip_hyst;
 	struct thermal_instance *instance;
 
 	tz->ops->get_trip_temp(tz, trip, &trip_temp);
 	tz->ops->get_trip_hyst(tz, trip, &trip_hyst);
 
-	dev_dbg(&tz->device, "Trip%d[temp=%ld]:temp=%d:hyst=%ld\n",
+	dev_dbg(&tz->device, "Trip%d[temp=%d]:temp=%d:hyst=%d\n",
 				trip, trip_temp, tz->temperature,
 				trip_hyst);
 
diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c
index d5dd357..49aa068 100644
--- a/drivers/thermal/hisi_thermal.c
+++ b/drivers/thermal/hisi_thermal.c
@@ -155,7 +155,7 @@ static void hisi_thermal_disable_sensor(struct hisi_thermal_data *data)
 	mutex_unlock(&data->thermal_lock);
 }
 
-static int hisi_thermal_get_temp(void *_sensor, long *temp)
+static int hisi_thermal_get_temp(void *_sensor, int *temp)
 {
 	struct hisi_thermal_sensor *sensor = _sensor;
 	struct hisi_thermal_data *data = sensor->thermal;
@@ -178,7 +178,7 @@ static int hisi_thermal_get_temp(void *_sensor, long *temp)
 	data->irq_bind_sensor = sensor_id;
 	mutex_unlock(&data->thermal_lock);
 
-	dev_dbg(&data->pdev->dev, "id=%d, irq=%d, temp=%ld, thres=%d\n",
+	dev_dbg(&data->pdev->dev, "id=%d, irq=%d, temp=%d, thres=%d\n",
 		sensor->id, data->irq_enabled, *temp, sensor->thres_temp);
 	/*
 	 * Bind irq to sensor for two cases:
diff --git a/drivers/thermal/imx_thermal.c b/drivers/thermal/imx_thermal.c
index fde4c28..4bec1d3 100644
--- a/drivers/thermal/imx_thermal.c
+++ b/drivers/thermal/imx_thermal.c
@@ -98,10 +98,10 @@ struct imx_thermal_data {
 	enum thermal_device_mode mode;
 	struct regmap *tempmon;
 	u32 c1, c2; /* See formula in imx_get_sensor_data() */
-	unsigned long temp_passive;
-	unsigned long temp_critical;
-	unsigned long alarm_temp;
-	unsigned long last_temp;
+	int temp_passive;
+	int temp_critical;
+	int alarm_temp;
+	int last_temp;
 	bool irq_enabled;
 	int irq;
 	struct clk *thermal_clk;
@@ -109,7 +109,7 @@ struct imx_thermal_data {
 };
 
 static void imx_set_panic_temp(struct imx_thermal_data *data,
-			       signed long panic_temp)
+			       int panic_temp)
 {
 	struct regmap *map = data->tempmon;
 	int critical_value;
@@ -121,7 +121,7 @@ static void imx_set_panic_temp(struct imx_thermal_data *data,
 }
 
 static void imx_set_alarm_temp(struct imx_thermal_data *data,
-			       signed long alarm_temp)
+			       int alarm_temp)
 {
 	struct regmap *map = data->tempmon;
 	int alarm_value;
@@ -133,7 +133,7 @@ static void imx_set_alarm_temp(struct imx_thermal_data *data,
 			TEMPSENSE0_ALARM_VALUE_SHIFT);
 }
 
-static int imx_get_temp(struct thermal_zone_device *tz, unsigned long *temp)
+static int imx_get_temp(struct thermal_zone_device *tz, int *temp)
 {
 	struct imx_thermal_data *data = tz->devdata;
 	struct regmap *map = data->tempmon;
@@ -189,13 +189,13 @@ static int imx_get_temp(struct thermal_zone_device *tz, unsigned long *temp)
 		if (data->alarm_temp == data->temp_critical &&
 			*temp < data->temp_passive) {
 			imx_set_alarm_temp(data, data->temp_passive);
-			dev_dbg(&tz->device, "thermal alarm off: T < %lu\n",
+			dev_dbg(&tz->device, "thermal alarm off: T < %d\n",
 				data->alarm_temp / 1000);
 		}
 	}
 
 	if (*temp != data->last_temp) {
-		dev_dbg(&tz->device, "millicelsius: %ld\n", *temp);
+		dev_dbg(&tz->device, "millicelsius: %d\n", *temp);
 		data->last_temp = *temp;
 	}
 
@@ -262,8 +262,7 @@ static int imx_get_trip_type(struct thermal_zone_device *tz, int trip,
 	return 0;
 }
 
-static int imx_get_crit_temp(struct thermal_zone_device *tz,
-			     unsigned long *temp)
+static int imx_get_crit_temp(struct thermal_zone_device *tz, int *temp)
 {
 	struct imx_thermal_data *data = tz->devdata;
 
@@ -272,7 +271,7 @@ static int imx_get_crit_temp(struct thermal_zone_device *tz,
 }
 
 static int imx_get_trip_temp(struct thermal_zone_device *tz, int trip,
-			     unsigned long *temp)
+			     int *temp)
 {
 	struct imx_thermal_data *data = tz->devdata;
 
@@ -282,7 +281,7 @@ static int imx_get_trip_temp(struct thermal_zone_device *tz, int trip,
 }
 
 static int imx_set_trip_temp(struct thermal_zone_device *tz, int trip,
-			     unsigned long temp)
+			     int temp)
 {
 	struct imx_thermal_data *data = tz->devdata;
 
@@ -434,7 +433,7 @@ static irqreturn_t imx_thermal_alarm_irq_thread(int irq, void *dev)
 {
 	struct imx_thermal_data *data = dev;
 
-	dev_dbg(&data->tz->device, "THERMAL ALARM: T > %lu\n",
+	dev_dbg(&data->tz->device, "THERMAL ALARM: T > %d\n",
 		data->alarm_temp / 1000);
 
 	thermal_zone_device_update(data->tz);
diff --git a/drivers/thermal/int340x_thermal/int3400_thermal.c b/drivers/thermal/int340x_thermal/int3400_thermal.c
index 031018e..5836e55 100644
--- a/drivers/thermal/int340x_thermal/int3400_thermal.c
+++ b/drivers/thermal/int340x_thermal/int3400_thermal.c
@@ -186,7 +186,7 @@ static int int3400_thermal_run_osc(acpi_handle handle,
 }
 
 static int int3400_thermal_get_temp(struct thermal_zone_device *thermal,
-			unsigned long *temp)
+			int *temp)
 {
 	*temp = 20 * 1000; /* faked temp sensor with 20C */
 	return 0;
diff --git a/drivers/thermal/int340x_thermal/int340x_thermal_zone.c b/drivers/thermal/int340x_thermal/int340x_thermal_zone.c
index 1e25133..b9b2666 100644
--- a/drivers/thermal/int340x_thermal/int340x_thermal_zone.c
+++ b/drivers/thermal/int340x_thermal/int340x_thermal_zone.c
@@ -20,7 +20,7 @@
 #include "int340x_thermal_zone.h"
 
 static int int340x_thermal_get_zone_temp(struct thermal_zone_device *zone,
-					 unsigned long *temp)
+					 int *temp)
 {
 	struct int34x_thermal_zone *d = zone->devdata;
 	unsigned long long tmp;
@@ -49,7 +49,7 @@ static int int340x_thermal_get_zone_temp(struct thermal_zone_device *zone,
 }
 
 static int int340x_thermal_get_trip_temp(struct thermal_zone_device *zone,
-					 int trip, unsigned long *temp)
+					 int trip, int *temp)
 {
 	struct int34x_thermal_zone *d = zone->devdata;
 	int i;
@@ -114,7 +114,7 @@ static int int340x_thermal_get_trip_type(struct thermal_zone_device *zone,
 }
 
 static int int340x_thermal_set_trip_temp(struct thermal_zone_device *zone,
-				      int trip, unsigned long temp)
+				      int trip, int temp)
 {
 	struct int34x_thermal_zone *d = zone->devdata;
 	acpi_status status;
@@ -136,7 +136,7 @@ static int int340x_thermal_set_trip_temp(struct thermal_zone_device *zone,
 
 
 static int int340x_thermal_get_trip_hyst(struct thermal_zone_device *zone,
-		int trip, unsigned long *temp)
+		int trip, int *temp)
 {
 	struct int34x_thermal_zone *d = zone->devdata;
 	acpi_status status;
@@ -163,7 +163,7 @@ static struct thermal_zone_device_ops int340x_thermal_zone_ops = {
 };
 
 static int int340x_thermal_get_trip_config(acpi_handle handle, char *name,
-				      unsigned long *temp)
+				      int *temp)
 {
 	unsigned long long r;
 	acpi_status status;
diff --git a/drivers/thermal/int340x_thermal/int340x_thermal_zone.h b/drivers/thermal/int340x_thermal/int340x_thermal_zone.h
index 9f38ab7..aaadf72 100644
--- a/drivers/thermal/int340x_thermal/int340x_thermal_zone.h
+++ b/drivers/thermal/int340x_thermal/int340x_thermal_zone.h
@@ -21,7 +21,7 @@
 #define INT340X_THERMAL_MAX_ACT_TRIP_COUNT	10
 
 struct active_trip {
-	unsigned long temp;
+	int temp;
 	int id;
 	bool valid;
 };
@@ -31,11 +31,11 @@ struct int34x_thermal_zone {
 	struct active_trip act_trips[INT340X_THERMAL_MAX_ACT_TRIP_COUNT];
 	unsigned long *aux_trips;
 	int aux_trip_nr;
-	unsigned long psv_temp;
+	int psv_temp;
 	int psv_trip_id;
-	unsigned long crt_temp;
+	int crt_temp;
 	int crt_trip_id;
-	unsigned long hot_temp;
+	int hot_temp;
 	int hot_trip_id;
 	struct thermal_zone_device *zone;
 	struct thermal_zone_device_ops *override_ops;
diff --git a/drivers/thermal/int340x_thermal/processor_thermal_device.c b/drivers/thermal/int340x_thermal/processor_thermal_device.c
index 3df3dc3..ccc0ad0 100644
--- a/drivers/thermal/int340x_thermal/processor_thermal_device.c
+++ b/drivers/thermal/int340x_thermal/processor_thermal_device.c
@@ -145,7 +145,7 @@ static int get_tjmax(void)
 	return -EINVAL;
 }
 
-static int read_temp_msr(unsigned long *temp)
+static int read_temp_msr(int *temp)
 {
 	int cpu;
 	u32 eax, edx;
@@ -177,7 +177,7 @@ err_ret:
 }
 
 static int proc_thermal_get_zone_temp(struct thermal_zone_device *zone,
-					 unsigned long *temp)
+					 int *temp)
 {
 	int ret;
 
diff --git a/drivers/thermal/intel_quark_dts_thermal.c b/drivers/thermal/intel_quark_dts_thermal.c
index 4434ec8..5ed90e6 100644
--- a/drivers/thermal/intel_quark_dts_thermal.c
+++ b/drivers/thermal/intel_quark_dts_thermal.c
@@ -186,7 +186,7 @@ static int soc_dts_disable(struct thermal_zone_device *tzd)
 	return ret;
 }
 
-static int _get_trip_temp(int trip, unsigned long *temp)
+static int _get_trip_temp(int trip, int *temp)
 {
 	int status;
 	u32 out;
@@ -212,19 +212,18 @@ static int _get_trip_temp(int trip, unsigned long *temp)
 }
 
 static inline int sys_get_trip_temp(struct thermal_zone_device *tzd,
-				int trip, unsigned long *temp)
+				int trip, int *temp)
 {
 	return _get_trip_temp(trip, temp);
 }
 
-static inline int sys_get_crit_temp(struct thermal_zone_device *tzd,
-				unsigned long *temp)
+static inline int sys_get_crit_temp(struct thermal_zone_device *tzd, int *temp)
 {
 	return _get_trip_temp(QRK_DTS_ID_TP_CRITICAL, temp);
 }
 
 static int update_trip_temp(struct soc_sensor_entry *aux_entry,
-				int trip, unsigned long temp)
+				int trip, int temp)
 {
 	u32 out;
 	u32 temp_out;
@@ -272,7 +271,7 @@ failed:
 }
 
 static inline int sys_set_trip_temp(struct thermal_zone_device *tzd, int trip,
-				unsigned long temp)
+				int temp)
 {
 	return update_trip_temp(tzd->devdata, trip, temp);
 }
@@ -289,7 +288,7 @@ static int sys_get_trip_type(struct thermal_zone_device *thermal,
 }
 
 static int sys_get_curr_temp(struct thermal_zone_device *tzd,
-				unsigned long *temp)
+				int *temp)
 {
 	u32 out;
 	int ret;
diff --git a/drivers/thermal/intel_soc_dts_iosf.c b/drivers/thermal/intel_soc_dts_iosf.c
index 42e4b6a..5841d1d 100644
--- a/drivers/thermal/intel_soc_dts_iosf.c
+++ b/drivers/thermal/intel_soc_dts_iosf.c
@@ -80,7 +80,7 @@ err_ret:
 }
 
 static int sys_get_trip_temp(struct thermal_zone_device *tzd, int trip,
-			     unsigned long *temp)
+			     int *temp)
 {
 	int status;
 	u32 out;
@@ -106,7 +106,7 @@ static int sys_get_trip_temp(struct thermal_zone_device *tzd, int trip,
 }
 
 static int update_trip_temp(struct intel_soc_dts_sensor_entry *dts,
-			    int thres_index, unsigned long temp,
+			    int thres_index, int temp,
 			    enum thermal_trip_type trip_type)
 {
 	int status;
@@ -196,7 +196,7 @@ err_restore_ptps:
 }
 
 static int sys_set_trip_temp(struct thermal_zone_device *tzd, int trip,
-			     unsigned long temp)
+			     int temp)
 {
 	struct intel_soc_dts_sensor_entry *dts = tzd->devdata;
 	struct intel_soc_dts_sensors *sensors = dts->sensors;
@@ -226,7 +226,7 @@ static int sys_get_trip_type(struct thermal_zone_device *tzd,
 }
 
 static int sys_get_curr_temp(struct thermal_zone_device *tzd,
-			     unsigned long *temp)
+			     int *temp)
 {
 	int status;
 	u32 out;
diff --git a/drivers/thermal/kirkwood_thermal.c b/drivers/thermal/kirkwood_thermal.c
index 11041fe..8922366 100644
--- a/drivers/thermal/kirkwood_thermal.c
+++ b/drivers/thermal/kirkwood_thermal.c
@@ -33,7 +33,7 @@ struct kirkwood_thermal_priv {
 };
 
 static int kirkwood_get_temp(struct thermal_zone_device *thermal,
-			  unsigned long *temp)
+			  int *temp)
 {
 	unsigned long reg;
 	struct kirkwood_thermal_priv *priv = thermal->devdata;
diff --git a/drivers/thermal/of-thermal.c b/drivers/thermal/of-thermal.c
index b295b2b..42b7d42 100644
--- a/drivers/thermal/of-thermal.c
+++ b/drivers/thermal/of-thermal.c
@@ -91,7 +91,7 @@ struct __thermal_zone {
 /***   DT thermal zone device callbacks   ***/
 
 static int of_thermal_get_temp(struct thermal_zone_device *tz,
-			       unsigned long *temp)
+			       int *temp)
 {
 	struct __thermal_zone *data = tz->devdata;
 
@@ -177,7 +177,7 @@ EXPORT_SYMBOL_GPL(of_thermal_get_trip_points);
  * Return: zero on success, error code otherwise
  */
 static int of_thermal_set_emul_temp(struct thermal_zone_device *tz,
-				    unsigned long temp)
+				    int temp)
 {
 	struct __thermal_zone *data = tz->devdata;
 
@@ -311,7 +311,7 @@ static int of_thermal_get_trip_type(struct thermal_zone_device *tz, int trip,
 }
 
 static int of_thermal_get_trip_temp(struct thermal_zone_device *tz, int trip,
-				    unsigned long *temp)
+				    int *temp)
 {
 	struct __thermal_zone *data = tz->devdata;
 
@@ -324,7 +324,7 @@ static int of_thermal_get_trip_temp(struct thermal_zone_device *tz, int trip,
 }
 
 static int of_thermal_set_trip_temp(struct thermal_zone_device *tz, int trip,
-				    unsigned long temp)
+				    int temp)
 {
 	struct __thermal_zone *data = tz->devdata;
 
@@ -338,7 +338,7 @@ static int of_thermal_set_trip_temp(struct thermal_zone_device *tz, int trip,
 }
 
 static int of_thermal_get_trip_hyst(struct thermal_zone_device *tz, int trip,
-				    unsigned long *hyst)
+				    int *hyst)
 {
 	struct __thermal_zone *data = tz->devdata;
 
@@ -351,7 +351,7 @@ static int of_thermal_get_trip_hyst(struct thermal_zone_device *tz, int trip,
 }
 
 static int of_thermal_set_trip_hyst(struct thermal_zone_device *tz, int trip,
-				    unsigned long hyst)
+				    int hyst)
 {
 	struct __thermal_zone *data = tz->devdata;
 
@@ -365,7 +365,7 @@ static int of_thermal_set_trip_hyst(struct thermal_zone_device *tz, int trip,
 }
 
 static int of_thermal_get_crit_temp(struct thermal_zone_device *tz,
-				    unsigned long *temp)
+				    int *temp)
 {
 	struct __thermal_zone *data = tz->devdata;
 	int i;
diff --git a/drivers/thermal/power_allocator.c b/drivers/thermal/power_allocator.c
index 4672250..045aea59 100644
--- a/drivers/thermal/power_allocator.c
+++ b/drivers/thermal/power_allocator.c
@@ -92,8 +92,8 @@ struct power_allocator_params {
  * Return: The power budget for the next period.
  */
 static u32 pid_controller(struct thermal_zone_device *tz,
-			  unsigned long current_temp,
-			  unsigned long control_temp,
+			  int current_temp,
+			  int control_temp,
 			  u32 max_allocatable_power)
 {
 	s64 p, i, d, power_range;
@@ -102,7 +102,7 @@ static u32 pid_controller(struct thermal_zone_device *tz,
 
 	max_power_frac = int_to_frac(max_allocatable_power);
 
-	err = ((s32)control_temp - (s32)current_temp);
+	err = control_temp - current_temp;
 	err = int_to_frac(err);
 
 	/* Calculate the proportional term */
@@ -223,8 +223,8 @@ static void divvy_up_power(u32 *req_power, u32 *max_power, int num_actors,
 }
 
 static int allocate_power(struct thermal_zone_device *tz,
-			  unsigned long current_temp,
-			  unsigned long control_temp)
+			  int current_temp,
+			  int control_temp)
 {
 	struct thermal_instance *instance;
 	struct power_allocator_params *params = tz->governor_data;
@@ -326,7 +326,7 @@ static int allocate_power(struct thermal_zone_device *tz,
 				      granted_power, total_granted_power,
 				      num_actors, power_range,
 				      max_allocatable_power, current_temp,
-				      (s32)control_temp - (s32)current_temp);
+				      control_temp - current_temp);
 
 	devm_kfree(&tz->device, req_power);
 unlock:
@@ -411,7 +411,7 @@ static int power_allocator_bind(struct thermal_zone_device *tz)
 {
 	int ret;
 	struct power_allocator_params *params;
-	unsigned long switch_on_temp, control_temp;
+	int switch_on_temp, control_temp;
 	u32 temperature_threshold;
 
 	if (!tz->tzp || !tz->tzp->sustainable_power) {
@@ -476,7 +476,7 @@ static void power_allocator_unbind(struct thermal_zone_device *tz)
 static int power_allocator_throttle(struct thermal_zone_device *tz, int trip)
 {
 	int ret;
-	unsigned long switch_on_temp, control_temp, current_temp;
+	int switch_on_temp, control_temp, current_temp;
 	struct power_allocator_params *params = tz->governor_data;
 
 	/*
diff --git a/drivers/thermal/qcom-spmi-temp-alarm.c b/drivers/thermal/qcom-spmi-temp-alarm.c
index c8d27b8..b677aad 100644
--- a/drivers/thermal/qcom-spmi-temp-alarm.c
+++ b/drivers/thermal/qcom-spmi-temp-alarm.c
@@ -117,7 +117,7 @@ static int qpnp_tm_update_temp_no_adc(struct qpnp_tm_chip *chip)
 	return 0;
 }
 
-static int qpnp_tm_get_temp(void *data, long *temp)
+static int qpnp_tm_get_temp(void *data, int *temp)
 {
 	struct qpnp_tm_chip *chip = data;
 	int ret, mili_celsius;
diff --git a/drivers/thermal/rcar_thermal.c b/drivers/thermal/rcar_thermal.c
index fe4e767..5d4ae7d 100644
--- a/drivers/thermal/rcar_thermal.c
+++ b/drivers/thermal/rcar_thermal.c
@@ -200,8 +200,7 @@ err_out_unlock:
 	return ret;
 }
 
-static int rcar_thermal_get_temp(struct thermal_zone_device *zone,
-				 unsigned long *temp)
+static int rcar_thermal_get_temp(struct thermal_zone_device *zone, int *temp)
 {
 	struct rcar_thermal_priv *priv = rcar_zone_to_priv(zone);
 
@@ -235,7 +234,7 @@ static int rcar_thermal_get_trip_type(struct thermal_zone_device *zone,
 }
 
 static int rcar_thermal_get_trip_temp(struct thermal_zone_device *zone,
-				      int trip, unsigned long *temp)
+				      int trip, int *temp)
 {
 	struct rcar_thermal_priv *priv = rcar_zone_to_priv(zone);
 	struct device *dev = rcar_priv_to_dev(priv);
@@ -299,7 +298,7 @@ static void _rcar_thermal_irq_ctrl(struct rcar_thermal_priv *priv, int enable)
 static void rcar_thermal_work(struct work_struct *work)
 {
 	struct rcar_thermal_priv *priv;
-	unsigned long cctemp, nctemp;
+	int cctemp, nctemp;
 
 	priv = container_of(work, struct rcar_thermal_priv, work.work);
 
diff --git a/drivers/thermal/rockchip_thermal.c b/drivers/thermal/rockchip_thermal.c
index cd8f5f93..c89ffb2 100644
--- a/drivers/thermal/rockchip_thermal.c
+++ b/drivers/thermal/rockchip_thermal.c
@@ -64,7 +64,7 @@ struct rockchip_tsadc_chip {
 	void (*control)(void __iomem *reg, bool on);
 
 	/* Per-sensor methods */
-	int (*get_temp)(int chn, void __iomem *reg, long *temp);
+	int (*get_temp)(int chn, void __iomem *reg, int *temp);
 	void (*set_tshut_temp)(int chn, void __iomem *reg, long temp);
 	void (*set_tshut_mode)(int chn, void __iomem *reg, enum tshut_mode m);
 };
@@ -191,7 +191,7 @@ static u32 rk_tsadcv2_temp_to_code(long temp)
 	return 0;
 }
 
-static long rk_tsadcv2_code_to_temp(u32 code)
+static int rk_tsadcv2_code_to_temp(u32 code)
 {
 	unsigned int low = 0;
 	unsigned int high = ARRAY_SIZE(v2_code_table) - 1;
@@ -277,7 +277,7 @@ static void rk_tsadcv2_control(void __iomem *regs, bool enable)
 	writel_relaxed(val, regs + TSADCV2_AUTO_CON);
 }
 
-static int rk_tsadcv2_get_temp(int chn, void __iomem *regs, long *temp)
+static int rk_tsadcv2_get_temp(int chn, void __iomem *regs, int *temp)
 {
 	u32 val;
 
@@ -366,7 +366,7 @@ static irqreturn_t rockchip_thermal_alarm_irq_thread(int irq, void *dev)
 	return IRQ_HANDLED;
 }
 
-static int rockchip_thermal_get_temp(void *_sensor, long *out_temp)
+static int rockchip_thermal_get_temp(void *_sensor, int *out_temp)
 {
 	struct rockchip_thermal_sensor *sensor = _sensor;
 	struct rockchip_thermal_data *thermal = sensor->thermal;
@@ -374,7 +374,7 @@ static int rockchip_thermal_get_temp(void *_sensor, long *out_temp)
 	int retval;
 
 	retval = tsadc->get_temp(sensor->id, thermal->regs, out_temp);
-	dev_dbg(&thermal->pdev->dev, "sensor %d - temp: %ld, retval: %d\n",
+	dev_dbg(&thermal->pdev->dev, "sensor %d - temp: %d, retval: %d\n",
 		sensor->id, *out_temp, retval);
 
 	return retval;
diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c
index 531f4b17..9ec29a3 100644
--- a/drivers/thermal/samsung/exynos_tmu.c
+++ b/drivers/thermal/samsung/exynos_tmu.c
@@ -207,8 +207,7 @@ struct exynos_tmu_data {
 	int (*tmu_initialize)(struct platform_device *pdev);
 	void (*tmu_control)(struct platform_device *pdev, bool on);
 	int (*tmu_read)(struct exynos_tmu_data *data);
-	void (*tmu_set_emulation)(struct exynos_tmu_data *data,
-				  unsigned long temp);
+	void (*tmu_set_emulation)(struct exynos_tmu_data *data, int temp);
 	void (*tmu_clear_irqs)(struct exynos_tmu_data *data);
 };
 
@@ -216,7 +215,7 @@ static void exynos_report_trigger(struct exynos_tmu_data *p)
 {
 	char data[10], *envp[] = { data, NULL };
 	struct thermal_zone_device *tz = p->tzd;
-	unsigned long temp;
+	int temp;
 	unsigned int i;
 
 	if (!tz) {
@@ -517,7 +516,7 @@ static int exynos5433_tmu_initialize(struct platform_device *pdev)
 	struct thermal_zone_device *tz = data->tzd;
 	unsigned int status, trim_info;
 	unsigned int rising_threshold = 0, falling_threshold = 0;
-	unsigned long temp, temp_hist;
+	int temp, temp_hist;
 	int ret = 0, threshold_code, i, sensor_id, cal_type;
 
 	status = readb(data->base + EXYNOS_TMU_REG_STATUS);
@@ -610,7 +609,7 @@ static int exynos5440_tmu_initialize(struct platform_device *pdev)
 	struct exynos_tmu_data *data = platform_get_drvdata(pdev);
 	unsigned int trim_info = 0, con, rising_threshold;
 	int ret = 0, threshold_code;
-	unsigned long crit_temp = 0;
+	int crit_temp = 0;
 
 	/*
 	 * For exynos5440 soc triminfo value is swapped between TMU0 and
@@ -663,7 +662,7 @@ static int exynos7_tmu_initialize(struct platform_device *pdev)
 	unsigned int status, trim_info;
 	unsigned int rising_threshold = 0, falling_threshold = 0;
 	int ret = 0, threshold_code, i;
-	unsigned long temp, temp_hist;
+	int temp, temp_hist;
 	unsigned int reg_off, bit_off;
 
 	status = readb(data->base + EXYNOS_TMU_REG_STATUS);
@@ -876,7 +875,7 @@ static void exynos7_tmu_control(struct platform_device *pdev, bool on)
 	writel(con, data->base + EXYNOS_TMU_REG_CONTROL);
 }
 
-static int exynos_get_temp(void *p, long *temp)
+static int exynos_get_temp(void *p, int *temp)
 {
 	struct exynos_tmu_data *data = p;
 
@@ -896,7 +895,7 @@ static int exynos_get_temp(void *p, long *temp)
 
 #ifdef CONFIG_THERMAL_EMULATION
 static u32 get_emul_con_reg(struct exynos_tmu_data *data, unsigned int val,
-			    unsigned long temp)
+			    int temp)
 {
 	if (temp) {
 		temp /= MCELSIUS;
@@ -926,7 +925,7 @@ static u32 get_emul_con_reg(struct exynos_tmu_data *data, unsigned int val,
 }
 
 static void exynos4412_tmu_set_emulation(struct exynos_tmu_data *data,
-					 unsigned long temp)
+					 int temp)
 {
 	unsigned int val;
 	u32 emul_con;
@@ -946,7 +945,7 @@ static void exynos4412_tmu_set_emulation(struct exynos_tmu_data *data,
 }
 
 static void exynos5440_tmu_set_emulation(struct exynos_tmu_data *data,
-					 unsigned long temp)
+					 int temp)
 {
 	unsigned int val;
 
@@ -955,7 +954,7 @@ static void exynos5440_tmu_set_emulation(struct exynos_tmu_data *data,
 	writel(val, data->base + EXYNOS5440_TMU_S0_7_DEBUG);
 }
 
-static int exynos_tmu_set_emulation(void *drv_data, unsigned long temp)
+static int exynos_tmu_set_emulation(void *drv_data, int temp)
 {
 	struct exynos_tmu_data *data = drv_data;
 	int ret = -EINVAL;
@@ -978,7 +977,7 @@ out:
 #else
 #define exynos4412_tmu_set_emulation NULL
 #define exynos5440_tmu_set_emulation NULL
-static int exynos_tmu_set_emulation(void *drv_data,	unsigned long temp)
+static int exynos_tmu_set_emulation(void *drv_data, int temp)
 	{ return -EINVAL; }
 #endif /* CONFIG_THERMAL_EMULATION */
 
diff --git a/drivers/thermal/spear_thermal.c b/drivers/thermal/spear_thermal.c
index bddb717..534dd91 100644
--- a/drivers/thermal/spear_thermal.c
+++ b/drivers/thermal/spear_thermal.c
@@ -38,7 +38,7 @@ struct spear_thermal_dev {
 };
 
 static inline int thermal_get_temp(struct thermal_zone_device *thermal,
-				unsigned long *temp)
+				int *temp)
 {
 	struct spear_thermal_dev *stdev = thermal->devdata;
 
diff --git a/drivers/thermal/st/st_thermal.c b/drivers/thermal/st/st_thermal.c
index 76c515d..44cbba9 100644
--- a/drivers/thermal/st/st_thermal.c
+++ b/drivers/thermal/st/st_thermal.c
@@ -111,8 +111,7 @@ static int st_thermal_calibration(struct st_thermal_sensor *sensor)
 }
 
 /* Callback to get temperature from HW*/
-static int st_thermal_get_temp(struct thermal_zone_device *th,
-		unsigned long *temperature)
+static int st_thermal_get_temp(struct thermal_zone_device *th, int *temperature)
 {
 	struct st_thermal_sensor *sensor = th->devdata;
 	struct device *dev = sensor->dev;
@@ -159,7 +158,7 @@ static int st_thermal_get_trip_type(struct thermal_zone_device *th,
 }
 
 static int st_thermal_get_trip_temp(struct thermal_zone_device *th,
-				    int trip, unsigned long *temp)
+				    int trip, int *temp)
 {
 	struct st_thermal_sensor *sensor = th->devdata;
 	struct device *dev = sensor->dev;
diff --git a/drivers/thermal/step_wise.c b/drivers/thermal/step_wise.c
index 5a0f12d..2f9f708 100644
--- a/drivers/thermal/step_wise.c
+++ b/drivers/thermal/step_wise.c
@@ -113,7 +113,7 @@ static void update_passive_instance(struct thermal_zone_device *tz,
 
 static void thermal_zone_trip_update(struct thermal_zone_device *tz, int trip)
 {
-	long trip_temp;
+	int trip_temp;
 	enum thermal_trip_type trip_type;
 	enum thermal_trend trend;
 	struct thermal_instance *instance;
@@ -135,7 +135,7 @@ static void thermal_zone_trip_update(struct thermal_zone_device *tz, int trip)
 		trace_thermal_zone_trip(tz, trip, trip_type);
 	}
 
-	dev_dbg(&tz->device, "Trip%d[type=%d,temp=%ld]:trend=%d,throttle=%d\n",
+	dev_dbg(&tz->device, "Trip%d[type=%d,temp=%d]:trend=%d,throttle=%d\n",
 				trip, trip_type, trip_temp, trend, throttle);
 
 	mutex_lock(&tz->lock);
diff --git a/drivers/thermal/tegra_soctherm.c b/drivers/thermal/tegra_soctherm.c
index 9197fc0..74ea576 100644
--- a/drivers/thermal/tegra_soctherm.c
+++ b/drivers/thermal/tegra_soctherm.c
@@ -293,7 +293,7 @@ static int enable_tsensor(struct tegra_soctherm *tegra,
  * H denotes an addition of 0.5 Celsius and N denotes negation
  * of the final value.
  */
-static long translate_temp(u16 val)
+static int translate_temp(u16 val)
 {
 	long t;
 
@@ -306,7 +306,7 @@ static long translate_temp(u16 val)
 	return t;
 }
 
-static int tegra_thermctl_get_temp(void *data, long *out_temp)
+static int tegra_thermctl_get_temp(void *data, int *out_temp)
 {
 	struct tegra_thermctl_zone *zone = data;
 	u32 val;
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 04659bf..371a543 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -426,7 +426,7 @@ static void handle_non_critical_trips(struct thermal_zone_device *tz,
 static void handle_critical_trips(struct thermal_zone_device *tz,
 				int trip, enum thermal_trip_type trip_type)
 {
-	long trip_temp;
+	int trip_temp;
 
 	tz->ops->get_trip_temp(tz, trip, &trip_temp);
 
@@ -474,12 +474,12 @@ static void handle_thermal_trip(struct thermal_zone_device *tz, int trip)
  *
  * Return: On success returns 0, an error code otherwise
  */
-int thermal_zone_get_temp(struct thermal_zone_device *tz, unsigned long *temp)
+int thermal_zone_get_temp(struct thermal_zone_device *tz, int *temp)
 {
 	int ret = -EINVAL;
 #ifdef CONFIG_THERMAL_EMULATION
 	int count;
-	unsigned long crit_temp = -1UL;
+	int crit_temp = INT_MAX;
 	enum thermal_trip_type type;
 #endif
 
@@ -516,8 +516,7 @@ EXPORT_SYMBOL_GPL(thermal_zone_get_temp);
 
 static void update_temperature(struct thermal_zone_device *tz)
 {
-	long temp;
-	int ret;
+	int temp, ret;
 
 	ret = thermal_zone_get_temp(tz, &temp);
 	if (ret) {
@@ -577,15 +576,14 @@ static ssize_t
 temp_show(struct device *dev, struct device_attribute *attr, char *buf)
 {
 	struct thermal_zone_device *tz = to_thermal_zone(dev);
-	long temperature;
-	int ret;
+	int temperature, ret;
 
 	ret = thermal_zone_get_temp(tz, &temperature);
 
 	if (ret)
 		return ret;
 
-	return sprintf(buf, "%ld\n", temperature);
+	return sprintf(buf, "%d\n", temperature);
 }
 
 static ssize_t
@@ -689,7 +687,7 @@ trip_point_temp_show(struct device *dev, struct device_attribute *attr,
 {
 	struct thermal_zone_device *tz = to_thermal_zone(dev);
 	int trip, ret;
-	long temperature;
+	int temperature;
 
 	if (!tz->ops->get_trip_temp)
 		return -EPERM;
@@ -702,7 +700,7 @@ trip_point_temp_show(struct device *dev, struct device_attribute *attr,
 	if (ret)
 		return ret;
 
-	return sprintf(buf, "%ld\n", temperature);
+	return sprintf(buf, "%d\n", temperature);
 }
 
 static ssize_t
@@ -711,7 +709,7 @@ trip_point_hyst_store(struct device *dev, struct device_attribute *attr,
 {
 	struct thermal_zone_device *tz = to_thermal_zone(dev);
 	int trip, ret;
-	unsigned long temperature;
+	int temperature;
 
 	if (!tz->ops->set_trip_hyst)
 		return -EPERM;
@@ -719,7 +717,7 @@ trip_point_hyst_store(struct device *dev, struct device_attribute *attr,
 	if (!sscanf(attr->attr.name, "trip_point_%d_hyst", &trip))
 		return -EINVAL;
 
-	if (kstrtoul(buf, 10, &temperature))
+	if (kstrtoint(buf, 10, &temperature))
 		return -EINVAL;
 
 	/*
@@ -738,7 +736,7 @@ trip_point_hyst_show(struct device *dev, struct device_attribute *attr,
 {
 	struct thermal_zone_device *tz = to_thermal_zone(dev);
 	int trip, ret;
-	unsigned long temperature;
+	int temperature;
 
 	if (!tz->ops->get_trip_hyst)
 		return -EPERM;
@@ -748,7 +746,7 @@ trip_point_hyst_show(struct device *dev, struct device_attribute *attr,
 
 	ret = tz->ops->get_trip_hyst(tz, trip, &temperature);
 
-	return ret ? ret : sprintf(buf, "%ld\n", temperature);
+	return ret ? ret : sprintf(buf, "%d\n", temperature);
 }
 
 static ssize_t
diff --git a/drivers/thermal/thermal_hwmon.c b/drivers/thermal/thermal_hwmon.c
index 1967bee..06fd2ed9 100644
--- a/drivers/thermal/thermal_hwmon.c
+++ b/drivers/thermal/thermal_hwmon.c
@@ -69,7 +69,7 @@ static DEVICE_ATTR(name, 0444, name_show, NULL);
 static ssize_t
 temp_input_show(struct device *dev, struct device_attribute *attr, char *buf)
 {
-	long temperature;
+	int temperature;
 	int ret;
 	struct thermal_hwmon_attr *hwmon_attr
 			= container_of(attr, struct thermal_hwmon_attr, attr);
@@ -83,7 +83,7 @@ temp_input_show(struct device *dev, struct device_attribute *attr, char *buf)
 	if (ret)
 		return ret;
 
-	return sprintf(buf, "%ld\n", temperature);
+	return sprintf(buf, "%d\n", temperature);
 }
 
 static ssize_t
@@ -95,14 +95,14 @@ temp_crit_show(struct device *dev, struct device_attribute *attr, char *buf)
 			= container_of(hwmon_attr, struct thermal_hwmon_temp,
 				       temp_crit);
 	struct thermal_zone_device *tz = temp->tz;
-	long temperature;
+	int temperature;
 	int ret;
 
 	ret = tz->ops->get_trip_temp(tz, 0, &temperature);
 	if (ret)
 		return ret;
 
-	return sprintf(buf, "%ld\n", temperature);
+	return sprintf(buf, "%d\n", temperature);
 }
 
 
@@ -142,7 +142,7 @@ thermal_hwmon_lookup_temp(const struct thermal_hwmon_device *hwmon,
 
 static bool thermal_zone_crit_temp_valid(struct thermal_zone_device *tz)
 {
-	unsigned long temp;
+	int temp;
 	return tz->ops->get_crit_temp && !tz->ops->get_crit_temp(tz, &temp);
 }
 
diff --git a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
index c7c5b37..b213a12 100644
--- a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
+++ b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
@@ -76,14 +76,14 @@ static inline int ti_thermal_hotspot_temperature(int t, int s, int c)
 
 /* thermal zone ops */
 /* Get temperature callback function for thermal zone */
-static inline int __ti_thermal_get_temp(void *devdata, long *temp)
+static inline int __ti_thermal_get_temp(void *devdata, int *temp)
 {
 	struct thermal_zone_device *pcb_tz = NULL;
 	struct ti_thermal_data *data = devdata;
 	struct ti_bandgap *bgp;
 	const struct ti_temp_sensor *s;
 	int ret, tmp, slope, constant;
-	unsigned long pcb_temp;
+	int pcb_temp;
 
 	if (!data)
 		return 0;
@@ -119,7 +119,7 @@ static inline int __ti_thermal_get_temp(void *devdata, long *temp)
 }
 
 static inline int ti_thermal_get_temp(struct thermal_zone_device *thermal,
-				      unsigned long *temp)
+				      int *temp)
 {
 	struct ti_thermal_data *data = thermal->devdata;
 
@@ -229,7 +229,7 @@ static int ti_thermal_get_trip_type(struct thermal_zone_device *thermal,
 
 /* Get trip temperature callback functions for thermal zone */
 static int ti_thermal_get_trip_temp(struct thermal_zone_device *thermal,
-				    int trip, unsigned long *temp)
+				    int trip, int *temp)
 {
 	if (!ti_thermal_is_valid_trip(trip))
 		return -EINVAL;
@@ -280,7 +280,7 @@ static int ti_thermal_get_trend(struct thermal_zone_device *thermal,
 
 /* Get critical temperature callback functions for thermal zone */
 static int ti_thermal_get_crit_temp(struct thermal_zone_device *thermal,
-				    unsigned long *temp)
+				    int *temp)
 {
 	/* shutdown zone */
 	return ti_thermal_get_trip_temp(thermal, OMAP_TRIP_NUMBER - 1, temp);
diff --git a/drivers/thermal/x86_pkg_temp_thermal.c b/drivers/thermal/x86_pkg_temp_thermal.c
index 50d1d2c..7fc919f 100644
--- a/drivers/thermal/x86_pkg_temp_thermal.c
+++ b/drivers/thermal/x86_pkg_temp_thermal.c
@@ -164,7 +164,7 @@ err_ret:
 	return err;
 }
 
-static int sys_get_curr_temp(struct thermal_zone_device *tzd, unsigned long *temp)
+static int sys_get_curr_temp(struct thermal_zone_device *tzd, int *temp)
 {
 	u32 eax, edx;
 	struct phy_dev_entry *phy_dev_entry;
@@ -175,7 +175,7 @@ static int sys_get_curr_temp(struct thermal_zone_device *tzd, unsigned long *tem
 	if (eax & 0x80000000) {
 		*temp = phy_dev_entry->tj_max -
 				((eax >> 16) & 0x7f) * 1000;
-		pr_debug("sys_get_curr_temp %ld\n", *temp);
+		pr_debug("sys_get_curr_temp %d\n", *temp);
 		return 0;
 	}
 
@@ -183,7 +183,7 @@ static int sys_get_curr_temp(struct thermal_zone_device *tzd, unsigned long *tem
 }
 
 static int sys_get_trip_temp(struct thermal_zone_device *tzd,
-		int trip, unsigned long *temp)
+		int trip, int *temp)
 {
 	u32 eax, edx;
 	struct phy_dev_entry *phy_dev_entry;
@@ -214,13 +214,13 @@ static int sys_get_trip_temp(struct thermal_zone_device *tzd,
 		*temp = phy_dev_entry->tj_max - thres_reg_value * 1000;
 	else
 		*temp = 0;
-	pr_debug("sys_get_trip_temp %ld\n", *temp);
+	pr_debug("sys_get_trip_temp %d\n", *temp);
 
 	return 0;
 }
 
 static int sys_set_trip_temp(struct thermal_zone_device *tzd, int trip,
-							unsigned long temp)
+							int temp)
 {
 	u32 l, h;
 	struct phy_dev_entry *phy_dev_entry;
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index 037e9df..17292fe 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -92,23 +92,19 @@ struct thermal_zone_device_ops {
 		     struct thermal_cooling_device *);
 	int (*unbind) (struct thermal_zone_device *,
 		       struct thermal_cooling_device *);
-	int (*get_temp) (struct thermal_zone_device *, unsigned long *);
+	int (*get_temp) (struct thermal_zone_device *, int *);
 	int (*get_mode) (struct thermal_zone_device *,
 			 enum thermal_device_mode *);
 	int (*set_mode) (struct thermal_zone_device *,
 		enum thermal_device_mode);
 	int (*get_trip_type) (struct thermal_zone_device *, int,
 		enum thermal_trip_type *);
-	int (*get_trip_temp) (struct thermal_zone_device *, int,
-			      unsigned long *);
-	int (*set_trip_temp) (struct thermal_zone_device *, int,
-			      unsigned long);
-	int (*get_trip_hyst) (struct thermal_zone_device *, int,
-			      unsigned long *);
-	int (*set_trip_hyst) (struct thermal_zone_device *, int,
-			      unsigned long);
-	int (*get_crit_temp) (struct thermal_zone_device *, unsigned long *);
-	int (*set_emul_temp) (struct thermal_zone_device *, unsigned long);
+	int (*get_trip_temp) (struct thermal_zone_device *, int, int *);
+	int (*set_trip_temp) (struct thermal_zone_device *, int, int);
+	int (*get_trip_hyst) (struct thermal_zone_device *, int, int *);
+	int (*set_trip_hyst) (struct thermal_zone_device *, int, int);
+	int (*get_crit_temp) (struct thermal_zone_device *, int *);
+	int (*set_emul_temp) (struct thermal_zone_device *, int);
 	int (*get_trend) (struct thermal_zone_device *, int,
 			  enum thermal_trend *);
 	int (*notify) (struct thermal_zone_device *, int,
@@ -332,9 +328,9 @@ struct thermal_genl_event {
  *		   temperature.
  */
 struct thermal_zone_of_device_ops {
-	int (*get_temp)(void *, long *);
+	int (*get_temp)(void *, int *);
 	int (*get_trend)(void *, long *);
-	int (*set_emul_temp)(void *, unsigned long);
+	int (*set_emul_temp)(void *, int);
 };
 
 /**
@@ -406,7 +402,7 @@ thermal_of_cooling_device_register(struct device_node *np, char *, void *,
 				   const struct thermal_cooling_device_ops *);
 void thermal_cooling_device_unregister(struct thermal_cooling_device *);
 struct thermal_zone_device *thermal_zone_get_zone_by_name(const char *name);
-int thermal_zone_get_temp(struct thermal_zone_device *tz, unsigned long *temp);
+int thermal_zone_get_temp(struct thermal_zone_device *tz, int *temp);
 
 int get_tz_trend(struct thermal_zone_device *, int);
 struct thermal_instance *get_thermal_instance(struct thermal_zone_device *,
@@ -457,7 +453,7 @@ static inline struct thermal_zone_device *thermal_zone_get_zone_by_name(
 		const char *name)
 { return ERR_PTR(-ENODEV); }
 static inline int thermal_zone_get_temp(
-		struct thermal_zone_device *tz, unsigned long *temp)
+		struct thermal_zone_device *tz, int *temp)
 { return -ENODEV; }
 static inline int get_tz_trend(struct thermal_zone_device *tz, int trip)
 { return -ENODEV; }
-- 
2.1.4


WARNING: multiple messages have this Message-ID (diff)
From: s.hauer@pengutronix.de (Sascha Hauer)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] thermal: consistently use int for temperatures
Date: Mon,  6 Jul 2015 09:19:49 +0200	[thread overview]
Message-ID: <1436167189-29835-1-git-send-email-s.hauer@pengutronix.de> (raw)

The thermal code uses int, long and unsigned long for temperatures
in different places.

Using an unsigned type limits the thermal framework to positive
temperatures without need. Also several drivers currently will report
temperatures near UINT_MAX for temperatures below 0?C. This will probably
immediately shut the machine down due to overtemperature if started below
0?C.

'long' is 64bit on several architectures. This is not needed since INT_MAX ?mC
is above the melting point of all known materials.

Consistently use a plain 'int' for temperatures throughout the thermal code and
the drivers. This only changes the places in the drivers where the temperature
is passed around as pointer, when drivers internally use another type this is
not changed.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: Eduardo Valentin <edubezval@gmail.com>
Cc: linux-pm at vger.kernel.org
Cc: linux-kernel at vger.kernel.org
Cc: Jean Delvare <jdelvare@suse.de>
Cc: Peter Feuerer <peter@piie.net>
Cc: Heiko Stuebner <heiko@sntech.de>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Stephen Warren <swarren@wwwdotorg.org>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: linux-acpi at vger.kernel.org
Cc: platform-driver-x86 at vger.kernel.org
Cc: linux-arm-kernel at lists.infradead.org
Cc: linux-omap at vger.kernel.org
Cc: linux-samsung-soc at vger.kernel.org
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Darren Hart <dvhart@infradead.org>
Cc: lm-sensors at lm-sensors.org
---
 drivers/acpi/thermal.c                             | 12 +++++-----
 drivers/hwmon/lm75.c                               |  2 +-
 drivers/hwmon/ntc_thermistor.c                     |  2 +-
 drivers/hwmon/tmp102.c                             |  2 +-
 drivers/input/touchscreen/sun4i-ts.c               |  8 +++----
 drivers/platform/x86/acerhdf.c                     |  9 ++++----
 drivers/platform/x86/intel_mid_thermal.c           |  9 ++++----
 drivers/power/power_supply_core.c                  |  2 +-
 drivers/thermal/armada_thermal.c                   |  2 +-
 drivers/thermal/db8500_thermal.c                   |  7 +++---
 drivers/thermal/dove_thermal.c                     |  2 +-
 drivers/thermal/fair_share.c                       |  2 +-
 drivers/thermal/gov_bang_bang.c                    |  5 ++--
 drivers/thermal/hisi_thermal.c                     |  4 ++--
 drivers/thermal/imx_thermal.c                      | 27 +++++++++++-----------
 drivers/thermal/int340x_thermal/int3400_thermal.c  |  2 +-
 .../thermal/int340x_thermal/int340x_thermal_zone.c | 10 ++++----
 .../thermal/int340x_thermal/int340x_thermal_zone.h |  8 +++----
 .../int340x_thermal/processor_thermal_device.c     |  4 ++--
 drivers/thermal/intel_quark_dts_thermal.c          | 13 +++++------
 drivers/thermal/intel_soc_dts_iosf.c               |  8 +++----
 drivers/thermal/kirkwood_thermal.c                 |  2 +-
 drivers/thermal/of-thermal.c                       | 14 +++++------
 drivers/thermal/power_allocator.c                  | 16 ++++++-------
 drivers/thermal/qcom-spmi-temp-alarm.c             |  2 +-
 drivers/thermal/rcar_thermal.c                     |  7 +++---
 drivers/thermal/rockchip_thermal.c                 | 10 ++++----
 drivers/thermal/samsung/exynos_tmu.c               | 23 +++++++++---------
 drivers/thermal/spear_thermal.c                    |  2 +-
 drivers/thermal/st/st_thermal.c                    |  5 ++--
 drivers/thermal/step_wise.c                        |  4 ++--
 drivers/thermal/tegra_soctherm.c                   |  4 ++--
 drivers/thermal/thermal_core.c                     | 26 ++++++++++-----------
 drivers/thermal/thermal_hwmon.c                    | 10 ++++----
 drivers/thermal/ti-soc-thermal/ti-thermal-common.c | 10 ++++----
 drivers/thermal/x86_pkg_temp_thermal.c             | 10 ++++----
 include/linux/thermal.h                            | 26 +++++++++------------
 37 files changed, 148 insertions(+), 163 deletions(-)

diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index 6d4e44e..e66ad25 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -529,8 +529,7 @@ static void acpi_thermal_check(void *data)
 
 /* sys I/F for generic thermal sysfs support */
 
-static int thermal_get_temp(struct thermal_zone_device *thermal,
-			    unsigned long *temp)
+static int thermal_get_temp(struct thermal_zone_device *thermal, int *temp)
 {
 	struct acpi_thermal *tz = thermal->devdata;
 	int result;
@@ -637,7 +636,7 @@ static int thermal_get_trip_type(struct thermal_zone_device *thermal,
 }
 
 static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
-				 int trip, unsigned long *temp)
+				 int trip, int *temp)
 {
 	struct acpi_thermal *tz = thermal->devdata;
 	int i;
@@ -690,7 +689,8 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
 }
 
 static int thermal_get_crit_temp(struct thermal_zone_device *thermal,
-				unsigned long *temperature) {
+				int *temperature)
+{
 	struct acpi_thermal *tz = thermal->devdata;
 
 	if (tz->trips.critical.flags.valid) {
@@ -713,8 +713,8 @@ static int thermal_get_trend(struct thermal_zone_device *thermal,
 		return -EINVAL;
 
 	if (type == THERMAL_TRIP_ACTIVE) {
-		unsigned long trip_temp;
-		unsigned long temp = DECI_KELVIN_TO_MILLICELSIUS_WITH_OFFSET(
+		int trip_temp;
+		int temp = DECI_KELVIN_TO_MILLICELSIUS_WITH_OFFSET(
 					tz->temperature, tz->kelvin_offset);
 		if (thermal_get_trip_temp(thermal, trip, &trip_temp))
 			return -EINVAL;
diff --git a/drivers/hwmon/lm75.c b/drivers/hwmon/lm75.c
index fe41d5a..e4e57bb 100644
--- a/drivers/hwmon/lm75.c
+++ b/drivers/hwmon/lm75.c
@@ -104,7 +104,7 @@ static inline long lm75_reg_to_mc(s16 temp, u8 resolution)
 
 /* sysfs attributes for hwmon */
 
-static int lm75_read_temp(void *dev, long *temp)
+static int lm75_read_temp(void *dev, int *temp)
 {
 	struct lm75_data *data = lm75_update_device(dev);
 
diff --git a/drivers/hwmon/ntc_thermistor.c b/drivers/hwmon/ntc_thermistor.c
index dc0b76c..feed306 100644
--- a/drivers/hwmon/ntc_thermistor.c
+++ b/drivers/hwmon/ntc_thermistor.c
@@ -477,7 +477,7 @@ static int ntc_thermistor_get_ohm(struct ntc_data *data)
 	return -EINVAL;
 }
 
-static int ntc_read_temp(void *dev, long *temp)
+static int ntc_read_temp(void *dev, int *temp)
 {
 	struct ntc_data *data = dev_get_drvdata(dev);
 	int ohm;
diff --git a/drivers/hwmon/tmp102.c b/drivers/hwmon/tmp102.c
index 9da2735..6548262 100644
--- a/drivers/hwmon/tmp102.c
+++ b/drivers/hwmon/tmp102.c
@@ -98,7 +98,7 @@ static struct tmp102 *tmp102_update_device(struct device *dev)
 	return tmp102;
 }
 
-static int tmp102_read_temp(void *dev, long *temp)
+static int tmp102_read_temp(void *dev, int *temp)
 {
 	struct tmp102 *tmp102 = tmp102_update_device(dev);
 
diff --git a/drivers/input/touchscreen/sun4i-ts.c b/drivers/input/touchscreen/sun4i-ts.c
index c011699..4857943 100644
--- a/drivers/input/touchscreen/sun4i-ts.c
+++ b/drivers/input/touchscreen/sun4i-ts.c
@@ -191,7 +191,7 @@ static void sun4i_ts_close(struct input_dev *dev)
 	writel(TEMP_IRQ_EN(1), ts->base + TP_INT_FIFOC);
 }
 
-static int sun4i_get_temp(const struct sun4i_ts_data *ts, long *temp)
+static int sun4i_get_temp(const struct sun4i_ts_data *ts, int *temp)
 {
 	/* No temp_data until the first irq */
 	if (ts->temp_data == -1)
@@ -202,7 +202,7 @@ static int sun4i_get_temp(const struct sun4i_ts_data *ts, long *temp)
 	return 0;
 }
 
-static int sun4i_get_tz_temp(void *data, long *temp)
+static int sun4i_get_tz_temp(void *data, int *temp)
 {
 	return sun4i_get_temp(data, temp);
 }
@@ -215,14 +215,14 @@ static ssize_t show_temp(struct device *dev, struct device_attribute *devattr,
 			 char *buf)
 {
 	struct sun4i_ts_data *ts = dev_get_drvdata(dev);
-	long temp;
+	int temp;
 	int error;
 
 	error = sun4i_get_temp(ts, &temp);
 	if (error)
 		return error;
 
-	return sprintf(buf, "%ld\n", temp);
+	return sprintf(buf, "%d\n", temp);
 }
 
 static ssize_t show_temp_label(struct device *dev,
diff --git a/drivers/platform/x86/acerhdf.c b/drivers/platform/x86/acerhdf.c
index 1ef02da..460fa67 100644
--- a/drivers/platform/x86/acerhdf.c
+++ b/drivers/platform/x86/acerhdf.c
@@ -346,8 +346,7 @@ static void acerhdf_check_param(struct thermal_zone_device *thermal)
  * as late as the polling interval is since we can't do that in the respective
  * accessors of the module parameters.
  */
-static int acerhdf_get_ec_temp(struct thermal_zone_device *thermal,
-			       unsigned long *t)
+static int acerhdf_get_ec_temp(struct thermal_zone_device *thermal, int *t)
 {
 	int temp, err = 0;
 
@@ -453,7 +452,7 @@ static int acerhdf_get_trip_type(struct thermal_zone_device *thermal, int trip,
 }
 
 static int acerhdf_get_trip_hyst(struct thermal_zone_device *thermal, int trip,
-				 unsigned long *temp)
+				 int *temp)
 {
 	if (trip != 0)
 		return -EINVAL;
@@ -464,7 +463,7 @@ static int acerhdf_get_trip_hyst(struct thermal_zone_device *thermal, int trip,
 }
 
 static int acerhdf_get_trip_temp(struct thermal_zone_device *thermal, int trip,
-				 unsigned long *temp)
+				 int *temp)
 {
 	if (trip == 0)
 		*temp = fanon;
@@ -477,7 +476,7 @@ static int acerhdf_get_trip_temp(struct thermal_zone_device *thermal, int trip,
 }
 
 static int acerhdf_get_crit_temp(struct thermal_zone_device *thermal,
-				 unsigned long *temperature)
+				 int *temperature)
 {
 	*temperature = ACERHDF_TEMP_CRIT;
 	return 0;
diff --git a/drivers/platform/x86/intel_mid_thermal.c b/drivers/platform/x86/intel_mid_thermal.c
index 0944e83..9f713b8 100644
--- a/drivers/platform/x86/intel_mid_thermal.c
+++ b/drivers/platform/x86/intel_mid_thermal.c
@@ -132,7 +132,7 @@ static int is_valid_adc(uint16_t adc_val, uint16_t min, uint16_t max)
  * to achieve very close approximate temp value with less than
  * 0.5C error
  */
-static int adc_to_temp(int direct, uint16_t adc_val, unsigned long *tp)
+static int adc_to_temp(int direct, uint16_t adc_val, int *tp)
 {
 	int temp;
 
@@ -174,14 +174,13 @@ static int adc_to_temp(int direct, uint16_t adc_val, unsigned long *tp)
  *
  * Can sleep
  */
-static int mid_read_temp(struct thermal_zone_device *tzd, unsigned long *temp)
+static int mid_read_temp(struct thermal_zone_device *tzd, int *temp)
 {
 	struct thermal_device_info *td_info = tzd->devdata;
 	uint16_t adc_val, addr;
 	uint8_t data = 0;
 	int ret;
-	unsigned long curr_temp;
-
+	int curr_temp;
 
 	addr = td_info->chnl_addr;
 
@@ -453,7 +452,7 @@ static SIMPLE_DEV_PM_OPS(mid_thermal_pm,
  *
  * Can sleep
  */
-static int read_curr_temp(struct thermal_zone_device *tzd, unsigned long *temp)
+static int read_curr_temp(struct thermal_zone_device *tzd, int *temp)
 {
 	WARN_ON(tzd == NULL);
 	return mid_read_temp(tzd, temp);
diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c
index 869284c..456987c 100644
--- a/drivers/power/power_supply_core.c
+++ b/drivers/power/power_supply_core.c
@@ -557,7 +557,7 @@ EXPORT_SYMBOL_GPL(power_supply_unreg_notifier);
 
 #ifdef CONFIG_THERMAL
 static int power_supply_read_temp(struct thermal_zone_device *tzd,
-		unsigned long *temp)
+		int *temp)
 {
 	struct power_supply *psy;
 	union power_supply_propval val;
diff --git a/drivers/thermal/armada_thermal.c b/drivers/thermal/armada_thermal.c
index 01255fd..26b8d32 100644
--- a/drivers/thermal/armada_thermal.c
+++ b/drivers/thermal/armada_thermal.c
@@ -155,7 +155,7 @@ static bool armada_is_valid(struct armada_thermal_priv *priv)
 }
 
 static int armada_get_temp(struct thermal_zone_device *thermal,
-			  unsigned long *temp)
+			  int *temp)
 {
 	struct armada_thermal_priv *priv = thermal->devdata;
 	unsigned long reg;
diff --git a/drivers/thermal/db8500_thermal.c b/drivers/thermal/db8500_thermal.c
index 2fb273c..652acd8 100644
--- a/drivers/thermal/db8500_thermal.c
+++ b/drivers/thermal/db8500_thermal.c
@@ -107,8 +107,7 @@ static int db8500_cdev_unbind(struct thermal_zone_device *thermal,
 }
 
 /* Callback to get current temperature */
-static int db8500_sys_get_temp(struct thermal_zone_device *thermal,
-		unsigned long *temp)
+static int db8500_sys_get_temp(struct thermal_zone_device *thermal, int *temp)
 {
 	struct db8500_thermal_zone *pzone = thermal->devdata;
 
@@ -180,7 +179,7 @@ static int db8500_sys_get_trip_type(struct thermal_zone_device *thermal,
 
 /* Callback to get trip point temperature */
 static int db8500_sys_get_trip_temp(struct thermal_zone_device *thermal,
-		int trip, unsigned long *temp)
+		int trip, int *temp)
 {
 	struct db8500_thermal_zone *pzone = thermal->devdata;
 	struct db8500_thsens_platform_data *ptrips = pzone->trip_tab;
@@ -195,7 +194,7 @@ static int db8500_sys_get_trip_temp(struct thermal_zone_device *thermal,
 
 /* Callback to get critical trip point temperature */
 static int db8500_sys_get_crit_temp(struct thermal_zone_device *thermal,
-		unsigned long *temp)
+		int *temp)
 {
 	struct db8500_thermal_zone *pzone = thermal->devdata;
 	struct db8500_thsens_platform_data *ptrips = pzone->trip_tab;
diff --git a/drivers/thermal/dove_thermal.c b/drivers/thermal/dove_thermal.c
index 09f6e30..a0bc9de 100644
--- a/drivers/thermal/dove_thermal.c
+++ b/drivers/thermal/dove_thermal.c
@@ -93,7 +93,7 @@ static int dove_init_sensor(const struct dove_thermal_priv *priv)
 }
 
 static int dove_get_temp(struct thermal_zone_device *thermal,
-			  unsigned long *temp)
+			  int *temp)
 {
 	unsigned long reg;
 	struct dove_thermal_priv *priv = thermal->devdata;
diff --git a/drivers/thermal/fair_share.c b/drivers/thermal/fair_share.c
index c2c10bb..34fe365 100644
--- a/drivers/thermal/fair_share.c
+++ b/drivers/thermal/fair_share.c
@@ -34,7 +34,7 @@
 static int get_trip_level(struct thermal_zone_device *tz)
 {
 	int count = 0;
-	unsigned long trip_temp;
+	int trip_temp;
 	enum thermal_trip_type trip_type;
 
 	if (tz->trips == 0 || !tz->ops->get_trip_temp)
diff --git a/drivers/thermal/gov_bang_bang.c b/drivers/thermal/gov_bang_bang.c
index c5dd76b..70836c5 100644
--- a/drivers/thermal/gov_bang_bang.c
+++ b/drivers/thermal/gov_bang_bang.c
@@ -25,14 +25,13 @@
 
 static void thermal_zone_trip_update(struct thermal_zone_device *tz, int trip)
 {
-	long trip_temp;
-	unsigned long trip_hyst;
+	int trip_temp, trip_hyst;
 	struct thermal_instance *instance;
 
 	tz->ops->get_trip_temp(tz, trip, &trip_temp);
 	tz->ops->get_trip_hyst(tz, trip, &trip_hyst);
 
-	dev_dbg(&tz->device, "Trip%d[temp=%ld]:temp=%d:hyst=%ld\n",
+	dev_dbg(&tz->device, "Trip%d[temp=%d]:temp=%d:hyst=%d\n",
 				trip, trip_temp, tz->temperature,
 				trip_hyst);
 
diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c
index d5dd357..49aa068 100644
--- a/drivers/thermal/hisi_thermal.c
+++ b/drivers/thermal/hisi_thermal.c
@@ -155,7 +155,7 @@ static void hisi_thermal_disable_sensor(struct hisi_thermal_data *data)
 	mutex_unlock(&data->thermal_lock);
 }
 
-static int hisi_thermal_get_temp(void *_sensor, long *temp)
+static int hisi_thermal_get_temp(void *_sensor, int *temp)
 {
 	struct hisi_thermal_sensor *sensor = _sensor;
 	struct hisi_thermal_data *data = sensor->thermal;
@@ -178,7 +178,7 @@ static int hisi_thermal_get_temp(void *_sensor, long *temp)
 	data->irq_bind_sensor = sensor_id;
 	mutex_unlock(&data->thermal_lock);
 
-	dev_dbg(&data->pdev->dev, "id=%d, irq=%d, temp=%ld, thres=%d\n",
+	dev_dbg(&data->pdev->dev, "id=%d, irq=%d, temp=%d, thres=%d\n",
 		sensor->id, data->irq_enabled, *temp, sensor->thres_temp);
 	/*
 	 * Bind irq to sensor for two cases:
diff --git a/drivers/thermal/imx_thermal.c b/drivers/thermal/imx_thermal.c
index fde4c28..4bec1d3 100644
--- a/drivers/thermal/imx_thermal.c
+++ b/drivers/thermal/imx_thermal.c
@@ -98,10 +98,10 @@ struct imx_thermal_data {
 	enum thermal_device_mode mode;
 	struct regmap *tempmon;
 	u32 c1, c2; /* See formula in imx_get_sensor_data() */
-	unsigned long temp_passive;
-	unsigned long temp_critical;
-	unsigned long alarm_temp;
-	unsigned long last_temp;
+	int temp_passive;
+	int temp_critical;
+	int alarm_temp;
+	int last_temp;
 	bool irq_enabled;
 	int irq;
 	struct clk *thermal_clk;
@@ -109,7 +109,7 @@ struct imx_thermal_data {
 };
 
 static void imx_set_panic_temp(struct imx_thermal_data *data,
-			       signed long panic_temp)
+			       int panic_temp)
 {
 	struct regmap *map = data->tempmon;
 	int critical_value;
@@ -121,7 +121,7 @@ static void imx_set_panic_temp(struct imx_thermal_data *data,
 }
 
 static void imx_set_alarm_temp(struct imx_thermal_data *data,
-			       signed long alarm_temp)
+			       int alarm_temp)
 {
 	struct regmap *map = data->tempmon;
 	int alarm_value;
@@ -133,7 +133,7 @@ static void imx_set_alarm_temp(struct imx_thermal_data *data,
 			TEMPSENSE0_ALARM_VALUE_SHIFT);
 }
 
-static int imx_get_temp(struct thermal_zone_device *tz, unsigned long *temp)
+static int imx_get_temp(struct thermal_zone_device *tz, int *temp)
 {
 	struct imx_thermal_data *data = tz->devdata;
 	struct regmap *map = data->tempmon;
@@ -189,13 +189,13 @@ static int imx_get_temp(struct thermal_zone_device *tz, unsigned long *temp)
 		if (data->alarm_temp == data->temp_critical &&
 			*temp < data->temp_passive) {
 			imx_set_alarm_temp(data, data->temp_passive);
-			dev_dbg(&tz->device, "thermal alarm off: T < %lu\n",
+			dev_dbg(&tz->device, "thermal alarm off: T < %d\n",
 				data->alarm_temp / 1000);
 		}
 	}
 
 	if (*temp != data->last_temp) {
-		dev_dbg(&tz->device, "millicelsius: %ld\n", *temp);
+		dev_dbg(&tz->device, "millicelsius: %d\n", *temp);
 		data->last_temp = *temp;
 	}
 
@@ -262,8 +262,7 @@ static int imx_get_trip_type(struct thermal_zone_device *tz, int trip,
 	return 0;
 }
 
-static int imx_get_crit_temp(struct thermal_zone_device *tz,
-			     unsigned long *temp)
+static int imx_get_crit_temp(struct thermal_zone_device *tz, int *temp)
 {
 	struct imx_thermal_data *data = tz->devdata;
 
@@ -272,7 +271,7 @@ static int imx_get_crit_temp(struct thermal_zone_device *tz,
 }
 
 static int imx_get_trip_temp(struct thermal_zone_device *tz, int trip,
-			     unsigned long *temp)
+			     int *temp)
 {
 	struct imx_thermal_data *data = tz->devdata;
 
@@ -282,7 +281,7 @@ static int imx_get_trip_temp(struct thermal_zone_device *tz, int trip,
 }
 
 static int imx_set_trip_temp(struct thermal_zone_device *tz, int trip,
-			     unsigned long temp)
+			     int temp)
 {
 	struct imx_thermal_data *data = tz->devdata;
 
@@ -434,7 +433,7 @@ static irqreturn_t imx_thermal_alarm_irq_thread(int irq, void *dev)
 {
 	struct imx_thermal_data *data = dev;
 
-	dev_dbg(&data->tz->device, "THERMAL ALARM: T > %lu\n",
+	dev_dbg(&data->tz->device, "THERMAL ALARM: T > %d\n",
 		data->alarm_temp / 1000);
 
 	thermal_zone_device_update(data->tz);
diff --git a/drivers/thermal/int340x_thermal/int3400_thermal.c b/drivers/thermal/int340x_thermal/int3400_thermal.c
index 031018e..5836e55 100644
--- a/drivers/thermal/int340x_thermal/int3400_thermal.c
+++ b/drivers/thermal/int340x_thermal/int3400_thermal.c
@@ -186,7 +186,7 @@ static int int3400_thermal_run_osc(acpi_handle handle,
 }
 
 static int int3400_thermal_get_temp(struct thermal_zone_device *thermal,
-			unsigned long *temp)
+			int *temp)
 {
 	*temp = 20 * 1000; /* faked temp sensor with 20C */
 	return 0;
diff --git a/drivers/thermal/int340x_thermal/int340x_thermal_zone.c b/drivers/thermal/int340x_thermal/int340x_thermal_zone.c
index 1e25133..b9b2666 100644
--- a/drivers/thermal/int340x_thermal/int340x_thermal_zone.c
+++ b/drivers/thermal/int340x_thermal/int340x_thermal_zone.c
@@ -20,7 +20,7 @@
 #include "int340x_thermal_zone.h"
 
 static int int340x_thermal_get_zone_temp(struct thermal_zone_device *zone,
-					 unsigned long *temp)
+					 int *temp)
 {
 	struct int34x_thermal_zone *d = zone->devdata;
 	unsigned long long tmp;
@@ -49,7 +49,7 @@ static int int340x_thermal_get_zone_temp(struct thermal_zone_device *zone,
 }
 
 static int int340x_thermal_get_trip_temp(struct thermal_zone_device *zone,
-					 int trip, unsigned long *temp)
+					 int trip, int *temp)
 {
 	struct int34x_thermal_zone *d = zone->devdata;
 	int i;
@@ -114,7 +114,7 @@ static int int340x_thermal_get_trip_type(struct thermal_zone_device *zone,
 }
 
 static int int340x_thermal_set_trip_temp(struct thermal_zone_device *zone,
-				      int trip, unsigned long temp)
+				      int trip, int temp)
 {
 	struct int34x_thermal_zone *d = zone->devdata;
 	acpi_status status;
@@ -136,7 +136,7 @@ static int int340x_thermal_set_trip_temp(struct thermal_zone_device *zone,
 
 
 static int int340x_thermal_get_trip_hyst(struct thermal_zone_device *zone,
-		int trip, unsigned long *temp)
+		int trip, int *temp)
 {
 	struct int34x_thermal_zone *d = zone->devdata;
 	acpi_status status;
@@ -163,7 +163,7 @@ static struct thermal_zone_device_ops int340x_thermal_zone_ops = {
 };
 
 static int int340x_thermal_get_trip_config(acpi_handle handle, char *name,
-				      unsigned long *temp)
+				      int *temp)
 {
 	unsigned long long r;
 	acpi_status status;
diff --git a/drivers/thermal/int340x_thermal/int340x_thermal_zone.h b/drivers/thermal/int340x_thermal/int340x_thermal_zone.h
index 9f38ab7..aaadf72 100644
--- a/drivers/thermal/int340x_thermal/int340x_thermal_zone.h
+++ b/drivers/thermal/int340x_thermal/int340x_thermal_zone.h
@@ -21,7 +21,7 @@
 #define INT340X_THERMAL_MAX_ACT_TRIP_COUNT	10
 
 struct active_trip {
-	unsigned long temp;
+	int temp;
 	int id;
 	bool valid;
 };
@@ -31,11 +31,11 @@ struct int34x_thermal_zone {
 	struct active_trip act_trips[INT340X_THERMAL_MAX_ACT_TRIP_COUNT];
 	unsigned long *aux_trips;
 	int aux_trip_nr;
-	unsigned long psv_temp;
+	int psv_temp;
 	int psv_trip_id;
-	unsigned long crt_temp;
+	int crt_temp;
 	int crt_trip_id;
-	unsigned long hot_temp;
+	int hot_temp;
 	int hot_trip_id;
 	struct thermal_zone_device *zone;
 	struct thermal_zone_device_ops *override_ops;
diff --git a/drivers/thermal/int340x_thermal/processor_thermal_device.c b/drivers/thermal/int340x_thermal/processor_thermal_device.c
index 3df3dc3..ccc0ad0 100644
--- a/drivers/thermal/int340x_thermal/processor_thermal_device.c
+++ b/drivers/thermal/int340x_thermal/processor_thermal_device.c
@@ -145,7 +145,7 @@ static int get_tjmax(void)
 	return -EINVAL;
 }
 
-static int read_temp_msr(unsigned long *temp)
+static int read_temp_msr(int *temp)
 {
 	int cpu;
 	u32 eax, edx;
@@ -177,7 +177,7 @@ err_ret:
 }
 
 static int proc_thermal_get_zone_temp(struct thermal_zone_device *zone,
-					 unsigned long *temp)
+					 int *temp)
 {
 	int ret;
 
diff --git a/drivers/thermal/intel_quark_dts_thermal.c b/drivers/thermal/intel_quark_dts_thermal.c
index 4434ec8..5ed90e6 100644
--- a/drivers/thermal/intel_quark_dts_thermal.c
+++ b/drivers/thermal/intel_quark_dts_thermal.c
@@ -186,7 +186,7 @@ static int soc_dts_disable(struct thermal_zone_device *tzd)
 	return ret;
 }
 
-static int _get_trip_temp(int trip, unsigned long *temp)
+static int _get_trip_temp(int trip, int *temp)
 {
 	int status;
 	u32 out;
@@ -212,19 +212,18 @@ static int _get_trip_temp(int trip, unsigned long *temp)
 }
 
 static inline int sys_get_trip_temp(struct thermal_zone_device *tzd,
-				int trip, unsigned long *temp)
+				int trip, int *temp)
 {
 	return _get_trip_temp(trip, temp);
 }
 
-static inline int sys_get_crit_temp(struct thermal_zone_device *tzd,
-				unsigned long *temp)
+static inline int sys_get_crit_temp(struct thermal_zone_device *tzd, int *temp)
 {
 	return _get_trip_temp(QRK_DTS_ID_TP_CRITICAL, temp);
 }
 
 static int update_trip_temp(struct soc_sensor_entry *aux_entry,
-				int trip, unsigned long temp)
+				int trip, int temp)
 {
 	u32 out;
 	u32 temp_out;
@@ -272,7 +271,7 @@ failed:
 }
 
 static inline int sys_set_trip_temp(struct thermal_zone_device *tzd, int trip,
-				unsigned long temp)
+				int temp)
 {
 	return update_trip_temp(tzd->devdata, trip, temp);
 }
@@ -289,7 +288,7 @@ static int sys_get_trip_type(struct thermal_zone_device *thermal,
 }
 
 static int sys_get_curr_temp(struct thermal_zone_device *tzd,
-				unsigned long *temp)
+				int *temp)
 {
 	u32 out;
 	int ret;
diff --git a/drivers/thermal/intel_soc_dts_iosf.c b/drivers/thermal/intel_soc_dts_iosf.c
index 42e4b6a..5841d1d 100644
--- a/drivers/thermal/intel_soc_dts_iosf.c
+++ b/drivers/thermal/intel_soc_dts_iosf.c
@@ -80,7 +80,7 @@ err_ret:
 }
 
 static int sys_get_trip_temp(struct thermal_zone_device *tzd, int trip,
-			     unsigned long *temp)
+			     int *temp)
 {
 	int status;
 	u32 out;
@@ -106,7 +106,7 @@ static int sys_get_trip_temp(struct thermal_zone_device *tzd, int trip,
 }
 
 static int update_trip_temp(struct intel_soc_dts_sensor_entry *dts,
-			    int thres_index, unsigned long temp,
+			    int thres_index, int temp,
 			    enum thermal_trip_type trip_type)
 {
 	int status;
@@ -196,7 +196,7 @@ err_restore_ptps:
 }
 
 static int sys_set_trip_temp(struct thermal_zone_device *tzd, int trip,
-			     unsigned long temp)
+			     int temp)
 {
 	struct intel_soc_dts_sensor_entry *dts = tzd->devdata;
 	struct intel_soc_dts_sensors *sensors = dts->sensors;
@@ -226,7 +226,7 @@ static int sys_get_trip_type(struct thermal_zone_device *tzd,
 }
 
 static int sys_get_curr_temp(struct thermal_zone_device *tzd,
-			     unsigned long *temp)
+			     int *temp)
 {
 	int status;
 	u32 out;
diff --git a/drivers/thermal/kirkwood_thermal.c b/drivers/thermal/kirkwood_thermal.c
index 11041fe..8922366 100644
--- a/drivers/thermal/kirkwood_thermal.c
+++ b/drivers/thermal/kirkwood_thermal.c
@@ -33,7 +33,7 @@ struct kirkwood_thermal_priv {
 };
 
 static int kirkwood_get_temp(struct thermal_zone_device *thermal,
-			  unsigned long *temp)
+			  int *temp)
 {
 	unsigned long reg;
 	struct kirkwood_thermal_priv *priv = thermal->devdata;
diff --git a/drivers/thermal/of-thermal.c b/drivers/thermal/of-thermal.c
index b295b2b..42b7d42 100644
--- a/drivers/thermal/of-thermal.c
+++ b/drivers/thermal/of-thermal.c
@@ -91,7 +91,7 @@ struct __thermal_zone {
 /***   DT thermal zone device callbacks   ***/
 
 static int of_thermal_get_temp(struct thermal_zone_device *tz,
-			       unsigned long *temp)
+			       int *temp)
 {
 	struct __thermal_zone *data = tz->devdata;
 
@@ -177,7 +177,7 @@ EXPORT_SYMBOL_GPL(of_thermal_get_trip_points);
  * Return: zero on success, error code otherwise
  */
 static int of_thermal_set_emul_temp(struct thermal_zone_device *tz,
-				    unsigned long temp)
+				    int temp)
 {
 	struct __thermal_zone *data = tz->devdata;
 
@@ -311,7 +311,7 @@ static int of_thermal_get_trip_type(struct thermal_zone_device *tz, int trip,
 }
 
 static int of_thermal_get_trip_temp(struct thermal_zone_device *tz, int trip,
-				    unsigned long *temp)
+				    int *temp)
 {
 	struct __thermal_zone *data = tz->devdata;
 
@@ -324,7 +324,7 @@ static int of_thermal_get_trip_temp(struct thermal_zone_device *tz, int trip,
 }
 
 static int of_thermal_set_trip_temp(struct thermal_zone_device *tz, int trip,
-				    unsigned long temp)
+				    int temp)
 {
 	struct __thermal_zone *data = tz->devdata;
 
@@ -338,7 +338,7 @@ static int of_thermal_set_trip_temp(struct thermal_zone_device *tz, int trip,
 }
 
 static int of_thermal_get_trip_hyst(struct thermal_zone_device *tz, int trip,
-				    unsigned long *hyst)
+				    int *hyst)
 {
 	struct __thermal_zone *data = tz->devdata;
 
@@ -351,7 +351,7 @@ static int of_thermal_get_trip_hyst(struct thermal_zone_device *tz, int trip,
 }
 
 static int of_thermal_set_trip_hyst(struct thermal_zone_device *tz, int trip,
-				    unsigned long hyst)
+				    int hyst)
 {
 	struct __thermal_zone *data = tz->devdata;
 
@@ -365,7 +365,7 @@ static int of_thermal_set_trip_hyst(struct thermal_zone_device *tz, int trip,
 }
 
 static int of_thermal_get_crit_temp(struct thermal_zone_device *tz,
-				    unsigned long *temp)
+				    int *temp)
 {
 	struct __thermal_zone *data = tz->devdata;
 	int i;
diff --git a/drivers/thermal/power_allocator.c b/drivers/thermal/power_allocator.c
index 4672250..045aea59 100644
--- a/drivers/thermal/power_allocator.c
+++ b/drivers/thermal/power_allocator.c
@@ -92,8 +92,8 @@ struct power_allocator_params {
  * Return: The power budget for the next period.
  */
 static u32 pid_controller(struct thermal_zone_device *tz,
-			  unsigned long current_temp,
-			  unsigned long control_temp,
+			  int current_temp,
+			  int control_temp,
 			  u32 max_allocatable_power)
 {
 	s64 p, i, d, power_range;
@@ -102,7 +102,7 @@ static u32 pid_controller(struct thermal_zone_device *tz,
 
 	max_power_frac = int_to_frac(max_allocatable_power);
 
-	err = ((s32)control_temp - (s32)current_temp);
+	err = control_temp - current_temp;
 	err = int_to_frac(err);
 
 	/* Calculate the proportional term */
@@ -223,8 +223,8 @@ static void divvy_up_power(u32 *req_power, u32 *max_power, int num_actors,
 }
 
 static int allocate_power(struct thermal_zone_device *tz,
-			  unsigned long current_temp,
-			  unsigned long control_temp)
+			  int current_temp,
+			  int control_temp)
 {
 	struct thermal_instance *instance;
 	struct power_allocator_params *params = tz->governor_data;
@@ -326,7 +326,7 @@ static int allocate_power(struct thermal_zone_device *tz,
 				      granted_power, total_granted_power,
 				      num_actors, power_range,
 				      max_allocatable_power, current_temp,
-				      (s32)control_temp - (s32)current_temp);
+				      control_temp - current_temp);
 
 	devm_kfree(&tz->device, req_power);
 unlock:
@@ -411,7 +411,7 @@ static int power_allocator_bind(struct thermal_zone_device *tz)
 {
 	int ret;
 	struct power_allocator_params *params;
-	unsigned long switch_on_temp, control_temp;
+	int switch_on_temp, control_temp;
 	u32 temperature_threshold;
 
 	if (!tz->tzp || !tz->tzp->sustainable_power) {
@@ -476,7 +476,7 @@ static void power_allocator_unbind(struct thermal_zone_device *tz)
 static int power_allocator_throttle(struct thermal_zone_device *tz, int trip)
 {
 	int ret;
-	unsigned long switch_on_temp, control_temp, current_temp;
+	int switch_on_temp, control_temp, current_temp;
 	struct power_allocator_params *params = tz->governor_data;
 
 	/*
diff --git a/drivers/thermal/qcom-spmi-temp-alarm.c b/drivers/thermal/qcom-spmi-temp-alarm.c
index c8d27b8..b677aad 100644
--- a/drivers/thermal/qcom-spmi-temp-alarm.c
+++ b/drivers/thermal/qcom-spmi-temp-alarm.c
@@ -117,7 +117,7 @@ static int qpnp_tm_update_temp_no_adc(struct qpnp_tm_chip *chip)
 	return 0;
 }
 
-static int qpnp_tm_get_temp(void *data, long *temp)
+static int qpnp_tm_get_temp(void *data, int *temp)
 {
 	struct qpnp_tm_chip *chip = data;
 	int ret, mili_celsius;
diff --git a/drivers/thermal/rcar_thermal.c b/drivers/thermal/rcar_thermal.c
index fe4e767..5d4ae7d 100644
--- a/drivers/thermal/rcar_thermal.c
+++ b/drivers/thermal/rcar_thermal.c
@@ -200,8 +200,7 @@ err_out_unlock:
 	return ret;
 }
 
-static int rcar_thermal_get_temp(struct thermal_zone_device *zone,
-				 unsigned long *temp)
+static int rcar_thermal_get_temp(struct thermal_zone_device *zone, int *temp)
 {
 	struct rcar_thermal_priv *priv = rcar_zone_to_priv(zone);
 
@@ -235,7 +234,7 @@ static int rcar_thermal_get_trip_type(struct thermal_zone_device *zone,
 }
 
 static int rcar_thermal_get_trip_temp(struct thermal_zone_device *zone,
-				      int trip, unsigned long *temp)
+				      int trip, int *temp)
 {
 	struct rcar_thermal_priv *priv = rcar_zone_to_priv(zone);
 	struct device *dev = rcar_priv_to_dev(priv);
@@ -299,7 +298,7 @@ static void _rcar_thermal_irq_ctrl(struct rcar_thermal_priv *priv, int enable)
 static void rcar_thermal_work(struct work_struct *work)
 {
 	struct rcar_thermal_priv *priv;
-	unsigned long cctemp, nctemp;
+	int cctemp, nctemp;
 
 	priv = container_of(work, struct rcar_thermal_priv, work.work);
 
diff --git a/drivers/thermal/rockchip_thermal.c b/drivers/thermal/rockchip_thermal.c
index cd8f5f93..c89ffb2 100644
--- a/drivers/thermal/rockchip_thermal.c
+++ b/drivers/thermal/rockchip_thermal.c
@@ -64,7 +64,7 @@ struct rockchip_tsadc_chip {
 	void (*control)(void __iomem *reg, bool on);
 
 	/* Per-sensor methods */
-	int (*get_temp)(int chn, void __iomem *reg, long *temp);
+	int (*get_temp)(int chn, void __iomem *reg, int *temp);
 	void (*set_tshut_temp)(int chn, void __iomem *reg, long temp);
 	void (*set_tshut_mode)(int chn, void __iomem *reg, enum tshut_mode m);
 };
@@ -191,7 +191,7 @@ static u32 rk_tsadcv2_temp_to_code(long temp)
 	return 0;
 }
 
-static long rk_tsadcv2_code_to_temp(u32 code)
+static int rk_tsadcv2_code_to_temp(u32 code)
 {
 	unsigned int low = 0;
 	unsigned int high = ARRAY_SIZE(v2_code_table) - 1;
@@ -277,7 +277,7 @@ static void rk_tsadcv2_control(void __iomem *regs, bool enable)
 	writel_relaxed(val, regs + TSADCV2_AUTO_CON);
 }
 
-static int rk_tsadcv2_get_temp(int chn, void __iomem *regs, long *temp)
+static int rk_tsadcv2_get_temp(int chn, void __iomem *regs, int *temp)
 {
 	u32 val;
 
@@ -366,7 +366,7 @@ static irqreturn_t rockchip_thermal_alarm_irq_thread(int irq, void *dev)
 	return IRQ_HANDLED;
 }
 
-static int rockchip_thermal_get_temp(void *_sensor, long *out_temp)
+static int rockchip_thermal_get_temp(void *_sensor, int *out_temp)
 {
 	struct rockchip_thermal_sensor *sensor = _sensor;
 	struct rockchip_thermal_data *thermal = sensor->thermal;
@@ -374,7 +374,7 @@ static int rockchip_thermal_get_temp(void *_sensor, long *out_temp)
 	int retval;
 
 	retval = tsadc->get_temp(sensor->id, thermal->regs, out_temp);
-	dev_dbg(&thermal->pdev->dev, "sensor %d - temp: %ld, retval: %d\n",
+	dev_dbg(&thermal->pdev->dev, "sensor %d - temp: %d, retval: %d\n",
 		sensor->id, *out_temp, retval);
 
 	return retval;
diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c
index 531f4b17..9ec29a3 100644
--- a/drivers/thermal/samsung/exynos_tmu.c
+++ b/drivers/thermal/samsung/exynos_tmu.c
@@ -207,8 +207,7 @@ struct exynos_tmu_data {
 	int (*tmu_initialize)(struct platform_device *pdev);
 	void (*tmu_control)(struct platform_device *pdev, bool on);
 	int (*tmu_read)(struct exynos_tmu_data *data);
-	void (*tmu_set_emulation)(struct exynos_tmu_data *data,
-				  unsigned long temp);
+	void (*tmu_set_emulation)(struct exynos_tmu_data *data, int temp);
 	void (*tmu_clear_irqs)(struct exynos_tmu_data *data);
 };
 
@@ -216,7 +215,7 @@ static void exynos_report_trigger(struct exynos_tmu_data *p)
 {
 	char data[10], *envp[] = { data, NULL };
 	struct thermal_zone_device *tz = p->tzd;
-	unsigned long temp;
+	int temp;
 	unsigned int i;
 
 	if (!tz) {
@@ -517,7 +516,7 @@ static int exynos5433_tmu_initialize(struct platform_device *pdev)
 	struct thermal_zone_device *tz = data->tzd;
 	unsigned int status, trim_info;
 	unsigned int rising_threshold = 0, falling_threshold = 0;
-	unsigned long temp, temp_hist;
+	int temp, temp_hist;
 	int ret = 0, threshold_code, i, sensor_id, cal_type;
 
 	status = readb(data->base + EXYNOS_TMU_REG_STATUS);
@@ -610,7 +609,7 @@ static int exynos5440_tmu_initialize(struct platform_device *pdev)
 	struct exynos_tmu_data *data = platform_get_drvdata(pdev);
 	unsigned int trim_info = 0, con, rising_threshold;
 	int ret = 0, threshold_code;
-	unsigned long crit_temp = 0;
+	int crit_temp = 0;
 
 	/*
 	 * For exynos5440 soc triminfo value is swapped between TMU0 and
@@ -663,7 +662,7 @@ static int exynos7_tmu_initialize(struct platform_device *pdev)
 	unsigned int status, trim_info;
 	unsigned int rising_threshold = 0, falling_threshold = 0;
 	int ret = 0, threshold_code, i;
-	unsigned long temp, temp_hist;
+	int temp, temp_hist;
 	unsigned int reg_off, bit_off;
 
 	status = readb(data->base + EXYNOS_TMU_REG_STATUS);
@@ -876,7 +875,7 @@ static void exynos7_tmu_control(struct platform_device *pdev, bool on)
 	writel(con, data->base + EXYNOS_TMU_REG_CONTROL);
 }
 
-static int exynos_get_temp(void *p, long *temp)
+static int exynos_get_temp(void *p, int *temp)
 {
 	struct exynos_tmu_data *data = p;
 
@@ -896,7 +895,7 @@ static int exynos_get_temp(void *p, long *temp)
 
 #ifdef CONFIG_THERMAL_EMULATION
 static u32 get_emul_con_reg(struct exynos_tmu_data *data, unsigned int val,
-			    unsigned long temp)
+			    int temp)
 {
 	if (temp) {
 		temp /= MCELSIUS;
@@ -926,7 +925,7 @@ static u32 get_emul_con_reg(struct exynos_tmu_data *data, unsigned int val,
 }
 
 static void exynos4412_tmu_set_emulation(struct exynos_tmu_data *data,
-					 unsigned long temp)
+					 int temp)
 {
 	unsigned int val;
 	u32 emul_con;
@@ -946,7 +945,7 @@ static void exynos4412_tmu_set_emulation(struct exynos_tmu_data *data,
 }
 
 static void exynos5440_tmu_set_emulation(struct exynos_tmu_data *data,
-					 unsigned long temp)
+					 int temp)
 {
 	unsigned int val;
 
@@ -955,7 +954,7 @@ static void exynos5440_tmu_set_emulation(struct exynos_tmu_data *data,
 	writel(val, data->base + EXYNOS5440_TMU_S0_7_DEBUG);
 }
 
-static int exynos_tmu_set_emulation(void *drv_data, unsigned long temp)
+static int exynos_tmu_set_emulation(void *drv_data, int temp)
 {
 	struct exynos_tmu_data *data = drv_data;
 	int ret = -EINVAL;
@@ -978,7 +977,7 @@ out:
 #else
 #define exynos4412_tmu_set_emulation NULL
 #define exynos5440_tmu_set_emulation NULL
-static int exynos_tmu_set_emulation(void *drv_data,	unsigned long temp)
+static int exynos_tmu_set_emulation(void *drv_data, int temp)
 	{ return -EINVAL; }
 #endif /* CONFIG_THERMAL_EMULATION */
 
diff --git a/drivers/thermal/spear_thermal.c b/drivers/thermal/spear_thermal.c
index bddb717..534dd91 100644
--- a/drivers/thermal/spear_thermal.c
+++ b/drivers/thermal/spear_thermal.c
@@ -38,7 +38,7 @@ struct spear_thermal_dev {
 };
 
 static inline int thermal_get_temp(struct thermal_zone_device *thermal,
-				unsigned long *temp)
+				int *temp)
 {
 	struct spear_thermal_dev *stdev = thermal->devdata;
 
diff --git a/drivers/thermal/st/st_thermal.c b/drivers/thermal/st/st_thermal.c
index 76c515d..44cbba9 100644
--- a/drivers/thermal/st/st_thermal.c
+++ b/drivers/thermal/st/st_thermal.c
@@ -111,8 +111,7 @@ static int st_thermal_calibration(struct st_thermal_sensor *sensor)
 }
 
 /* Callback to get temperature from HW*/
-static int st_thermal_get_temp(struct thermal_zone_device *th,
-		unsigned long *temperature)
+static int st_thermal_get_temp(struct thermal_zone_device *th, int *temperature)
 {
 	struct st_thermal_sensor *sensor = th->devdata;
 	struct device *dev = sensor->dev;
@@ -159,7 +158,7 @@ static int st_thermal_get_trip_type(struct thermal_zone_device *th,
 }
 
 static int st_thermal_get_trip_temp(struct thermal_zone_device *th,
-				    int trip, unsigned long *temp)
+				    int trip, int *temp)
 {
 	struct st_thermal_sensor *sensor = th->devdata;
 	struct device *dev = sensor->dev;
diff --git a/drivers/thermal/step_wise.c b/drivers/thermal/step_wise.c
index 5a0f12d..2f9f708 100644
--- a/drivers/thermal/step_wise.c
+++ b/drivers/thermal/step_wise.c
@@ -113,7 +113,7 @@ static void update_passive_instance(struct thermal_zone_device *tz,
 
 static void thermal_zone_trip_update(struct thermal_zone_device *tz, int trip)
 {
-	long trip_temp;
+	int trip_temp;
 	enum thermal_trip_type trip_type;
 	enum thermal_trend trend;
 	struct thermal_instance *instance;
@@ -135,7 +135,7 @@ static void thermal_zone_trip_update(struct thermal_zone_device *tz, int trip)
 		trace_thermal_zone_trip(tz, trip, trip_type);
 	}
 
-	dev_dbg(&tz->device, "Trip%d[type=%d,temp=%ld]:trend=%d,throttle=%d\n",
+	dev_dbg(&tz->device, "Trip%d[type=%d,temp=%d]:trend=%d,throttle=%d\n",
 				trip, trip_type, trip_temp, trend, throttle);
 
 	mutex_lock(&tz->lock);
diff --git a/drivers/thermal/tegra_soctherm.c b/drivers/thermal/tegra_soctherm.c
index 9197fc0..74ea576 100644
--- a/drivers/thermal/tegra_soctherm.c
+++ b/drivers/thermal/tegra_soctherm.c
@@ -293,7 +293,7 @@ static int enable_tsensor(struct tegra_soctherm *tegra,
  * H denotes an addition of 0.5 Celsius and N denotes negation
  * of the final value.
  */
-static long translate_temp(u16 val)
+static int translate_temp(u16 val)
 {
 	long t;
 
@@ -306,7 +306,7 @@ static long translate_temp(u16 val)
 	return t;
 }
 
-static int tegra_thermctl_get_temp(void *data, long *out_temp)
+static int tegra_thermctl_get_temp(void *data, int *out_temp)
 {
 	struct tegra_thermctl_zone *zone = data;
 	u32 val;
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 04659bf..371a543 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -426,7 +426,7 @@ static void handle_non_critical_trips(struct thermal_zone_device *tz,
 static void handle_critical_trips(struct thermal_zone_device *tz,
 				int trip, enum thermal_trip_type trip_type)
 {
-	long trip_temp;
+	int trip_temp;
 
 	tz->ops->get_trip_temp(tz, trip, &trip_temp);
 
@@ -474,12 +474,12 @@ static void handle_thermal_trip(struct thermal_zone_device *tz, int trip)
  *
  * Return: On success returns 0, an error code otherwise
  */
-int thermal_zone_get_temp(struct thermal_zone_device *tz, unsigned long *temp)
+int thermal_zone_get_temp(struct thermal_zone_device *tz, int *temp)
 {
 	int ret = -EINVAL;
 #ifdef CONFIG_THERMAL_EMULATION
 	int count;
-	unsigned long crit_temp = -1UL;
+	int crit_temp = INT_MAX;
 	enum thermal_trip_type type;
 #endif
 
@@ -516,8 +516,7 @@ EXPORT_SYMBOL_GPL(thermal_zone_get_temp);
 
 static void update_temperature(struct thermal_zone_device *tz)
 {
-	long temp;
-	int ret;
+	int temp, ret;
 
 	ret = thermal_zone_get_temp(tz, &temp);
 	if (ret) {
@@ -577,15 +576,14 @@ static ssize_t
 temp_show(struct device *dev, struct device_attribute *attr, char *buf)
 {
 	struct thermal_zone_device *tz = to_thermal_zone(dev);
-	long temperature;
-	int ret;
+	int temperature, ret;
 
 	ret = thermal_zone_get_temp(tz, &temperature);
 
 	if (ret)
 		return ret;
 
-	return sprintf(buf, "%ld\n", temperature);
+	return sprintf(buf, "%d\n", temperature);
 }
 
 static ssize_t
@@ -689,7 +687,7 @@ trip_point_temp_show(struct device *dev, struct device_attribute *attr,
 {
 	struct thermal_zone_device *tz = to_thermal_zone(dev);
 	int trip, ret;
-	long temperature;
+	int temperature;
 
 	if (!tz->ops->get_trip_temp)
 		return -EPERM;
@@ -702,7 +700,7 @@ trip_point_temp_show(struct device *dev, struct device_attribute *attr,
 	if (ret)
 		return ret;
 
-	return sprintf(buf, "%ld\n", temperature);
+	return sprintf(buf, "%d\n", temperature);
 }
 
 static ssize_t
@@ -711,7 +709,7 @@ trip_point_hyst_store(struct device *dev, struct device_attribute *attr,
 {
 	struct thermal_zone_device *tz = to_thermal_zone(dev);
 	int trip, ret;
-	unsigned long temperature;
+	int temperature;
 
 	if (!tz->ops->set_trip_hyst)
 		return -EPERM;
@@ -719,7 +717,7 @@ trip_point_hyst_store(struct device *dev, struct device_attribute *attr,
 	if (!sscanf(attr->attr.name, "trip_point_%d_hyst", &trip))
 		return -EINVAL;
 
-	if (kstrtoul(buf, 10, &temperature))
+	if (kstrtoint(buf, 10, &temperature))
 		return -EINVAL;
 
 	/*
@@ -738,7 +736,7 @@ trip_point_hyst_show(struct device *dev, struct device_attribute *attr,
 {
 	struct thermal_zone_device *tz = to_thermal_zone(dev);
 	int trip, ret;
-	unsigned long temperature;
+	int temperature;
 
 	if (!tz->ops->get_trip_hyst)
 		return -EPERM;
@@ -748,7 +746,7 @@ trip_point_hyst_show(struct device *dev, struct device_attribute *attr,
 
 	ret = tz->ops->get_trip_hyst(tz, trip, &temperature);
 
-	return ret ? ret : sprintf(buf, "%ld\n", temperature);
+	return ret ? ret : sprintf(buf, "%d\n", temperature);
 }
 
 static ssize_t
diff --git a/drivers/thermal/thermal_hwmon.c b/drivers/thermal/thermal_hwmon.c
index 1967bee..06fd2ed9 100644
--- a/drivers/thermal/thermal_hwmon.c
+++ b/drivers/thermal/thermal_hwmon.c
@@ -69,7 +69,7 @@ static DEVICE_ATTR(name, 0444, name_show, NULL);
 static ssize_t
 temp_input_show(struct device *dev, struct device_attribute *attr, char *buf)
 {
-	long temperature;
+	int temperature;
 	int ret;
 	struct thermal_hwmon_attr *hwmon_attr
 			= container_of(attr, struct thermal_hwmon_attr, attr);
@@ -83,7 +83,7 @@ temp_input_show(struct device *dev, struct device_attribute *attr, char *buf)
 	if (ret)
 		return ret;
 
-	return sprintf(buf, "%ld\n", temperature);
+	return sprintf(buf, "%d\n", temperature);
 }
 
 static ssize_t
@@ -95,14 +95,14 @@ temp_crit_show(struct device *dev, struct device_attribute *attr, char *buf)
 			= container_of(hwmon_attr, struct thermal_hwmon_temp,
 				       temp_crit);
 	struct thermal_zone_device *tz = temp->tz;
-	long temperature;
+	int temperature;
 	int ret;
 
 	ret = tz->ops->get_trip_temp(tz, 0, &temperature);
 	if (ret)
 		return ret;
 
-	return sprintf(buf, "%ld\n", temperature);
+	return sprintf(buf, "%d\n", temperature);
 }
 
 
@@ -142,7 +142,7 @@ thermal_hwmon_lookup_temp(const struct thermal_hwmon_device *hwmon,
 
 static bool thermal_zone_crit_temp_valid(struct thermal_zone_device *tz)
 {
-	unsigned long temp;
+	int temp;
 	return tz->ops->get_crit_temp && !tz->ops->get_crit_temp(tz, &temp);
 }
 
diff --git a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
index c7c5b37..b213a12 100644
--- a/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
+++ b/drivers/thermal/ti-soc-thermal/ti-thermal-common.c
@@ -76,14 +76,14 @@ static inline int ti_thermal_hotspot_temperature(int t, int s, int c)
 
 /* thermal zone ops */
 /* Get temperature callback function for thermal zone */
-static inline int __ti_thermal_get_temp(void *devdata, long *temp)
+static inline int __ti_thermal_get_temp(void *devdata, int *temp)
 {
 	struct thermal_zone_device *pcb_tz = NULL;
 	struct ti_thermal_data *data = devdata;
 	struct ti_bandgap *bgp;
 	const struct ti_temp_sensor *s;
 	int ret, tmp, slope, constant;
-	unsigned long pcb_temp;
+	int pcb_temp;
 
 	if (!data)
 		return 0;
@@ -119,7 +119,7 @@ static inline int __ti_thermal_get_temp(void *devdata, long *temp)
 }
 
 static inline int ti_thermal_get_temp(struct thermal_zone_device *thermal,
-				      unsigned long *temp)
+				      int *temp)
 {
 	struct ti_thermal_data *data = thermal->devdata;
 
@@ -229,7 +229,7 @@ static int ti_thermal_get_trip_type(struct thermal_zone_device *thermal,
 
 /* Get trip temperature callback functions for thermal zone */
 static int ti_thermal_get_trip_temp(struct thermal_zone_device *thermal,
-				    int trip, unsigned long *temp)
+				    int trip, int *temp)
 {
 	if (!ti_thermal_is_valid_trip(trip))
 		return -EINVAL;
@@ -280,7 +280,7 @@ static int ti_thermal_get_trend(struct thermal_zone_device *thermal,
 
 /* Get critical temperature callback functions for thermal zone */
 static int ti_thermal_get_crit_temp(struct thermal_zone_device *thermal,
-				    unsigned long *temp)
+				    int *temp)
 {
 	/* shutdown zone */
 	return ti_thermal_get_trip_temp(thermal, OMAP_TRIP_NUMBER - 1, temp);
diff --git a/drivers/thermal/x86_pkg_temp_thermal.c b/drivers/thermal/x86_pkg_temp_thermal.c
index 50d1d2c..7fc919f 100644
--- a/drivers/thermal/x86_pkg_temp_thermal.c
+++ b/drivers/thermal/x86_pkg_temp_thermal.c
@@ -164,7 +164,7 @@ err_ret:
 	return err;
 }
 
-static int sys_get_curr_temp(struct thermal_zone_device *tzd, unsigned long *temp)
+static int sys_get_curr_temp(struct thermal_zone_device *tzd, int *temp)
 {
 	u32 eax, edx;
 	struct phy_dev_entry *phy_dev_entry;
@@ -175,7 +175,7 @@ static int sys_get_curr_temp(struct thermal_zone_device *tzd, unsigned long *tem
 	if (eax & 0x80000000) {
 		*temp = phy_dev_entry->tj_max -
 				((eax >> 16) & 0x7f) * 1000;
-		pr_debug("sys_get_curr_temp %ld\n", *temp);
+		pr_debug("sys_get_curr_temp %d\n", *temp);
 		return 0;
 	}
 
@@ -183,7 +183,7 @@ static int sys_get_curr_temp(struct thermal_zone_device *tzd, unsigned long *tem
 }
 
 static int sys_get_trip_temp(struct thermal_zone_device *tzd,
-		int trip, unsigned long *temp)
+		int trip, int *temp)
 {
 	u32 eax, edx;
 	struct phy_dev_entry *phy_dev_entry;
@@ -214,13 +214,13 @@ static int sys_get_trip_temp(struct thermal_zone_device *tzd,
 		*temp = phy_dev_entry->tj_max - thres_reg_value * 1000;
 	else
 		*temp = 0;
-	pr_debug("sys_get_trip_temp %ld\n", *temp);
+	pr_debug("sys_get_trip_temp %d\n", *temp);
 
 	return 0;
 }
 
 static int sys_set_trip_temp(struct thermal_zone_device *tzd, int trip,
-							unsigned long temp)
+							int temp)
 {
 	u32 l, h;
 	struct phy_dev_entry *phy_dev_entry;
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index 037e9df..17292fe 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -92,23 +92,19 @@ struct thermal_zone_device_ops {
 		     struct thermal_cooling_device *);
 	int (*unbind) (struct thermal_zone_device *,
 		       struct thermal_cooling_device *);
-	int (*get_temp) (struct thermal_zone_device *, unsigned long *);
+	int (*get_temp) (struct thermal_zone_device *, int *);
 	int (*get_mode) (struct thermal_zone_device *,
 			 enum thermal_device_mode *);
 	int (*set_mode) (struct thermal_zone_device *,
 		enum thermal_device_mode);
 	int (*get_trip_type) (struct thermal_zone_device *, int,
 		enum thermal_trip_type *);
-	int (*get_trip_temp) (struct thermal_zone_device *, int,
-			      unsigned long *);
-	int (*set_trip_temp) (struct thermal_zone_device *, int,
-			      unsigned long);
-	int (*get_trip_hyst) (struct thermal_zone_device *, int,
-			      unsigned long *);
-	int (*set_trip_hyst) (struct thermal_zone_device *, int,
-			      unsigned long);
-	int (*get_crit_temp) (struct thermal_zone_device *, unsigned long *);
-	int (*set_emul_temp) (struct thermal_zone_device *, unsigned long);
+	int (*get_trip_temp) (struct thermal_zone_device *, int, int *);
+	int (*set_trip_temp) (struct thermal_zone_device *, int, int);
+	int (*get_trip_hyst) (struct thermal_zone_device *, int, int *);
+	int (*set_trip_hyst) (struct thermal_zone_device *, int, int);
+	int (*get_crit_temp) (struct thermal_zone_device *, int *);
+	int (*set_emul_temp) (struct thermal_zone_device *, int);
 	int (*get_trend) (struct thermal_zone_device *, int,
 			  enum thermal_trend *);
 	int (*notify) (struct thermal_zone_device *, int,
@@ -332,9 +328,9 @@ struct thermal_genl_event {
  *		   temperature.
  */
 struct thermal_zone_of_device_ops {
-	int (*get_temp)(void *, long *);
+	int (*get_temp)(void *, int *);
 	int (*get_trend)(void *, long *);
-	int (*set_emul_temp)(void *, unsigned long);
+	int (*set_emul_temp)(void *, int);
 };
 
 /**
@@ -406,7 +402,7 @@ thermal_of_cooling_device_register(struct device_node *np, char *, void *,
 				   const struct thermal_cooling_device_ops *);
 void thermal_cooling_device_unregister(struct thermal_cooling_device *);
 struct thermal_zone_device *thermal_zone_get_zone_by_name(const char *name);
-int thermal_zone_get_temp(struct thermal_zone_device *tz, unsigned long *temp);
+int thermal_zone_get_temp(struct thermal_zone_device *tz, int *temp);
 
 int get_tz_trend(struct thermal_zone_device *, int);
 struct thermal_instance *get_thermal_instance(struct thermal_zone_device *,
@@ -457,7 +453,7 @@ static inline struct thermal_zone_device *thermal_zone_get_zone_by_name(
 		const char *name)
 { return ERR_PTR(-ENODEV); }
 static inline int thermal_zone_get_temp(
-		struct thermal_zone_device *tz, unsigned long *temp)
+		struct thermal_zone_device *tz, int *temp)
 { return -ENODEV; }
 static inline int get_tz_trend(struct thermal_zone_device *tz, int trip)
 { return -ENODEV; }
-- 
2.1.4

WARNING: multiple messages have this Message-ID (diff)
From: Sascha Hauer <s.hauer@pengutronix.de>
To: linux-pm@vger.kernel.org
Cc: Sascha Hauer <s.hauer@pengutronix.de>,
	Zhang Rui <rui.zhang@intel.com>,
	Eduardo Valentin <edubezval@gmail.com>,
	linux-kernel@vger.kernel.org, Jean Delvare <jdelvare@suse.de>,
	Peter Feuerer <peter@piie.net>, Heiko Stuebner <heiko@sntech.de>,
	Lukasz Majewski <l.majewski@samsung.com>,
	Stephen Warren <swarren@wwwdotorg.org>,
	Thierry Reding <thierry.reding@gmail.com>,
	linux-acpi@vger.kernel.org, platform-driver-x86@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-omap@vger.kernel.org,
	linux-samsung-soc@vger.kernel.org,
	Guenter Roeck <linux@roeck-us.net>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Maxime Ripard <maxime.ripard@free-electrons.com>,
	Darren Hart <dvhart@infradead.org>,
	lm-sensors@lm-sensors.org
Subject: [lm-sensors] [PATCH] thermal: consistently use int for temperatures
Date: Mon, 06 Jul 2015 07:19:49 +0000	[thread overview]
Message-ID: <1436167189-29835-1-git-send-email-s.hauer@pengutronix.de> (raw)

VGhlIHRoZXJtYWwgY29kZSB1c2VzIGludCwgbG9uZyBhbmQgdW5zaWduZWQgbG9uZyBmb3IgdGVt
cGVyYXR1cmVzCmluIGRpZmZlcmVudCBwbGFjZXMuCgpVc2luZyBhbiB1bnNpZ25lZCB0eXBlIGxp
bWl0cyB0aGUgdGhlcm1hbCBmcmFtZXdvcmsgdG8gcG9zaXRpdmUKdGVtcGVyYXR1cmVzIHdpdGhv
dXQgbmVlZC4gQWxzbyBzZXZlcmFsIGRyaXZlcnMgY3VycmVudGx5IHdpbGwgcmVwb3J0CnRlbXBl
cmF0dXJlcyBuZWFyIFVJTlRfTUFYIGZvciB0ZW1wZXJhdHVyZXMgYmVsb3cgMMKwQy4gVGhpcyB3
aWxsIHByb2JhYmx5CmltbWVkaWF0ZWx5IHNodXQgdGhlIG1hY2hpbmUgZG93biBkdWUgdG8gb3Zl
cnRlbXBlcmF0dXJlIGlmIHN0YXJ0ZWQgYmVsb3cKMMKwQy4KCidsb25nJyBpcyA2NGJpdCBvbiBz
ZXZlcmFsIGFyY2hpdGVjdHVyZXMuIFRoaXMgaXMgbm90IG5lZWRlZCBzaW5jZSBJTlRfTUFYIMKw
bUMKaXMgYWJvdmUgdGhlIG1lbHRpbmcgcG9pbnQgb2YgYWxsIGtub3duIG1hdGVyaWFscy4KCkNv
bnNpc3RlbnRseSB1c2UgYSBwbGFpbiAnaW50JyBmb3IgdGVtcGVyYXR1cmVzIHRocm91Z2hvdXQg
dGhlIHRoZXJtYWwgY29kZSBhbmQKdGhlIGRyaXZlcnMuIFRoaXMgb25seSBjaGFuZ2VzIHRoZSBw
bGFjZXMgaW4gdGhlIGRyaXZlcnMgd2hlcmUgdGhlIHRlbXBlcmF0dXJlCmlzIHBhc3NlZCBhcm91
bmQgYXMgcG9pbnRlciwgd2hlbiBkcml2ZXJzIGludGVybmFsbHkgdXNlIGFub3RoZXIgdHlwZSB0
aGlzIGlzCm5vdCBjaGFuZ2VkLgoKU2lnbmVkLW9mZi1ieTogU2FzY2hhIEhhdWVyIDxzLmhhdWVy
QHBlbmd1dHJvbml4LmRlPgpDYzogWmhhbmcgUnVpIDxydWkuemhhbmdAaW50ZWwuY29tPgpDYzog
RWR1YXJkbyBWYWxlbnRpbiA8ZWR1YmV6dmFsQGdtYWlsLmNvbT4KQ2M6IGxpbnV4LXBtQHZnZXIu
a2VybmVsLm9yZwpDYzogbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZwpDYzogSmVhbiBEZWx2
YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgpDYzogUGV0ZXIgRmV1ZXJlciA8cGV0ZXJAcGlpZS5uZXQ+
CkNjOiBIZWlrbyBTdHVlYm5lciA8aGVpa29Ac250ZWNoLmRlPgpDYzogTHVrYXN6IE1hamV3c2tp
IDxsLm1hamV3c2tpQHNhbXN1bmcuY29tPgpDYzogU3RlcGhlbiBXYXJyZW4gPHN3YXJyZW5Ad3d3
ZG90b3JnLm9yZz4KQ2M6IFRoaWVycnkgUmVkaW5nIDx0aGllcnJ5LnJlZGluZ0BnbWFpbC5jb20+
CkNjOiBsaW51eC1hY3BpQHZnZXIua2VybmVsLm9yZwpDYzogcGxhdGZvcm0tZHJpdmVyLXg4NkB2
Z2VyLmtlcm5lbC5vcmcKQ2M6IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpD
YzogbGludXgtb21hcEB2Z2VyLmtlcm5lbC5vcmcKQ2M6IGxpbnV4LXNhbXN1bmctc29jQHZnZXIu
a2VybmVsLm9yZwpDYzogR3VlbnRlciBSb2VjayA8bGludXhAcm9lY2stdXMubmV0PgpDYzogUmFm
YWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2kubmV0PgpDYzogTWF4aW1lIFJpcGFyZCA8bWF4
aW1lLnJpcGFyZEBmcmVlLWVsZWN0cm9ucy5jb20+CkNjOiBEYXJyZW4gSGFydCA8ZHZoYXJ0QGlu
ZnJhZGVhZC5vcmc+CkNjOiBsbS1zZW5zb3JzQGxtLXNlbnNvcnMub3JnCi0tLQogZHJpdmVycy9h
Y3BpL3RoZXJtYWwuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMiArKysrKy0tLS0t
CiBkcml2ZXJzL2h3bW9uL2xtNzUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAy
ICstCiBkcml2ZXJzL2h3bW9uL250Y190aGVybWlzdG9yLmMgICAgICAgICAgICAgICAgICAgICB8
ICAyICstCiBkcml2ZXJzL2h3bW9uL3RtcDEwMi5jICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAyICstCiBkcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3N1bjRpLXRzLmMgICAgICAgICAg
ICAgICB8ICA4ICsrKy0tLS0KIGRyaXZlcnMvcGxhdGZvcm0veDg2L2FjZXJoZGYuYyAgICAgICAg
ICAgICAgICAgICAgIHwgIDkgKysrKy0tLS0KIGRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsX21p
ZF90aGVybWFsLmMgICAgICAgICAgIHwgIDkgKysrKy0tLS0KIGRyaXZlcnMvcG93ZXIvcG93ZXJf
c3VwcGx5X2NvcmUuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvdGhlcm1hbC9h
cm1hZGFfdGhlcm1hbC5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvdGhlcm1h
bC9kYjg1MDBfdGhlcm1hbC5jICAgICAgICAgICAgICAgICAgIHwgIDcgKysrLS0tCiBkcml2ZXJz
L3RoZXJtYWwvZG92ZV90aGVybWFsLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBkcml2
ZXJzL3RoZXJtYWwvZmFpcl9zaGFyZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBk
cml2ZXJzL3RoZXJtYWwvZ292X2JhbmdfYmFuZy5jICAgICAgICAgICAgICAgICAgICB8ICA1ICsr
LS0KIGRyaXZlcnMvdGhlcm1hbC9oaXNpX3RoZXJtYWwuYyAgICAgICAgICAgICAgICAgICAgIHwg
IDQgKystLQogZHJpdmVycy90aGVybWFsL2lteF90aGVybWFsLmMgICAgICAgICAgICAgICAgICAg
ICAgfCAyNyArKysrKysrKysrKy0tLS0tLS0tLS0tCiBkcml2ZXJzL3RoZXJtYWwvaW50MzQweF90
aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jICB8ICAyICstCiAuLi4vdGhlcm1hbC9pbnQzNDB4X3Ro
ZXJtYWwvaW50MzQweF90aGVybWFsX3pvbmUuYyB8IDEwICsrKystLS0tCiAuLi4vdGhlcm1hbC9p
bnQzNDB4X3RoZXJtYWwvaW50MzQweF90aGVybWFsX3pvbmUuaCB8ICA4ICsrKy0tLS0KIC4uLi9p
bnQzNDB4X3RoZXJtYWwvcHJvY2Vzc29yX3RoZXJtYWxfZGV2aWNlLmMgICAgIHwgIDQgKystLQog
ZHJpdmVycy90aGVybWFsL2ludGVsX3F1YXJrX2R0c190aGVybWFsLmMgICAgICAgICAgfCAxMyAr
KysrKy0tLS0tLQogZHJpdmVycy90aGVybWFsL2ludGVsX3NvY19kdHNfaW9zZi5jICAgICAgICAg
ICAgICAgfCAgOCArKystLS0tCiBkcml2ZXJzL3RoZXJtYWwva2lya3dvb2RfdGhlcm1hbC5jICAg
ICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL3RoZXJtYWwvb2YtdGhlcm1hbC5jICAgICAg
ICAgICAgICAgICAgICAgICB8IDE0ICsrKysrLS0tLS0tCiBkcml2ZXJzL3RoZXJtYWwvcG93ZXJf
YWxsb2NhdG9yLmMgICAgICAgICAgICAgICAgICB8IDE2ICsrKysrKy0tLS0tLS0KIGRyaXZlcnMv
dGhlcm1hbC9xY29tLXNwbWktdGVtcC1hbGFybS5jICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZl
cnMvdGhlcm1hbC9yY2FyX3RoZXJtYWwuYyAgICAgICAgICAgICAgICAgICAgIHwgIDcgKysrLS0t
CiBkcml2ZXJzL3RoZXJtYWwvcm9ja2NoaXBfdGhlcm1hbC5jICAgICAgICAgICAgICAgICB8IDEw
ICsrKystLS0tCiBkcml2ZXJzL3RoZXJtYWwvc2Ftc3VuZy9leHlub3NfdG11LmMgICAgICAgICAg
ICAgICB8IDIzICsrKysrKysrKy0tLS0tLS0tLQogZHJpdmVycy90aGVybWFsL3NwZWFyX3RoZXJt
YWwuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy90aGVybWFsL3N0L3N0X3Ro
ZXJtYWwuYyAgICAgICAgICAgICAgICAgICAgfCAgNSArKy0tCiBkcml2ZXJzL3RoZXJtYWwvc3Rl
cF93aXNlLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KIGRyaXZlcnMvdGhlcm1h
bC90ZWdyYV9zb2N0aGVybS5jICAgICAgICAgICAgICAgICAgIHwgIDQgKystLQogZHJpdmVycy90
aGVybWFsL3RoZXJtYWxfY29yZS5jICAgICAgICAgICAgICAgICAgICAgfCAyNiArKysrKysrKysr
LS0tLS0tLS0tLS0KIGRyaXZlcnMvdGhlcm1hbC90aGVybWFsX2h3bW9uLmMgICAgICAgICAgICAg
ICAgICAgIHwgMTAgKysrKy0tLS0KIGRyaXZlcnMvdGhlcm1hbC90aS1zb2MtdGhlcm1hbC90aS10
aGVybWFsLWNvbW1vbi5jIHwgMTAgKysrKy0tLS0KIGRyaXZlcnMvdGhlcm1hbC94ODZfcGtnX3Rl
bXBfdGhlcm1hbC5jICAgICAgICAgICAgIHwgMTAgKysrKy0tLS0KIGluY2x1ZGUvbGludXgvdGhl
cm1hbC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjYgKysrKysrKysrLS0tLS0tLS0t
LS0tCiAzNyBmaWxlcyBjaGFuZ2VkLCAxNDggaW5zZXJ0aW9ucygrKSwgMTYzIGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS90aGVybWFsLmMgYi9kcml2ZXJzL2FjcGkvdGhl
cm1hbC5jCmluZGV4IDZkNGU0NGUuLmU2NmFkMjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS90
aGVybWFsLmMKKysrIGIvZHJpdmVycy9hY3BpL3RoZXJtYWwuYwpAQCAtNTI5LDggKzUyOSw3IEBA
IHN0YXRpYyB2b2lkIGFjcGlfdGhlcm1hbF9jaGVjayh2b2lkICpkYXRhKQogCiAvKiBzeXMgSS9G
IGZvciBnZW5lcmljIHRoZXJtYWwgc3lzZnMgc3VwcG9ydCAqLwogCi1zdGF0aWMgaW50IHRoZXJt
YWxfZ2V0X3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnRoZXJtYWwsCi0JCQkgICAg
dW5zaWduZWQgbG9uZyAqdGVtcCkKK3N0YXRpYyBpbnQgdGhlcm1hbF9nZXRfdGVtcChzdHJ1Y3Qg
dGhlcm1hbF96b25lX2RldmljZSAqdGhlcm1hbCwgaW50ICp0ZW1wKQogewogCXN0cnVjdCBhY3Bp
X3RoZXJtYWwgKnR6ID0gdGhlcm1hbC0+ZGV2ZGF0YTsKIAlpbnQgcmVzdWx0OwpAQCAtNjM3LDcg
KzYzNiw3IEBAIHN0YXRpYyBpbnQgdGhlcm1hbF9nZXRfdHJpcF90eXBlKHN0cnVjdCB0aGVybWFs
X3pvbmVfZGV2aWNlICp0aGVybWFsLAogfQogCiBzdGF0aWMgaW50IHRoZXJtYWxfZ2V0X3RyaXBf
dGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdGhlcm1hbCwKLQkJCQkgaW50IHRyaXAs
IHVuc2lnbmVkIGxvbmcgKnRlbXApCisJCQkJIGludCB0cmlwLCBpbnQgKnRlbXApCiB7CiAJc3Ry
dWN0IGFjcGlfdGhlcm1hbCAqdHogPSB0aGVybWFsLT5kZXZkYXRhOwogCWludCBpOwpAQCAtNjkw
LDcgKzY4OSw4IEBAIHN0YXRpYyBpbnQgdGhlcm1hbF9nZXRfdHJpcF90ZW1wKHN0cnVjdCB0aGVy
bWFsX3pvbmVfZGV2aWNlICp0aGVybWFsLAogfQogCiBzdGF0aWMgaW50IHRoZXJtYWxfZ2V0X2Ny
aXRfdGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdGhlcm1hbCwKLQkJCQl1bnNpZ25l
ZCBsb25nICp0ZW1wZXJhdHVyZSkgeworCQkJCWludCAqdGVtcGVyYXR1cmUpCit7CiAJc3RydWN0
IGFjcGlfdGhlcm1hbCAqdHogPSB0aGVybWFsLT5kZXZkYXRhOwogCiAJaWYgKHR6LT50cmlwcy5j
cml0aWNhbC5mbGFncy52YWxpZCkgewpAQCAtNzEzLDggKzcxMyw4IEBAIHN0YXRpYyBpbnQgdGhl
cm1hbF9nZXRfdHJlbmQoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnRoZXJtYWwsCiAJCXJl
dHVybiAtRUlOVkFMOwogCiAJaWYgKHR5cGUgPT0gVEhFUk1BTF9UUklQX0FDVElWRSkgewotCQl1
bnNpZ25lZCBsb25nIHRyaXBfdGVtcDsKLQkJdW5zaWduZWQgbG9uZyB0ZW1wID0gREVDSV9LRUxW
SU5fVE9fTUlMTElDRUxTSVVTX1dJVEhfT0ZGU0VUKAorCQlpbnQgdHJpcF90ZW1wOworCQlpbnQg
dGVtcCA9IERFQ0lfS0VMVklOX1RPX01JTExJQ0VMU0lVU19XSVRIX09GRlNFVCgKIAkJCQkJdHot
PnRlbXBlcmF0dXJlLCB0ei0+a2VsdmluX29mZnNldCk7CiAJCWlmICh0aGVybWFsX2dldF90cmlw
X3RlbXAodGhlcm1hbCwgdHJpcCwgJnRyaXBfdGVtcCkpCiAJCQlyZXR1cm4gLUVJTlZBTDsKZGlm
ZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG03NS5jIGIvZHJpdmVycy9od21vbi9sbTc1LmMKaW5k
ZXggZmU0MWQ1YS4uZTRlNTdiYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTc1LmMKKysr
IGIvZHJpdmVycy9od21vbi9sbTc1LmMKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgaW5saW5l
IGxvbmcgbG03NV9yZWdfdG9fbWMoczE2IHRlbXAsIHU4IHJlc29sdXRpb24pCiAKIC8qIHN5c2Zz
IGF0dHJpYnV0ZXMgZm9yIGh3bW9uICovCiAKLXN0YXRpYyBpbnQgbG03NV9yZWFkX3RlbXAodm9p
ZCAqZGV2LCBsb25nICp0ZW1wKQorc3RhdGljIGludCBsbTc1X3JlYWRfdGVtcCh2b2lkICpkZXYs
IGludCAqdGVtcCkKIHsKIAlzdHJ1Y3QgbG03NV9kYXRhICpkYXRhID0gbG03NV91cGRhdGVfZGV2
aWNlKGRldik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbnRjX3RoZXJtaXN0b3IuYyBi
L2RyaXZlcnMvaHdtb24vbnRjX3RoZXJtaXN0b3IuYwppbmRleCBkYzBiNzZjLi5mZWVkMzA2IDEw
MDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL250Y190aGVybWlzdG9yLmMKKysrIGIvZHJpdmVycy9o
d21vbi9udGNfdGhlcm1pc3Rvci5jCkBAIC00NzcsNyArNDc3LDcgQEAgc3RhdGljIGludCBudGNf
dGhlcm1pc3Rvcl9nZXRfb2htKHN0cnVjdCBudGNfZGF0YSAqZGF0YSkKIAlyZXR1cm4gLUVJTlZB
TDsKIH0KIAotc3RhdGljIGludCBudGNfcmVhZF90ZW1wKHZvaWQgKmRldiwgbG9uZyAqdGVtcCkK
K3N0YXRpYyBpbnQgbnRjX3JlYWRfdGVtcCh2b2lkICpkZXYsIGludCAqdGVtcCkKIHsKIAlzdHJ1
Y3QgbnRjX2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKIAlpbnQgb2htOwpkaWZm
IC0tZ2l0IGEvZHJpdmVycy9od21vbi90bXAxMDIuYyBiL2RyaXZlcnMvaHdtb24vdG1wMTAyLmMK
aW5kZXggOWRhMjczNS4uNjU0ODI2MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi90bXAxMDIu
YworKysgYi9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jCkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyBz
dHJ1Y3QgdG1wMTAyICp0bXAxMDJfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJ
cmV0dXJuIHRtcDEwMjsKIH0KIAotc3RhdGljIGludCB0bXAxMDJfcmVhZF90ZW1wKHZvaWQgKmRl
diwgbG9uZyAqdGVtcCkKK3N0YXRpYyBpbnQgdG1wMTAyX3JlYWRfdGVtcCh2b2lkICpkZXYsIGlu
dCAqdGVtcCkKIHsKIAlzdHJ1Y3QgdG1wMTAyICp0bXAxMDIgPSB0bXAxMDJfdXBkYXRlX2Rldmlj
ZShkZXYpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3N1bjRpLXRz
LmMgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3N1bjRpLXRzLmMKaW5kZXggYzAxMTY5OS4u
NDg1Nzk0MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9zdW40aS10cy5j
CisrKyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vc3VuNGktdHMuYwpAQCAtMTkxLDcgKzE5
MSw3IEBAIHN0YXRpYyB2b2lkIHN1bjRpX3RzX2Nsb3NlKHN0cnVjdCBpbnB1dF9kZXYgKmRldikK
IAl3cml0ZWwoVEVNUF9JUlFfRU4oMSksIHRzLT5iYXNlICsgVFBfSU5UX0ZJRk9DKTsKIH0KIAot
c3RhdGljIGludCBzdW40aV9nZXRfdGVtcChjb25zdCBzdHJ1Y3Qgc3VuNGlfdHNfZGF0YSAqdHMs
IGxvbmcgKnRlbXApCitzdGF0aWMgaW50IHN1bjRpX2dldF90ZW1wKGNvbnN0IHN0cnVjdCBzdW40
aV90c19kYXRhICp0cywgaW50ICp0ZW1wKQogewogCS8qIE5vIHRlbXBfZGF0YSB1bnRpbCB0aGUg
Zmlyc3QgaXJxICovCiAJaWYgKHRzLT50ZW1wX2RhdGEgPT0gLTEpCkBAIC0yMDIsNyArMjAyLDcg
QEAgc3RhdGljIGludCBzdW40aV9nZXRfdGVtcChjb25zdCBzdHJ1Y3Qgc3VuNGlfdHNfZGF0YSAq
dHMsIGxvbmcgKnRlbXApCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgc3VuNGlfZ2V0X3R6
X3RlbXAodm9pZCAqZGF0YSwgbG9uZyAqdGVtcCkKK3N0YXRpYyBpbnQgc3VuNGlfZ2V0X3R6X3Rl
bXAodm9pZCAqZGF0YSwgaW50ICp0ZW1wKQogewogCXJldHVybiBzdW40aV9nZXRfdGVtcChkYXRh
LCB0ZW1wKTsKIH0KQEAgLTIxNSwxNCArMjE1LDE0IEBAIHN0YXRpYyBzc2l6ZV90IHNob3dfdGVt
cChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICpkZXZhdHRyLAog
CQkJIGNoYXIgKmJ1ZikKIHsKIAlzdHJ1Y3Qgc3VuNGlfdHNfZGF0YSAqdHMgPSBkZXZfZ2V0X2Ry
dmRhdGEoZGV2KTsKLQlsb25nIHRlbXA7CisJaW50IHRlbXA7CiAJaW50IGVycm9yOwogCiAJZXJy
b3IgPSBzdW40aV9nZXRfdGVtcCh0cywgJnRlbXApOwogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVy
cm9yOwogCi0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWxkXG4iLCB0ZW1wKTsKKwlyZXR1cm4gc3By
aW50ZihidWYsICIlZFxuIiwgdGVtcCk7CiB9CiAKIHN0YXRpYyBzc2l6ZV90IHNob3dfdGVtcF9s
YWJlbChzdHJ1Y3QgZGV2aWNlICpkZXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BsYXRmb3JtL3g4
Ni9hY2VyaGRmLmMgYi9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9hY2VyaGRmLmMKaW5kZXggMWVmMDJk
YS4uNDYwZmE2NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wbGF0Zm9ybS94ODYvYWNlcmhkZi5jCisr
KyBiL2RyaXZlcnMvcGxhdGZvcm0veDg2L2FjZXJoZGYuYwpAQCAtMzQ2LDggKzM0Niw3IEBAIHN0
YXRpYyB2b2lkIGFjZXJoZGZfY2hlY2tfcGFyYW0oc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2Ug
KnRoZXJtYWwpCiAgKiBhcyBsYXRlIGFzIHRoZSBwb2xsaW5nIGludGVydmFsIGlzIHNpbmNlIHdl
IGNhbid0IGRvIHRoYXQgaW4gdGhlIHJlc3BlY3RpdmUKICAqIGFjY2Vzc29ycyBvZiB0aGUgbW9k
dWxlIHBhcmFtZXRlcnMuCiAgKi8KLXN0YXRpYyBpbnQgYWNlcmhkZl9nZXRfZWNfdGVtcChzdHJ1
Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdGhlcm1hbCwKLQkJCSAgICAgICB1bnNpZ25lZCBsb25n
ICp0KQorc3RhdGljIGludCBhY2VyaGRmX2dldF9lY190ZW1wKHN0cnVjdCB0aGVybWFsX3pvbmVf
ZGV2aWNlICp0aGVybWFsLCBpbnQgKnQpCiB7CiAJaW50IHRlbXAsIGVyciA9IDA7CiAKQEAgLTQ1
Myw3ICs0NTIsNyBAQCBzdGF0aWMgaW50IGFjZXJoZGZfZ2V0X3RyaXBfdHlwZShzdHJ1Y3QgdGhl
cm1hbF96b25lX2RldmljZSAqdGhlcm1hbCwgaW50IHRyaXAsCiB9CiAKIHN0YXRpYyBpbnQgYWNl
cmhkZl9nZXRfdHJpcF9oeXN0KHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0aGVybWFsLCBp
bnQgdHJpcCwKLQkJCQkgdW5zaWduZWQgbG9uZyAqdGVtcCkKKwkJCQkgaW50ICp0ZW1wKQogewog
CWlmICh0cmlwICE9IDApCiAJCXJldHVybiAtRUlOVkFMOwpAQCAtNDY0LDcgKzQ2Myw3IEBAIHN0
YXRpYyBpbnQgYWNlcmhkZl9nZXRfdHJpcF9oeXN0KHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNl
ICp0aGVybWFsLCBpbnQgdHJpcCwKIH0KIAogc3RhdGljIGludCBhY2VyaGRmX2dldF90cmlwX3Rl
bXAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnRoZXJtYWwsIGludCB0cmlwLAotCQkJCSB1
bnNpZ25lZCBsb25nICp0ZW1wKQorCQkJCSBpbnQgKnRlbXApCiB7CiAJaWYgKHRyaXAgPT0gMCkK
IAkJKnRlbXAgPSBmYW5vbjsKQEAgLTQ3Nyw3ICs0NzYsNyBAQCBzdGF0aWMgaW50IGFjZXJoZGZf
Z2V0X3RyaXBfdGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdGhlcm1hbCwgaW50IHRy
aXAsCiB9CiAKIHN0YXRpYyBpbnQgYWNlcmhkZl9nZXRfY3JpdF90ZW1wKHN0cnVjdCB0aGVybWFs
X3pvbmVfZGV2aWNlICp0aGVybWFsLAotCQkJCSB1bnNpZ25lZCBsb25nICp0ZW1wZXJhdHVyZSkK
KwkJCQkgaW50ICp0ZW1wZXJhdHVyZSkKIHsKIAkqdGVtcGVyYXR1cmUgPSBBQ0VSSERGX1RFTVBf
Q1JJVDsKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVs
X21pZF90aGVybWFsLmMgYi9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbF9taWRfdGhlcm1hbC5j
CmluZGV4IDA5NDRlODMuLjlmNzEzYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGxhdGZvcm0veDg2
L2ludGVsX21pZF90aGVybWFsLmMKKysrIGIvZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWxfbWlk
X3RoZXJtYWwuYwpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyBpbnQgaXNfdmFsaWRfYWRjKHVp
bnQxNl90IGFkY192YWwsIHVpbnQxNl90IG1pbiwgdWludDE2X3QgbWF4KQogICogdG8gYWNoaWV2
ZSB2ZXJ5IGNsb3NlIGFwcHJveGltYXRlIHRlbXAgdmFsdWUgd2l0aCBsZXNzIHRoYW4KICAqIDAu
NUMgZXJyb3IKICAqLwotc3RhdGljIGludCBhZGNfdG9fdGVtcChpbnQgZGlyZWN0LCB1aW50MTZf
dCBhZGNfdmFsLCB1bnNpZ25lZCBsb25nICp0cCkKK3N0YXRpYyBpbnQgYWRjX3RvX3RlbXAoaW50
IGRpcmVjdCwgdWludDE2X3QgYWRjX3ZhbCwgaW50ICp0cCkKIHsKIAlpbnQgdGVtcDsKIApAQCAt
MTc0LDE0ICsxNzQsMTMgQEAgc3RhdGljIGludCBhZGNfdG9fdGVtcChpbnQgZGlyZWN0LCB1aW50
MTZfdCBhZGNfdmFsLCB1bnNpZ25lZCBsb25nICp0cCkKICAqCiAgKiBDYW4gc2xlZXAKICAqLwot
c3RhdGljIGludCBtaWRfcmVhZF90ZW1wKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0emQs
IHVuc2lnbmVkIGxvbmcgKnRlbXApCitzdGF0aWMgaW50IG1pZF9yZWFkX3RlbXAoc3RydWN0IHRo
ZXJtYWxfem9uZV9kZXZpY2UgKnR6ZCwgaW50ICp0ZW1wKQogewogCXN0cnVjdCB0aGVybWFsX2Rl
dmljZV9pbmZvICp0ZF9pbmZvID0gdHpkLT5kZXZkYXRhOwogCXVpbnQxNl90IGFkY192YWwsIGFk
ZHI7CiAJdWludDhfdCBkYXRhID0gMDsKIAlpbnQgcmV0OwotCXVuc2lnbmVkIGxvbmcgY3Vycl90
ZW1wOwotCisJaW50IGN1cnJfdGVtcDsKIAogCWFkZHIgPSB0ZF9pbmZvLT5jaG5sX2FkZHI7CiAK
QEAgLTQ1Myw3ICs0NTIsNyBAQCBzdGF0aWMgU0lNUExFX0RFVl9QTV9PUFMobWlkX3RoZXJtYWxf
cG0sCiAgKgogICogQ2FuIHNsZWVwCiAgKi8KLXN0YXRpYyBpbnQgcmVhZF9jdXJyX3RlbXAoc3Ry
dWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6ZCwgdW5zaWduZWQgbG9uZyAqdGVtcCkKK3N0YXRp
YyBpbnQgcmVhZF9jdXJyX3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6ZCwgaW50
ICp0ZW1wKQogewogCVdBUk5fT04odHpkID09IE5VTEwpOwogCXJldHVybiBtaWRfcmVhZF90ZW1w
KHR6ZCwgdGVtcCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bvd2VyL3Bvd2VyX3N1cHBseV9jb3Jl
LmMgYi9kcml2ZXJzL3Bvd2VyL3Bvd2VyX3N1cHBseV9jb3JlLmMKaW5kZXggODY5Mjg0Yy4uNDU2
OTg3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wb3dlci9wb3dlcl9zdXBwbHlfY29yZS5jCisrKyBi
L2RyaXZlcnMvcG93ZXIvcG93ZXJfc3VwcGx5X2NvcmUuYwpAQCAtNTU3LDcgKzU1Nyw3IEBAIEVY
UE9SVF9TWU1CT0xfR1BMKHBvd2VyX3N1cHBseV91bnJlZ19ub3RpZmllcik7CiAKICNpZmRlZiBD
T05GSUdfVEhFUk1BTAogc3RhdGljIGludCBwb3dlcl9zdXBwbHlfcmVhZF90ZW1wKHN0cnVjdCB0
aGVybWFsX3pvbmVfZGV2aWNlICp0emQsCi0JCXVuc2lnbmVkIGxvbmcgKnRlbXApCisJCWludCAq
dGVtcCkKIHsKIAlzdHJ1Y3QgcG93ZXJfc3VwcGx5ICpwc3k7CiAJdW5pb24gcG93ZXJfc3VwcGx5
X3Byb3B2YWwgdmFsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90aGVybWFsL2FybWFkYV90aGVybWFs
LmMgYi9kcml2ZXJzL3RoZXJtYWwvYXJtYWRhX3RoZXJtYWwuYwppbmRleCAwMTI1NWZkLi4yNmI4
ZDMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RoZXJtYWwvYXJtYWRhX3RoZXJtYWwuYworKysgYi9k
cml2ZXJzL3RoZXJtYWwvYXJtYWRhX3RoZXJtYWwuYwpAQCAtMTU1LDcgKzE1NSw3IEBAIHN0YXRp
YyBib29sIGFybWFkYV9pc192YWxpZChzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxfcHJpdiAqcHJpdikK
IH0KIAogc3RhdGljIGludCBhcm1hZGFfZ2V0X3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZp
Y2UgKnRoZXJtYWwsCi0JCQkgIHVuc2lnbmVkIGxvbmcgKnRlbXApCisJCQkgIGludCAqdGVtcCkK
IHsKIAlzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxfcHJpdiAqcHJpdiA9IHRoZXJtYWwtPmRldmRhdGE7
CiAJdW5zaWduZWQgbG9uZyByZWc7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3RoZXJtYWwvZGI4NTAw
X3RoZXJtYWwuYyBiL2RyaXZlcnMvdGhlcm1hbC9kYjg1MDBfdGhlcm1hbC5jCmluZGV4IDJmYjI3
M2MuLjY1MmFjZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGhlcm1hbC9kYjg1MDBfdGhlcm1hbC5j
CisrKyBiL2RyaXZlcnMvdGhlcm1hbC9kYjg1MDBfdGhlcm1hbC5jCkBAIC0xMDcsOCArMTA3LDcg
QEAgc3RhdGljIGludCBkYjg1MDBfY2Rldl91bmJpbmQoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZp
Y2UgKnRoZXJtYWwsCiB9CiAKIC8qIENhbGxiYWNrIHRvIGdldCBjdXJyZW50IHRlbXBlcmF0dXJl
ICovCi1zdGF0aWMgaW50IGRiODUwMF9zeXNfZ2V0X3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9k
ZXZpY2UgKnRoZXJtYWwsCi0JCXVuc2lnbmVkIGxvbmcgKnRlbXApCitzdGF0aWMgaW50IGRiODUw
MF9zeXNfZ2V0X3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnRoZXJtYWwsIGludCAq
dGVtcCkKIHsKIAlzdHJ1Y3QgZGI4NTAwX3RoZXJtYWxfem9uZSAqcHpvbmUgPSB0aGVybWFsLT5k
ZXZkYXRhOwogCkBAIC0xODAsNyArMTc5LDcgQEAgc3RhdGljIGludCBkYjg1MDBfc3lzX2dldF90
cmlwX3R5cGUoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnRoZXJtYWwsCiAKIC8qIENhbGxi
YWNrIHRvIGdldCB0cmlwIHBvaW50IHRlbXBlcmF0dXJlICovCiBzdGF0aWMgaW50IGRiODUwMF9z
eXNfZ2V0X3RyaXBfdGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdGhlcm1hbCwKLQkJ
aW50IHRyaXAsIHVuc2lnbmVkIGxvbmcgKnRlbXApCisJCWludCB0cmlwLCBpbnQgKnRlbXApCiB7
CiAJc3RydWN0IGRiODUwMF90aGVybWFsX3pvbmUgKnB6b25lID0gdGhlcm1hbC0+ZGV2ZGF0YTsK
IAlzdHJ1Y3QgZGI4NTAwX3Roc2Vuc19wbGF0Zm9ybV9kYXRhICpwdHJpcHMgPSBwem9uZS0+dHJp
cF90YWI7CkBAIC0xOTUsNyArMTk0LDcgQEAgc3RhdGljIGludCBkYjg1MDBfc3lzX2dldF90cmlw
X3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnRoZXJtYWwsCiAKIC8qIENhbGxiYWNr
IHRvIGdldCBjcml0aWNhbCB0cmlwIHBvaW50IHRlbXBlcmF0dXJlICovCiBzdGF0aWMgaW50IGRi
ODUwMF9zeXNfZ2V0X2NyaXRfdGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdGhlcm1h
bCwKLQkJdW5zaWduZWQgbG9uZyAqdGVtcCkKKwkJaW50ICp0ZW1wKQogewogCXN0cnVjdCBkYjg1
MDBfdGhlcm1hbF96b25lICpwem9uZSA9IHRoZXJtYWwtPmRldmRhdGE7CiAJc3RydWN0IGRiODUw
MF90aHNlbnNfcGxhdGZvcm1fZGF0YSAqcHRyaXBzID0gcHpvbmUtPnRyaXBfdGFiOwpkaWZmIC0t
Z2l0IGEvZHJpdmVycy90aGVybWFsL2RvdmVfdGhlcm1hbC5jIGIvZHJpdmVycy90aGVybWFsL2Rv
dmVfdGhlcm1hbC5jCmluZGV4IDA5ZjZlMzAuLmEwYmM5ZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv
dGhlcm1hbC9kb3ZlX3RoZXJtYWwuYworKysgYi9kcml2ZXJzL3RoZXJtYWwvZG92ZV90aGVybWFs
LmMKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIGludCBkb3ZlX2luaXRfc2Vuc29yKGNvbnN0IHN0
cnVjdCBkb3ZlX3RoZXJtYWxfcHJpdiAqcHJpdikKIH0KIAogc3RhdGljIGludCBkb3ZlX2dldF90
ZW1wKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0aGVybWFsLAotCQkJICB1bnNpZ25lZCBs
b25nICp0ZW1wKQorCQkJICBpbnQgKnRlbXApCiB7CiAJdW5zaWduZWQgbG9uZyByZWc7CiAJc3Ry
dWN0IGRvdmVfdGhlcm1hbF9wcml2ICpwcml2ID0gdGhlcm1hbC0+ZGV2ZGF0YTsKZGlmZiAtLWdp
dCBhL2RyaXZlcnMvdGhlcm1hbC9mYWlyX3NoYXJlLmMgYi9kcml2ZXJzL3RoZXJtYWwvZmFpcl9z
aGFyZS5jCmluZGV4IGMyYzEwYmIuLjM0ZmUzNjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGhlcm1h
bC9mYWlyX3NoYXJlLmMKKysrIGIvZHJpdmVycy90aGVybWFsL2ZhaXJfc2hhcmUuYwpAQCAtMzQs
NyArMzQsNyBAQAogc3RhdGljIGludCBnZXRfdHJpcF9sZXZlbChzdHJ1Y3QgdGhlcm1hbF96b25l
X2RldmljZSAqdHopCiB7CiAJaW50IGNvdW50ID0gMDsKLQl1bnNpZ25lZCBsb25nIHRyaXBfdGVt
cDsKKwlpbnQgdHJpcF90ZW1wOwogCWVudW0gdGhlcm1hbF90cmlwX3R5cGUgdHJpcF90eXBlOwog
CiAJaWYgKHR6LT50cmlwcyA9PSAwIHx8ICF0ei0+b3BzLT5nZXRfdHJpcF90ZW1wKQpkaWZmIC0t
Z2l0IGEvZHJpdmVycy90aGVybWFsL2dvdl9iYW5nX2JhbmcuYyBiL2RyaXZlcnMvdGhlcm1hbC9n
b3ZfYmFuZ19iYW5nLmMKaW5kZXggYzVkZDc2Yi4uNzA4MzZjNSAxMDA2NDQKLS0tIGEvZHJpdmVy
cy90aGVybWFsL2dvdl9iYW5nX2JhbmcuYworKysgYi9kcml2ZXJzL3RoZXJtYWwvZ292X2Jhbmdf
YmFuZy5jCkBAIC0yNSwxNCArMjUsMTMgQEAKIAogc3RhdGljIHZvaWQgdGhlcm1hbF96b25lX3Ry
aXBfdXBkYXRlKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0eiwgaW50IHRyaXApCiB7Ci0J
bG9uZyB0cmlwX3RlbXA7Ci0JdW5zaWduZWQgbG9uZyB0cmlwX2h5c3Q7CisJaW50IHRyaXBfdGVt
cCwgdHJpcF9oeXN0OwogCXN0cnVjdCB0aGVybWFsX2luc3RhbmNlICppbnN0YW5jZTsKIAogCXR6
LT5vcHMtPmdldF90cmlwX3RlbXAodHosIHRyaXAsICZ0cmlwX3RlbXApOwogCXR6LT5vcHMtPmdl
dF90cmlwX2h5c3QodHosIHRyaXAsICZ0cmlwX2h5c3QpOwogCi0JZGV2X2RiZygmdHotPmRldmlj
ZSwgIlRyaXAlZFt0ZW1wPSVsZF06dGVtcD0lZDpoeXN0PSVsZFxuIiwKKwlkZXZfZGJnKCZ0ei0+
ZGV2aWNlLCAiVHJpcCVkW3RlbXA9JWRdOnRlbXA9JWQ6aHlzdD0lZFxuIiwKIAkJCQl0cmlwLCB0
cmlwX3RlbXAsIHR6LT50ZW1wZXJhdHVyZSwKIAkJCQl0cmlwX2h5c3QpOwogCmRpZmYgLS1naXQg
YS9kcml2ZXJzL3RoZXJtYWwvaGlzaV90aGVybWFsLmMgYi9kcml2ZXJzL3RoZXJtYWwvaGlzaV90
aGVybWFsLmMKaW5kZXggZDVkZDM1Ny4uNDlhYTA2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy90aGVy
bWFsL2hpc2lfdGhlcm1hbC5jCisrKyBiL2RyaXZlcnMvdGhlcm1hbC9oaXNpX3RoZXJtYWwuYwpA
QCAtMTU1LDcgKzE1NSw3IEBAIHN0YXRpYyB2b2lkIGhpc2lfdGhlcm1hbF9kaXNhYmxlX3NlbnNv
cihzdHJ1Y3QgaGlzaV90aGVybWFsX2RhdGEgKmRhdGEpCiAJbXV0ZXhfdW5sb2NrKCZkYXRhLT50
aGVybWFsX2xvY2spOwogfQogCi1zdGF0aWMgaW50IGhpc2lfdGhlcm1hbF9nZXRfdGVtcCh2b2lk
ICpfc2Vuc29yLCBsb25nICp0ZW1wKQorc3RhdGljIGludCBoaXNpX3RoZXJtYWxfZ2V0X3RlbXAo
dm9pZCAqX3NlbnNvciwgaW50ICp0ZW1wKQogewogCXN0cnVjdCBoaXNpX3RoZXJtYWxfc2Vuc29y
ICpzZW5zb3IgPSBfc2Vuc29yOwogCXN0cnVjdCBoaXNpX3RoZXJtYWxfZGF0YSAqZGF0YSA9IHNl
bnNvci0+dGhlcm1hbDsKQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGF0aWMgaW50IGhpc2lfdGhlcm1h
bF9nZXRfdGVtcCh2b2lkICpfc2Vuc29yLCBsb25nICp0ZW1wKQogCWRhdGEtPmlycV9iaW5kX3Nl
bnNvciA9IHNlbnNvcl9pZDsKIAltdXRleF91bmxvY2soJmRhdGEtPnRoZXJtYWxfbG9jayk7CiAK
LQlkZXZfZGJnKCZkYXRhLT5wZGV2LT5kZXYsICJpZD0lZCwgaXJxPSVkLCB0ZW1wPSVsZCwgdGhy
ZXM9JWRcbiIsCisJZGV2X2RiZygmZGF0YS0+cGRldi0+ZGV2LCAiaWQ9JWQsIGlycT0lZCwgdGVt
cD0lZCwgdGhyZXM9JWRcbiIsCiAJCXNlbnNvci0+aWQsIGRhdGEtPmlycV9lbmFibGVkLCAqdGVt
cCwgc2Vuc29yLT50aHJlc190ZW1wKTsKIAkvKgogCSAqIEJpbmQgaXJxIHRvIHNlbnNvciBmb3Ig
dHdvIGNhc2VzOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy90aGVybWFsL2lteF90aGVybWFsLmMgYi9k
cml2ZXJzL3RoZXJtYWwvaW14X3RoZXJtYWwuYwppbmRleCBmZGU0YzI4Li40YmVjMWQzIDEwMDY0
NAotLS0gYS9kcml2ZXJzL3RoZXJtYWwvaW14X3RoZXJtYWwuYworKysgYi9kcml2ZXJzL3RoZXJt
YWwvaW14X3RoZXJtYWwuYwpAQCAtOTgsMTAgKzk4LDEwIEBAIHN0cnVjdCBpbXhfdGhlcm1hbF9k
YXRhIHsKIAllbnVtIHRoZXJtYWxfZGV2aWNlX21vZGUgbW9kZTsKIAlzdHJ1Y3QgcmVnbWFwICp0
ZW1wbW9uOwogCXUzMiBjMSwgYzI7IC8qIFNlZSBmb3JtdWxhIGluIGlteF9nZXRfc2Vuc29yX2Rh
dGEoKSAqLwotCXVuc2lnbmVkIGxvbmcgdGVtcF9wYXNzaXZlOwotCXVuc2lnbmVkIGxvbmcgdGVt
cF9jcml0aWNhbDsKLQl1bnNpZ25lZCBsb25nIGFsYXJtX3RlbXA7Ci0JdW5zaWduZWQgbG9uZyBs
YXN0X3RlbXA7CisJaW50IHRlbXBfcGFzc2l2ZTsKKwlpbnQgdGVtcF9jcml0aWNhbDsKKwlpbnQg
YWxhcm1fdGVtcDsKKwlpbnQgbGFzdF90ZW1wOwogCWJvb2wgaXJxX2VuYWJsZWQ7CiAJaW50IGly
cTsKIAlzdHJ1Y3QgY2xrICp0aGVybWFsX2NsazsKQEAgLTEwOSw3ICsxMDksNyBAQCBzdHJ1Y3Qg
aW14X3RoZXJtYWxfZGF0YSB7CiB9OwogCiBzdGF0aWMgdm9pZCBpbXhfc2V0X3BhbmljX3RlbXAo
c3RydWN0IGlteF90aGVybWFsX2RhdGEgKmRhdGEsCi0JCQkgICAgICAgc2lnbmVkIGxvbmcgcGFu
aWNfdGVtcCkKKwkJCSAgICAgICBpbnQgcGFuaWNfdGVtcCkKIHsKIAlzdHJ1Y3QgcmVnbWFwICpt
YXAgPSBkYXRhLT50ZW1wbW9uOwogCWludCBjcml0aWNhbF92YWx1ZTsKQEAgLTEyMSw3ICsxMjEs
NyBAQCBzdGF0aWMgdm9pZCBpbXhfc2V0X3BhbmljX3RlbXAoc3RydWN0IGlteF90aGVybWFsX2Rh
dGEgKmRhdGEsCiB9CiAKIHN0YXRpYyB2b2lkIGlteF9zZXRfYWxhcm1fdGVtcChzdHJ1Y3QgaW14
X3RoZXJtYWxfZGF0YSAqZGF0YSwKLQkJCSAgICAgICBzaWduZWQgbG9uZyBhbGFybV90ZW1wKQor
CQkJICAgICAgIGludCBhbGFybV90ZW1wKQogewogCXN0cnVjdCByZWdtYXAgKm1hcCA9IGRhdGEt
PnRlbXBtb247CiAJaW50IGFsYXJtX3ZhbHVlOwpAQCAtMTMzLDcgKzEzMyw3IEBAIHN0YXRpYyB2
b2lkIGlteF9zZXRfYWxhcm1fdGVtcChzdHJ1Y3QgaW14X3RoZXJtYWxfZGF0YSAqZGF0YSwKIAkJ
CVRFTVBTRU5TRTBfQUxBUk1fVkFMVUVfU0hJRlQpOwogfQogCi1zdGF0aWMgaW50IGlteF9nZXRf
dGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHosIHVuc2lnbmVkIGxvbmcgKnRlbXAp
CitzdGF0aWMgaW50IGlteF9nZXRfdGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHos
IGludCAqdGVtcCkKIHsKIAlzdHJ1Y3QgaW14X3RoZXJtYWxfZGF0YSAqZGF0YSA9IHR6LT5kZXZk
YXRhOwogCXN0cnVjdCByZWdtYXAgKm1hcCA9IGRhdGEtPnRlbXBtb247CkBAIC0xODksMTMgKzE4
OSwxMyBAQCBzdGF0aWMgaW50IGlteF9nZXRfdGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2Rldmlj
ZSAqdHosIHVuc2lnbmVkIGxvbmcgKnRlbXApCiAJCWlmIChkYXRhLT5hbGFybV90ZW1wID09IGRh
dGEtPnRlbXBfY3JpdGljYWwgJiYKIAkJCSp0ZW1wIDwgZGF0YS0+dGVtcF9wYXNzaXZlKSB7CiAJ
CQlpbXhfc2V0X2FsYXJtX3RlbXAoZGF0YSwgZGF0YS0+dGVtcF9wYXNzaXZlKTsKLQkJCWRldl9k
YmcoJnR6LT5kZXZpY2UsICJ0aGVybWFsIGFsYXJtIG9mZjogVCA8ICVsdVxuIiwKKwkJCWRldl9k
YmcoJnR6LT5kZXZpY2UsICJ0aGVybWFsIGFsYXJtIG9mZjogVCA8ICVkXG4iLAogCQkJCWRhdGEt
PmFsYXJtX3RlbXAgLyAxMDAwKTsKIAkJfQogCX0KIAogCWlmICgqdGVtcCAhPSBkYXRhLT5sYXN0
X3RlbXApIHsKLQkJZGV2X2RiZygmdHotPmRldmljZSwgIm1pbGxpY2Vsc2l1czogJWxkXG4iLCAq
dGVtcCk7CisJCWRldl9kYmcoJnR6LT5kZXZpY2UsICJtaWxsaWNlbHNpdXM6ICVkXG4iLCAqdGVt
cCk7CiAJCWRhdGEtPmxhc3RfdGVtcCA9ICp0ZW1wOwogCX0KIApAQCAtMjYyLDggKzI2Miw3IEBA
IHN0YXRpYyBpbnQgaW14X2dldF90cmlwX3R5cGUoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2Ug
KnR6LCBpbnQgdHJpcCwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBpbXhfZ2V0X2NyaXRf
dGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHosCi0JCQkgICAgIHVuc2lnbmVkIGxv
bmcgKnRlbXApCitzdGF0aWMgaW50IGlteF9nZXRfY3JpdF90ZW1wKHN0cnVjdCB0aGVybWFsX3pv
bmVfZGV2aWNlICp0eiwgaW50ICp0ZW1wKQogewogCXN0cnVjdCBpbXhfdGhlcm1hbF9kYXRhICpk
YXRhID0gdHotPmRldmRhdGE7CiAKQEAgLTI3Miw3ICsyNzEsNyBAQCBzdGF0aWMgaW50IGlteF9n
ZXRfY3JpdF90ZW1wKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0eiwKIH0KIAogc3RhdGlj
IGludCBpbXhfZ2V0X3RyaXBfdGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHosIGlu
dCB0cmlwLAotCQkJICAgICB1bnNpZ25lZCBsb25nICp0ZW1wKQorCQkJICAgICBpbnQgKnRlbXAp
CiB7CiAJc3RydWN0IGlteF90aGVybWFsX2RhdGEgKmRhdGEgPSB0ei0+ZGV2ZGF0YTsKIApAQCAt
MjgyLDcgKzI4MSw3IEBAIHN0YXRpYyBpbnQgaW14X2dldF90cmlwX3RlbXAoc3RydWN0IHRoZXJt
YWxfem9uZV9kZXZpY2UgKnR6LCBpbnQgdHJpcCwKIH0KIAogc3RhdGljIGludCBpbXhfc2V0X3Ry
aXBfdGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHosIGludCB0cmlwLAotCQkJICAg
ICB1bnNpZ25lZCBsb25nIHRlbXApCisJCQkgICAgIGludCB0ZW1wKQogewogCXN0cnVjdCBpbXhf
dGhlcm1hbF9kYXRhICpkYXRhID0gdHotPmRldmRhdGE7CiAKQEAgLTQzNCw3ICs0MzMsNyBAQCBz
dGF0aWMgaXJxcmV0dXJuX3QgaW14X3RoZXJtYWxfYWxhcm1faXJxX3RocmVhZChpbnQgaXJxLCB2
b2lkICpkZXYpCiB7CiAJc3RydWN0IGlteF90aGVybWFsX2RhdGEgKmRhdGEgPSBkZXY7CiAKLQlk
ZXZfZGJnKCZkYXRhLT50ei0+ZGV2aWNlLCAiVEhFUk1BTCBBTEFSTTogVCA+ICVsdVxuIiwKKwlk
ZXZfZGJnKCZkYXRhLT50ei0+ZGV2aWNlLCAiVEhFUk1BTCBBTEFSTTogVCA+ICVkXG4iLAogCQlk
YXRhLT5hbGFybV90ZW1wIC8gMTAwMCk7CiAKIAl0aGVybWFsX3pvbmVfZGV2aWNlX3VwZGF0ZShk
YXRhLT50eik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3RoZXJtYWwvaW50MzQweF90aGVybWFsL2lu
dDM0MDBfdGhlcm1hbC5jIGIvZHJpdmVycy90aGVybWFsL2ludDM0MHhfdGhlcm1hbC9pbnQzNDAw
X3RoZXJtYWwuYwppbmRleCAwMzEwMThlLi41ODM2ZTU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Ro
ZXJtYWwvaW50MzQweF90aGVybWFsL2ludDM0MDBfdGhlcm1hbC5jCisrKyBiL2RyaXZlcnMvdGhl
cm1hbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQwMF90aGVybWFsLmMKQEAgLTE4Niw3ICsxODYsNyBA
QCBzdGF0aWMgaW50IGludDM0MDBfdGhlcm1hbF9ydW5fb3NjKGFjcGlfaGFuZGxlIGhhbmRsZSwK
IH0KIAogc3RhdGljIGludCBpbnQzNDAwX3RoZXJtYWxfZ2V0X3RlbXAoc3RydWN0IHRoZXJtYWxf
em9uZV9kZXZpY2UgKnRoZXJtYWwsCi0JCQl1bnNpZ25lZCBsb25nICp0ZW1wKQorCQkJaW50ICp0
ZW1wKQogewogCSp0ZW1wID0gMjAgKiAxMDAwOyAvKiBmYWtlZCB0ZW1wIHNlbnNvciB3aXRoIDIw
QyAqLwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90aGVybWFsL2ludDM0MHhfdGhl
cm1hbC9pbnQzNDB4X3RoZXJtYWxfem9uZS5jIGIvZHJpdmVycy90aGVybWFsL2ludDM0MHhfdGhl
cm1hbC9pbnQzNDB4X3RoZXJtYWxfem9uZS5jCmluZGV4IDFlMjUxMzMuLmI5YjI2NjYgMTAwNjQ0
Ci0tLSBhL2RyaXZlcnMvdGhlcm1hbC9pbnQzNDB4X3RoZXJtYWwvaW50MzQweF90aGVybWFsX3pv
bmUuYworKysgYi9kcml2ZXJzL3RoZXJtYWwvaW50MzQweF90aGVybWFsL2ludDM0MHhfdGhlcm1h
bF96b25lLmMKQEAgLTIwLDcgKzIwLDcgQEAKICNpbmNsdWRlICJpbnQzNDB4X3RoZXJtYWxfem9u
ZS5oIgogCiBzdGF0aWMgaW50IGludDM0MHhfdGhlcm1hbF9nZXRfem9uZV90ZW1wKHN0cnVjdCB0
aGVybWFsX3pvbmVfZGV2aWNlICp6b25lLAotCQkJCQkgdW5zaWduZWQgbG9uZyAqdGVtcCkKKwkJ
CQkJIGludCAqdGVtcCkKIHsKIAlzdHJ1Y3QgaW50MzR4X3RoZXJtYWxfem9uZSAqZCA9IHpvbmUt
PmRldmRhdGE7CiAJdW5zaWduZWQgbG9uZyBsb25nIHRtcDsKQEAgLTQ5LDcgKzQ5LDcgQEAgc3Rh
dGljIGludCBpbnQzNDB4X3RoZXJtYWxfZ2V0X3pvbmVfdGVtcChzdHJ1Y3QgdGhlcm1hbF96b25l
X2RldmljZSAqem9uZSwKIH0KIAogc3RhdGljIGludCBpbnQzNDB4X3RoZXJtYWxfZ2V0X3RyaXBf
dGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqem9uZSwKLQkJCQkJIGludCB0cmlwLCB1
bnNpZ25lZCBsb25nICp0ZW1wKQorCQkJCQkgaW50IHRyaXAsIGludCAqdGVtcCkKIHsKIAlzdHJ1
Y3QgaW50MzR4X3RoZXJtYWxfem9uZSAqZCA9IHpvbmUtPmRldmRhdGE7CiAJaW50IGk7CkBAIC0x
MTQsNyArMTE0LDcgQEAgc3RhdGljIGludCBpbnQzNDB4X3RoZXJtYWxfZ2V0X3RyaXBfdHlwZShz
dHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqem9uZSwKIH0KIAogc3RhdGljIGludCBpbnQzNDB4
X3RoZXJtYWxfc2V0X3RyaXBfdGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqem9uZSwK
LQkJCQkgICAgICBpbnQgdHJpcCwgdW5zaWduZWQgbG9uZyB0ZW1wKQorCQkJCSAgICAgIGludCB0
cmlwLCBpbnQgdGVtcCkKIHsKIAlzdHJ1Y3QgaW50MzR4X3RoZXJtYWxfem9uZSAqZCA9IHpvbmUt
PmRldmRhdGE7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwpAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRp
YyBpbnQgaW50MzQweF90aGVybWFsX3NldF90cmlwX3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9k
ZXZpY2UgKnpvbmUsCiAKIAogc3RhdGljIGludCBpbnQzNDB4X3RoZXJtYWxfZ2V0X3RyaXBfaHlz
dChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqem9uZSwKLQkJaW50IHRyaXAsIHVuc2lnbmVk
IGxvbmcgKnRlbXApCisJCWludCB0cmlwLCBpbnQgKnRlbXApCiB7CiAJc3RydWN0IGludDM0eF90
aGVybWFsX3pvbmUgKmQgPSB6b25lLT5kZXZkYXRhOwogCWFjcGlfc3RhdHVzIHN0YXR1czsKQEAg
LTE2Myw3ICsxNjMsNyBAQCBzdGF0aWMgc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2Vfb3BzIGlu
dDM0MHhfdGhlcm1hbF96b25lX29wcyA9IHsKIH07CiAKIHN0YXRpYyBpbnQgaW50MzQweF90aGVy
bWFsX2dldF90cmlwX2NvbmZpZyhhY3BpX2hhbmRsZSBoYW5kbGUsIGNoYXIgKm5hbWUsCi0JCQkJ
ICAgICAgdW5zaWduZWQgbG9uZyAqdGVtcCkKKwkJCQkgICAgICBpbnQgKnRlbXApCiB7CiAJdW5z
aWduZWQgbG9uZyBsb25nIHI7CiAJYWNwaV9zdGF0dXMgc3RhdHVzOwpkaWZmIC0tZ2l0IGEvZHJp
dmVycy90aGVybWFsL2ludDM0MHhfdGhlcm1hbC9pbnQzNDB4X3RoZXJtYWxfem9uZS5oIGIvZHJp
dmVycy90aGVybWFsL2ludDM0MHhfdGhlcm1hbC9pbnQzNDB4X3RoZXJtYWxfem9uZS5oCmluZGV4
IDlmMzhhYjcuLmFhYWRmNzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGhlcm1hbC9pbnQzNDB4X3Ro
ZXJtYWwvaW50MzQweF90aGVybWFsX3pvbmUuaAorKysgYi9kcml2ZXJzL3RoZXJtYWwvaW50MzQw
eF90aGVybWFsL2ludDM0MHhfdGhlcm1hbF96b25lLmgKQEAgLTIxLDcgKzIxLDcgQEAKICNkZWZp
bmUgSU5UMzQwWF9USEVSTUFMX01BWF9BQ1RfVFJJUF9DT1VOVAkxMAogCiBzdHJ1Y3QgYWN0aXZl
X3RyaXAgewotCXVuc2lnbmVkIGxvbmcgdGVtcDsKKwlpbnQgdGVtcDsKIAlpbnQgaWQ7CiAJYm9v
bCB2YWxpZDsKIH07CkBAIC0zMSwxMSArMzEsMTEgQEAgc3RydWN0IGludDM0eF90aGVybWFsX3pv
bmUgewogCXN0cnVjdCBhY3RpdmVfdHJpcCBhY3RfdHJpcHNbSU5UMzQwWF9USEVSTUFMX01BWF9B
Q1RfVFJJUF9DT1VOVF07CiAJdW5zaWduZWQgbG9uZyAqYXV4X3RyaXBzOwogCWludCBhdXhfdHJp
cF9ucjsKLQl1bnNpZ25lZCBsb25nIHBzdl90ZW1wOworCWludCBwc3ZfdGVtcDsKIAlpbnQgcHN2
X3RyaXBfaWQ7Ci0JdW5zaWduZWQgbG9uZyBjcnRfdGVtcDsKKwlpbnQgY3J0X3RlbXA7CiAJaW50
IGNydF90cmlwX2lkOwotCXVuc2lnbmVkIGxvbmcgaG90X3RlbXA7CisJaW50IGhvdF90ZW1wOwog
CWludCBob3RfdHJpcF9pZDsKIAlzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqem9uZTsKIAlz
dHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZV9vcHMgKm92ZXJyaWRlX29wczsKZGlmZiAtLWdpdCBh
L2RyaXZlcnMvdGhlcm1hbC9pbnQzNDB4X3RoZXJtYWwvcHJvY2Vzc29yX3RoZXJtYWxfZGV2aWNl
LmMgYi9kcml2ZXJzL3RoZXJtYWwvaW50MzQweF90aGVybWFsL3Byb2Nlc3Nvcl90aGVybWFsX2Rl
dmljZS5jCmluZGV4IDNkZjNkYzMuLmNjYzBhZDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGhlcm1h
bC9pbnQzNDB4X3RoZXJtYWwvcHJvY2Vzc29yX3RoZXJtYWxfZGV2aWNlLmMKKysrIGIvZHJpdmVy
cy90aGVybWFsL2ludDM0MHhfdGhlcm1hbC9wcm9jZXNzb3JfdGhlcm1hbF9kZXZpY2UuYwpAQCAt
MTQ1LDcgKzE0NSw3IEBAIHN0YXRpYyBpbnQgZ2V0X3RqbWF4KHZvaWQpCiAJcmV0dXJuIC1FSU5W
QUw7CiB9CiAKLXN0YXRpYyBpbnQgcmVhZF90ZW1wX21zcih1bnNpZ25lZCBsb25nICp0ZW1wKQor
c3RhdGljIGludCByZWFkX3RlbXBfbXNyKGludCAqdGVtcCkKIHsKIAlpbnQgY3B1OwogCXUzMiBl
YXgsIGVkeDsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBlcnJfcmV0OgogfQogCiBzdGF0aWMgaW50IHBy
b2NfdGhlcm1hbF9nZXRfem9uZV90ZW1wKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp6b25l
LAotCQkJCQkgdW5zaWduZWQgbG9uZyAqdGVtcCkKKwkJCQkJIGludCAqdGVtcCkKIHsKIAlpbnQg
cmV0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3RoZXJtYWwvaW50ZWxfcXVhcmtfZHRzX3RoZXJt
YWwuYyBiL2RyaXZlcnMvdGhlcm1hbC9pbnRlbF9xdWFya19kdHNfdGhlcm1hbC5jCmluZGV4IDQ0
MzRlYzguLjVlZDkwZTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGhlcm1hbC9pbnRlbF9xdWFya19k
dHNfdGhlcm1hbC5jCisrKyBiL2RyaXZlcnMvdGhlcm1hbC9pbnRlbF9xdWFya19kdHNfdGhlcm1h
bC5jCkBAIC0xODYsNyArMTg2LDcgQEAgc3RhdGljIGludCBzb2NfZHRzX2Rpc2FibGUoc3RydWN0
IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6ZCkKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50
IF9nZXRfdHJpcF90ZW1wKGludCB0cmlwLCB1bnNpZ25lZCBsb25nICp0ZW1wKQorc3RhdGljIGlu
dCBfZ2V0X3RyaXBfdGVtcChpbnQgdHJpcCwgaW50ICp0ZW1wKQogewogCWludCBzdGF0dXM7CiAJ
dTMyIG91dDsKQEAgLTIxMiwxOSArMjEyLDE4IEBAIHN0YXRpYyBpbnQgX2dldF90cmlwX3RlbXAo
aW50IHRyaXAsIHVuc2lnbmVkIGxvbmcgKnRlbXApCiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50IHN5
c19nZXRfdHJpcF90ZW1wKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0emQsCi0JCQkJaW50
IHRyaXAsIHVuc2lnbmVkIGxvbmcgKnRlbXApCisJCQkJaW50IHRyaXAsIGludCAqdGVtcCkKIHsK
IAlyZXR1cm4gX2dldF90cmlwX3RlbXAodHJpcCwgdGVtcCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
aW50IHN5c19nZXRfY3JpdF90ZW1wKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0emQsCi0J
CQkJdW5zaWduZWQgbG9uZyAqdGVtcCkKK3N0YXRpYyBpbmxpbmUgaW50IHN5c19nZXRfY3JpdF90
ZW1wKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0emQsIGludCAqdGVtcCkKIHsKIAlyZXR1
cm4gX2dldF90cmlwX3RlbXAoUVJLX0RUU19JRF9UUF9DUklUSUNBTCwgdGVtcCk7CiB9CiAKIHN0
YXRpYyBpbnQgdXBkYXRlX3RyaXBfdGVtcChzdHJ1Y3Qgc29jX3NlbnNvcl9lbnRyeSAqYXV4X2Vu
dHJ5LAotCQkJCWludCB0cmlwLCB1bnNpZ25lZCBsb25nIHRlbXApCisJCQkJaW50IHRyaXAsIGlu
dCB0ZW1wKQogewogCXUzMiBvdXQ7CiAJdTMyIHRlbXBfb3V0OwpAQCAtMjcyLDcgKzI3MSw3IEBA
IGZhaWxlZDoKIH0KIAogc3RhdGljIGlubGluZSBpbnQgc3lzX3NldF90cmlwX3RlbXAoc3RydWN0
IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6ZCwgaW50IHRyaXAsCi0JCQkJdW5zaWduZWQgbG9uZyB0
ZW1wKQorCQkJCWludCB0ZW1wKQogewogCXJldHVybiB1cGRhdGVfdHJpcF90ZW1wKHR6ZC0+ZGV2
ZGF0YSwgdHJpcCwgdGVtcCk7CiB9CkBAIC0yODksNyArMjg4LDcgQEAgc3RhdGljIGludCBzeXNf
Z2V0X3RyaXBfdHlwZShzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdGhlcm1hbCwKIH0KIAog
c3RhdGljIGludCBzeXNfZ2V0X2N1cnJfdGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAq
dHpkLAotCQkJCXVuc2lnbmVkIGxvbmcgKnRlbXApCisJCQkJaW50ICp0ZW1wKQogewogCXUzMiBv
dXQ7CiAJaW50IHJldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGhlcm1hbC9pbnRlbF9zb2NfZHRz
X2lvc2YuYyBiL2RyaXZlcnMvdGhlcm1hbC9pbnRlbF9zb2NfZHRzX2lvc2YuYwppbmRleCA0MmU0
YjZhLi41ODQxZDFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RoZXJtYWwvaW50ZWxfc29jX2R0c19p
b3NmLmMKKysrIGIvZHJpdmVycy90aGVybWFsL2ludGVsX3NvY19kdHNfaW9zZi5jCkBAIC04MCw3
ICs4MCw3IEBAIGVycl9yZXQ6CiB9CiAKIHN0YXRpYyBpbnQgc3lzX2dldF90cmlwX3RlbXAoc3Ry
dWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6ZCwgaW50IHRyaXAsCi0JCQkgICAgIHVuc2lnbmVk
IGxvbmcgKnRlbXApCisJCQkgICAgIGludCAqdGVtcCkKIHsKIAlpbnQgc3RhdHVzOwogCXUzMiBv
dXQ7CkBAIC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIGludCBzeXNfZ2V0X3RyaXBfdGVtcChzdHJ1
Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHpkLCBpbnQgdHJpcCwKIH0KIAogc3RhdGljIGludCB1
cGRhdGVfdHJpcF90ZW1wKHN0cnVjdCBpbnRlbF9zb2NfZHRzX3NlbnNvcl9lbnRyeSAqZHRzLAot
CQkJICAgIGludCB0aHJlc19pbmRleCwgdW5zaWduZWQgbG9uZyB0ZW1wLAorCQkJICAgIGludCB0
aHJlc19pbmRleCwgaW50IHRlbXAsCiAJCQkgICAgZW51bSB0aGVybWFsX3RyaXBfdHlwZSB0cmlw
X3R5cGUpCiB7CiAJaW50IHN0YXR1czsKQEAgLTE5Niw3ICsxOTYsNyBAQCBlcnJfcmVzdG9yZV9w
dHBzOgogfQogCiBzdGF0aWMgaW50IHN5c19zZXRfdHJpcF90ZW1wKHN0cnVjdCB0aGVybWFsX3pv
bmVfZGV2aWNlICp0emQsIGludCB0cmlwLAotCQkJICAgICB1bnNpZ25lZCBsb25nIHRlbXApCisJ
CQkgICAgIGludCB0ZW1wKQogewogCXN0cnVjdCBpbnRlbF9zb2NfZHRzX3NlbnNvcl9lbnRyeSAq
ZHRzID0gdHpkLT5kZXZkYXRhOwogCXN0cnVjdCBpbnRlbF9zb2NfZHRzX3NlbnNvcnMgKnNlbnNv
cnMgPSBkdHMtPnNlbnNvcnM7CkBAIC0yMjYsNyArMjI2LDcgQEAgc3RhdGljIGludCBzeXNfZ2V0
X3RyaXBfdHlwZShzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHpkLAogfQogCiBzdGF0aWMg
aW50IHN5c19nZXRfY3Vycl90ZW1wKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0emQsCi0J
CQkgICAgIHVuc2lnbmVkIGxvbmcgKnRlbXApCisJCQkgICAgIGludCAqdGVtcCkKIHsKIAlpbnQg
c3RhdHVzOwogCXUzMiBvdXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3RoZXJtYWwva2lya3dvb2Rf
dGhlcm1hbC5jIGIvZHJpdmVycy90aGVybWFsL2tpcmt3b29kX3RoZXJtYWwuYwppbmRleCAxMTA0
MWZlLi44OTIyMzY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3RoZXJtYWwva2lya3dvb2RfdGhlcm1h
bC5jCisrKyBiL2RyaXZlcnMvdGhlcm1hbC9raXJrd29vZF90aGVybWFsLmMKQEAgLTMzLDcgKzMz
LDcgQEAgc3RydWN0IGtpcmt3b29kX3RoZXJtYWxfcHJpdiB7CiB9OwogCiBzdGF0aWMgaW50IGtp
cmt3b29kX2dldF90ZW1wKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0aGVybWFsLAotCQkJ
ICB1bnNpZ25lZCBsb25nICp0ZW1wKQorCQkJICBpbnQgKnRlbXApCiB7CiAJdW5zaWduZWQgbG9u
ZyByZWc7CiAJc3RydWN0IGtpcmt3b29kX3RoZXJtYWxfcHJpdiAqcHJpdiA9IHRoZXJtYWwtPmRl
dmRhdGE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3RoZXJtYWwvb2YtdGhlcm1hbC5jIGIvZHJpdmVy
cy90aGVybWFsL29mLXRoZXJtYWwuYwppbmRleCBiMjk1YjJiLi40MmI3ZDQyIDEwMDY0NAotLS0g
YS9kcml2ZXJzL3RoZXJtYWwvb2YtdGhlcm1hbC5jCisrKyBiL2RyaXZlcnMvdGhlcm1hbC9vZi10
aGVybWFsLmMKQEAgLTkxLDcgKzkxLDcgQEAgc3RydWN0IF9fdGhlcm1hbF96b25lIHsKIC8qKiog
ICBEVCB0aGVybWFsIHpvbmUgZGV2aWNlIGNhbGxiYWNrcyAgICoqKi8KIAogc3RhdGljIGludCBv
Zl90aGVybWFsX2dldF90ZW1wKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0eiwKLQkJCSAg
ICAgICB1bnNpZ25lZCBsb25nICp0ZW1wKQorCQkJICAgICAgIGludCAqdGVtcCkKIHsKIAlzdHJ1
Y3QgX190aGVybWFsX3pvbmUgKmRhdGEgPSB0ei0+ZGV2ZGF0YTsKIApAQCAtMTc3LDcgKzE3Nyw3
IEBAIEVYUE9SVF9TWU1CT0xfR1BMKG9mX3RoZXJtYWxfZ2V0X3RyaXBfcG9pbnRzKTsKICAqIFJl
dHVybjogemVybyBvbiBzdWNjZXNzLCBlcnJvciBjb2RlIG90aGVyd2lzZQogICovCiBzdGF0aWMg
aW50IG9mX3RoZXJtYWxfc2V0X2VtdWxfdGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAq
dHosCi0JCQkJICAgIHVuc2lnbmVkIGxvbmcgdGVtcCkKKwkJCQkgICAgaW50IHRlbXApCiB7CiAJ
c3RydWN0IF9fdGhlcm1hbF96b25lICpkYXRhID0gdHotPmRldmRhdGE7CiAKQEAgLTMxMSw3ICsz
MTEsNyBAQCBzdGF0aWMgaW50IG9mX3RoZXJtYWxfZ2V0X3RyaXBfdHlwZShzdHJ1Y3QgdGhlcm1h
bF96b25lX2RldmljZSAqdHosIGludCB0cmlwLAogfQogCiBzdGF0aWMgaW50IG9mX3RoZXJtYWxf
Z2V0X3RyaXBfdGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHosIGludCB0cmlwLAot
CQkJCSAgICB1bnNpZ25lZCBsb25nICp0ZW1wKQorCQkJCSAgICBpbnQgKnRlbXApCiB7CiAJc3Ry
dWN0IF9fdGhlcm1hbF96b25lICpkYXRhID0gdHotPmRldmRhdGE7CiAKQEAgLTMyNCw3ICszMjQs
NyBAQCBzdGF0aWMgaW50IG9mX3RoZXJtYWxfZ2V0X3RyaXBfdGVtcChzdHJ1Y3QgdGhlcm1hbF96
b25lX2RldmljZSAqdHosIGludCB0cmlwLAogfQogCiBzdGF0aWMgaW50IG9mX3RoZXJtYWxfc2V0
X3RyaXBfdGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHosIGludCB0cmlwLAotCQkJ
CSAgICB1bnNpZ25lZCBsb25nIHRlbXApCisJCQkJICAgIGludCB0ZW1wKQogewogCXN0cnVjdCBf
X3RoZXJtYWxfem9uZSAqZGF0YSA9IHR6LT5kZXZkYXRhOwogCkBAIC0zMzgsNyArMzM4LDcgQEAg
c3RhdGljIGludCBvZl90aGVybWFsX3NldF90cmlwX3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9k
ZXZpY2UgKnR6LCBpbnQgdHJpcCwKIH0KIAogc3RhdGljIGludCBvZl90aGVybWFsX2dldF90cmlw
X2h5c3Qoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6LCBpbnQgdHJpcCwKLQkJCQkgICAg
dW5zaWduZWQgbG9uZyAqaHlzdCkKKwkJCQkgICAgaW50ICpoeXN0KQogewogCXN0cnVjdCBfX3Ro
ZXJtYWxfem9uZSAqZGF0YSA9IHR6LT5kZXZkYXRhOwogCkBAIC0zNTEsNyArMzUxLDcgQEAgc3Rh
dGljIGludCBvZl90aGVybWFsX2dldF90cmlwX2h5c3Qoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZp
Y2UgKnR6LCBpbnQgdHJpcCwKIH0KIAogc3RhdGljIGludCBvZl90aGVybWFsX3NldF90cmlwX2h5
c3Qoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6LCBpbnQgdHJpcCwKLQkJCQkgICAgdW5z
aWduZWQgbG9uZyBoeXN0KQorCQkJCSAgICBpbnQgaHlzdCkKIHsKIAlzdHJ1Y3QgX190aGVybWFs
X3pvbmUgKmRhdGEgPSB0ei0+ZGV2ZGF0YTsKIApAQCAtMzY1LDcgKzM2NSw3IEBAIHN0YXRpYyBp
bnQgb2ZfdGhlcm1hbF9zZXRfdHJpcF9oeXN0KHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0
eiwgaW50IHRyaXAsCiB9CiAKIHN0YXRpYyBpbnQgb2ZfdGhlcm1hbF9nZXRfY3JpdF90ZW1wKHN0
cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0eiwKLQkJCQkgICAgdW5zaWduZWQgbG9uZyAqdGVt
cCkKKwkJCQkgICAgaW50ICp0ZW1wKQogewogCXN0cnVjdCBfX3RoZXJtYWxfem9uZSAqZGF0YSA9
IHR6LT5kZXZkYXRhOwogCWludCBpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90aGVybWFsL3Bvd2Vy
X2FsbG9jYXRvci5jIGIvZHJpdmVycy90aGVybWFsL3Bvd2VyX2FsbG9jYXRvci5jCmluZGV4IDQ2
NzIyNTAuLjA0NWFlYTU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3RoZXJtYWwvcG93ZXJfYWxsb2Nh
dG9yLmMKKysrIGIvZHJpdmVycy90aGVybWFsL3Bvd2VyX2FsbG9jYXRvci5jCkBAIC05Miw4ICs5
Miw4IEBAIHN0cnVjdCBwb3dlcl9hbGxvY2F0b3JfcGFyYW1zIHsKICAqIFJldHVybjogVGhlIHBv
d2VyIGJ1ZGdldCBmb3IgdGhlIG5leHQgcGVyaW9kLgogICovCiBzdGF0aWMgdTMyIHBpZF9jb250
cm9sbGVyKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0eiwKLQkJCSAgdW5zaWduZWQgbG9u
ZyBjdXJyZW50X3RlbXAsCi0JCQkgIHVuc2lnbmVkIGxvbmcgY29udHJvbF90ZW1wLAorCQkJICBp
bnQgY3VycmVudF90ZW1wLAorCQkJICBpbnQgY29udHJvbF90ZW1wLAogCQkJICB1MzIgbWF4X2Fs
bG9jYXRhYmxlX3Bvd2VyKQogewogCXM2NCBwLCBpLCBkLCBwb3dlcl9yYW5nZTsKQEAgLTEwMiw3
ICsxMDIsNyBAQCBzdGF0aWMgdTMyIHBpZF9jb250cm9sbGVyKHN0cnVjdCB0aGVybWFsX3pvbmVf
ZGV2aWNlICp0eiwKIAogCW1heF9wb3dlcl9mcmFjID0gaW50X3RvX2ZyYWMobWF4X2FsbG9jYXRh
YmxlX3Bvd2VyKTsKIAotCWVyciA9ICgoczMyKWNvbnRyb2xfdGVtcCAtIChzMzIpY3VycmVudF90
ZW1wKTsKKwllcnIgPSBjb250cm9sX3RlbXAgLSBjdXJyZW50X3RlbXA7CiAJZXJyID0gaW50X3Rv
X2ZyYWMoZXJyKTsKIAogCS8qIENhbGN1bGF0ZSB0aGUgcHJvcG9ydGlvbmFsIHRlcm0gKi8KQEAg
LTIyMyw4ICsyMjMsOCBAQCBzdGF0aWMgdm9pZCBkaXZ2eV91cF9wb3dlcih1MzIgKnJlcV9wb3dl
ciwgdTMyICptYXhfcG93ZXIsIGludCBudW1fYWN0b3JzLAogfQogCiBzdGF0aWMgaW50IGFsbG9j
YXRlX3Bvd2VyKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0eiwKLQkJCSAgdW5zaWduZWQg
bG9uZyBjdXJyZW50X3RlbXAsCi0JCQkgIHVuc2lnbmVkIGxvbmcgY29udHJvbF90ZW1wKQorCQkJ
ICBpbnQgY3VycmVudF90ZW1wLAorCQkJICBpbnQgY29udHJvbF90ZW1wKQogewogCXN0cnVjdCB0
aGVybWFsX2luc3RhbmNlICppbnN0YW5jZTsKIAlzdHJ1Y3QgcG93ZXJfYWxsb2NhdG9yX3BhcmFt
cyAqcGFyYW1zID0gdHotPmdvdmVybm9yX2RhdGE7CkBAIC0zMjYsNyArMzI2LDcgQEAgc3RhdGlj
IGludCBhbGxvY2F0ZV9wb3dlcihzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHosCiAJCQkJ
ICAgICAgZ3JhbnRlZF9wb3dlciwgdG90YWxfZ3JhbnRlZF9wb3dlciwKIAkJCQkgICAgICBudW1f
YWN0b3JzLCBwb3dlcl9yYW5nZSwKIAkJCQkgICAgICBtYXhfYWxsb2NhdGFibGVfcG93ZXIsIGN1
cnJlbnRfdGVtcCwKLQkJCQkgICAgICAoczMyKWNvbnRyb2xfdGVtcCAtIChzMzIpY3VycmVudF90
ZW1wKTsKKwkJCQkgICAgICBjb250cm9sX3RlbXAgLSBjdXJyZW50X3RlbXApOwogCiAJZGV2bV9r
ZnJlZSgmdHotPmRldmljZSwgcmVxX3Bvd2VyKTsKIHVubG9jazoKQEAgLTQxMSw3ICs0MTEsNyBA
QCBzdGF0aWMgaW50IHBvd2VyX2FsbG9jYXRvcl9iaW5kKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2
aWNlICp0eikKIHsKIAlpbnQgcmV0OwogCXN0cnVjdCBwb3dlcl9hbGxvY2F0b3JfcGFyYW1zICpw
YXJhbXM7Ci0JdW5zaWduZWQgbG9uZyBzd2l0Y2hfb25fdGVtcCwgY29udHJvbF90ZW1wOworCWlu
dCBzd2l0Y2hfb25fdGVtcCwgY29udHJvbF90ZW1wOwogCXUzMiB0ZW1wZXJhdHVyZV90aHJlc2hv
bGQ7CiAKIAlpZiAoIXR6LT50enAgfHwgIXR6LT50enAtPnN1c3RhaW5hYmxlX3Bvd2VyKSB7CkBA
IC00NzYsNyArNDc2LDcgQEAgc3RhdGljIHZvaWQgcG93ZXJfYWxsb2NhdG9yX3VuYmluZChzdHJ1
Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHopCiBzdGF0aWMgaW50IHBvd2VyX2FsbG9jYXRvcl90
aHJvdHRsZShzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHosIGludCB0cmlwKQogewogCWlu
dCByZXQ7Ci0JdW5zaWduZWQgbG9uZyBzd2l0Y2hfb25fdGVtcCwgY29udHJvbF90ZW1wLCBjdXJy
ZW50X3RlbXA7CisJaW50IHN3aXRjaF9vbl90ZW1wLCBjb250cm9sX3RlbXAsIGN1cnJlbnRfdGVt
cDsKIAlzdHJ1Y3QgcG93ZXJfYWxsb2NhdG9yX3BhcmFtcyAqcGFyYW1zID0gdHotPmdvdmVybm9y
X2RhdGE7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy90aGVybWFsL3Fjb20tc3BtaS10ZW1w
LWFsYXJtLmMgYi9kcml2ZXJzL3RoZXJtYWwvcWNvbS1zcG1pLXRlbXAtYWxhcm0uYwppbmRleCBj
OGQyN2I4Li5iNjc3YWFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RoZXJtYWwvcWNvbS1zcG1pLXRl
bXAtYWxhcm0uYworKysgYi9kcml2ZXJzL3RoZXJtYWwvcWNvbS1zcG1pLXRlbXAtYWxhcm0uYwpA
QCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBpbnQgcXBucF90bV91cGRhdGVfdGVtcF9ub19hZGMo
c3RydWN0IHFwbnBfdG1fY2hpcCAqY2hpcCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBx
cG5wX3RtX2dldF90ZW1wKHZvaWQgKmRhdGEsIGxvbmcgKnRlbXApCitzdGF0aWMgaW50IHFwbnBf
dG1fZ2V0X3RlbXAodm9pZCAqZGF0YSwgaW50ICp0ZW1wKQogewogCXN0cnVjdCBxcG5wX3RtX2No
aXAgKmNoaXAgPSBkYXRhOwogCWludCByZXQsIG1pbGlfY2Vsc2l1czsKZGlmZiAtLWdpdCBhL2Ry
aXZlcnMvdGhlcm1hbC9yY2FyX3RoZXJtYWwuYyBiL2RyaXZlcnMvdGhlcm1hbC9yY2FyX3RoZXJt
YWwuYwppbmRleCBmZTRlNzY3Li41ZDRhZTdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RoZXJtYWwv
cmNhcl90aGVybWFsLmMKKysrIGIvZHJpdmVycy90aGVybWFsL3JjYXJfdGhlcm1hbC5jCkBAIC0y
MDAsOCArMjAwLDcgQEAgZXJyX291dF91bmxvY2s6CiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGlj
IGludCByY2FyX3RoZXJtYWxfZ2V0X3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnpv
bmUsCi0JCQkJIHVuc2lnbmVkIGxvbmcgKnRlbXApCitzdGF0aWMgaW50IHJjYXJfdGhlcm1hbF9n
ZXRfdGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqem9uZSwgaW50ICp0ZW1wKQogewog
CXN0cnVjdCByY2FyX3RoZXJtYWxfcHJpdiAqcHJpdiA9IHJjYXJfem9uZV90b19wcml2KHpvbmUp
OwogCkBAIC0yMzUsNyArMjM0LDcgQEAgc3RhdGljIGludCByY2FyX3RoZXJtYWxfZ2V0X3RyaXBf
dHlwZShzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqem9uZSwKIH0KIAogc3RhdGljIGludCBy
Y2FyX3RoZXJtYWxfZ2V0X3RyaXBfdGVtcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqem9u
ZSwKLQkJCQkgICAgICBpbnQgdHJpcCwgdW5zaWduZWQgbG9uZyAqdGVtcCkKKwkJCQkgICAgICBp
bnQgdHJpcCwgaW50ICp0ZW1wKQogewogCXN0cnVjdCByY2FyX3RoZXJtYWxfcHJpdiAqcHJpdiA9
IHJjYXJfem9uZV90b19wcml2KHpvbmUpOwogCXN0cnVjdCBkZXZpY2UgKmRldiA9IHJjYXJfcHJp
dl90b19kZXYocHJpdik7CkBAIC0yOTksNyArMjk4LDcgQEAgc3RhdGljIHZvaWQgX3JjYXJfdGhl
cm1hbF9pcnFfY3RybChzdHJ1Y3QgcmNhcl90aGVybWFsX3ByaXYgKnByaXYsIGludCBlbmFibGUp
CiBzdGF0aWMgdm9pZCByY2FyX3RoZXJtYWxfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmsp
CiB7CiAJc3RydWN0IHJjYXJfdGhlcm1hbF9wcml2ICpwcml2OwotCXVuc2lnbmVkIGxvbmcgY2N0
ZW1wLCBuY3RlbXA7CisJaW50IGNjdGVtcCwgbmN0ZW1wOwogCiAJcHJpdiA9IGNvbnRhaW5lcl9v
Zih3b3JrLCBzdHJ1Y3QgcmNhcl90aGVybWFsX3ByaXYsIHdvcmsud29yayk7CiAKZGlmZiAtLWdp
dCBhL2RyaXZlcnMvdGhlcm1hbC9yb2NrY2hpcF90aGVybWFsLmMgYi9kcml2ZXJzL3RoZXJtYWwv
cm9ja2NoaXBfdGhlcm1hbC5jCmluZGV4IGNkOGY1ZjkzLi5jODlmZmIyIDEwMDY0NAotLS0gYS9k
cml2ZXJzL3RoZXJtYWwvcm9ja2NoaXBfdGhlcm1hbC5jCisrKyBiL2RyaXZlcnMvdGhlcm1hbC9y
b2NrY2hpcF90aGVybWFsLmMKQEAgLTY0LDcgKzY0LDcgQEAgc3RydWN0IHJvY2tjaGlwX3RzYWRj
X2NoaXAgewogCXZvaWQgKCpjb250cm9sKSh2b2lkIF9faW9tZW0gKnJlZywgYm9vbCBvbik7CiAK
IAkvKiBQZXItc2Vuc29yIG1ldGhvZHMgKi8KLQlpbnQgKCpnZXRfdGVtcCkoaW50IGNobiwgdm9p
ZCBfX2lvbWVtICpyZWcsIGxvbmcgKnRlbXApOworCWludCAoKmdldF90ZW1wKShpbnQgY2huLCB2
b2lkIF9faW9tZW0gKnJlZywgaW50ICp0ZW1wKTsKIAl2b2lkICgqc2V0X3RzaHV0X3RlbXApKGlu
dCBjaG4sIHZvaWQgX19pb21lbSAqcmVnLCBsb25nIHRlbXApOwogCXZvaWQgKCpzZXRfdHNodXRf
bW9kZSkoaW50IGNobiwgdm9pZCBfX2lvbWVtICpyZWcsIGVudW0gdHNodXRfbW9kZSBtKTsKIH07
CkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHUzMiBya190c2FkY3YyX3RlbXBfdG9fY29kZShs
b25nIHRlbXApCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBsb25nIHJrX3RzYWRjdjJfY29kZV90
b190ZW1wKHUzMiBjb2RlKQorc3RhdGljIGludCBya190c2FkY3YyX2NvZGVfdG9fdGVtcCh1MzIg
Y29kZSkKIHsKIAl1bnNpZ25lZCBpbnQgbG93ID0gMDsKIAl1bnNpZ25lZCBpbnQgaGlnaCA9IEFS
UkFZX1NJWkUodjJfY29kZV90YWJsZSkgLSAxOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0YXRpYyB2
b2lkIHJrX3RzYWRjdjJfY29udHJvbCh2b2lkIF9faW9tZW0gKnJlZ3MsIGJvb2wgZW5hYmxlKQog
CXdyaXRlbF9yZWxheGVkKHZhbCwgcmVncyArIFRTQURDVjJfQVVUT19DT04pOwogfQogCi1zdGF0
aWMgaW50IHJrX3RzYWRjdjJfZ2V0X3RlbXAoaW50IGNobiwgdm9pZCBfX2lvbWVtICpyZWdzLCBs
b25nICp0ZW1wKQorc3RhdGljIGludCBya190c2FkY3YyX2dldF90ZW1wKGludCBjaG4sIHZvaWQg
X19pb21lbSAqcmVncywgaW50ICp0ZW1wKQogewogCXUzMiB2YWw7CiAKQEAgLTM2Niw3ICszNjYs
NyBAQCBzdGF0aWMgaXJxcmV0dXJuX3Qgcm9ja2NoaXBfdGhlcm1hbF9hbGFybV9pcnFfdGhyZWFk
KGludCBpcnEsIHZvaWQgKmRldikKIAlyZXR1cm4gSVJRX0hBTkRMRUQ7CiB9CiAKLXN0YXRpYyBp
bnQgcm9ja2NoaXBfdGhlcm1hbF9nZXRfdGVtcCh2b2lkICpfc2Vuc29yLCBsb25nICpvdXRfdGVt
cCkKK3N0YXRpYyBpbnQgcm9ja2NoaXBfdGhlcm1hbF9nZXRfdGVtcCh2b2lkICpfc2Vuc29yLCBp
bnQgKm91dF90ZW1wKQogewogCXN0cnVjdCByb2NrY2hpcF90aGVybWFsX3NlbnNvciAqc2Vuc29y
ID0gX3NlbnNvcjsKIAlzdHJ1Y3Qgcm9ja2NoaXBfdGhlcm1hbF9kYXRhICp0aGVybWFsID0gc2Vu
c29yLT50aGVybWFsOwpAQCAtMzc0LDcgKzM3NCw3IEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfdGhl
cm1hbF9nZXRfdGVtcCh2b2lkICpfc2Vuc29yLCBsb25nICpvdXRfdGVtcCkKIAlpbnQgcmV0dmFs
OwogCiAJcmV0dmFsID0gdHNhZGMtPmdldF90ZW1wKHNlbnNvci0+aWQsIHRoZXJtYWwtPnJlZ3Ms
IG91dF90ZW1wKTsKLQlkZXZfZGJnKCZ0aGVybWFsLT5wZGV2LT5kZXYsICJzZW5zb3IgJWQgLSB0
ZW1wOiAlbGQsIHJldHZhbDogJWRcbiIsCisJZGV2X2RiZygmdGhlcm1hbC0+cGRldi0+ZGV2LCAi
c2Vuc29yICVkIC0gdGVtcDogJWQsIHJldHZhbDogJWRcbiIsCiAJCXNlbnNvci0+aWQsICpvdXRf
dGVtcCwgcmV0dmFsKTsKIAogCXJldHVybiByZXR2YWw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Ro
ZXJtYWwvc2Ftc3VuZy9leHlub3NfdG11LmMgYi9kcml2ZXJzL3RoZXJtYWwvc2Ftc3VuZy9leHlu
b3NfdG11LmMKaW5kZXggNTMxZjRiMTcuLjllYzI5YTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGhl
cm1hbC9zYW1zdW5nL2V4eW5vc190bXUuYworKysgYi9kcml2ZXJzL3RoZXJtYWwvc2Ftc3VuZy9l
eHlub3NfdG11LmMKQEAgLTIwNyw4ICsyMDcsNyBAQCBzdHJ1Y3QgZXh5bm9zX3RtdV9kYXRhIHsK
IAlpbnQgKCp0bXVfaW5pdGlhbGl6ZSkoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7CiAJ
dm9pZCAoKnRtdV9jb250cm9sKShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBib29sIG9u
KTsKIAlpbnQgKCp0bXVfcmVhZCkoc3RydWN0IGV4eW5vc190bXVfZGF0YSAqZGF0YSk7Ci0Jdm9p
ZCAoKnRtdV9zZXRfZW11bGF0aW9uKShzdHJ1Y3QgZXh5bm9zX3RtdV9kYXRhICpkYXRhLAotCQkJ
CSAgdW5zaWduZWQgbG9uZyB0ZW1wKTsKKwl2b2lkICgqdG11X3NldF9lbXVsYXRpb24pKHN0cnVj
dCBleHlub3NfdG11X2RhdGEgKmRhdGEsIGludCB0ZW1wKTsKIAl2b2lkICgqdG11X2NsZWFyX2ly
cXMpKHN0cnVjdCBleHlub3NfdG11X2RhdGEgKmRhdGEpOwogfTsKIApAQCAtMjE2LDcgKzIxNSw3
IEBAIHN0YXRpYyB2b2lkIGV4eW5vc19yZXBvcnRfdHJpZ2dlcihzdHJ1Y3QgZXh5bm9zX3RtdV9k
YXRhICpwKQogewogCWNoYXIgZGF0YVsxMF0sICplbnZwW10gPSB7IGRhdGEsIE5VTEwgfTsKIAlz
dHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHogPSBwLT50emQ7Ci0JdW5zaWduZWQgbG9uZyB0
ZW1wOworCWludCB0ZW1wOwogCXVuc2lnbmVkIGludCBpOwogCiAJaWYgKCF0eikgewpAQCAtNTE3
LDcgKzUxNiw3IEBAIHN0YXRpYyBpbnQgZXh5bm9zNTQzM190bXVfaW5pdGlhbGl6ZShzdHJ1Y3Qg
cGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0eiA9
IGRhdGEtPnR6ZDsKIAl1bnNpZ25lZCBpbnQgc3RhdHVzLCB0cmltX2luZm87CiAJdW5zaWduZWQg
aW50IHJpc2luZ190aHJlc2hvbGQgPSAwLCBmYWxsaW5nX3RocmVzaG9sZCA9IDA7Ci0JdW5zaWdu
ZWQgbG9uZyB0ZW1wLCB0ZW1wX2hpc3Q7CisJaW50IHRlbXAsIHRlbXBfaGlzdDsKIAlpbnQgcmV0
ID0gMCwgdGhyZXNob2xkX2NvZGUsIGksIHNlbnNvcl9pZCwgY2FsX3R5cGU7CiAKIAlzdGF0dXMg
PSByZWFkYihkYXRhLT5iYXNlICsgRVhZTk9TX1RNVV9SRUdfU1RBVFVTKTsKQEAgLTYxMCw3ICs2
MDksNyBAQCBzdGF0aWMgaW50IGV4eW5vczU0NDBfdG11X2luaXRpYWxpemUoc3RydWN0IHBsYXRm
b3JtX2RldmljZSAqcGRldikKIAlzdHJ1Y3QgZXh5bm9zX3RtdV9kYXRhICpkYXRhID0gcGxhdGZv
cm1fZ2V0X2RydmRhdGEocGRldik7CiAJdW5zaWduZWQgaW50IHRyaW1faW5mbyA9IDAsIGNvbiwg
cmlzaW5nX3RocmVzaG9sZDsKIAlpbnQgcmV0ID0gMCwgdGhyZXNob2xkX2NvZGU7Ci0JdW5zaWdu
ZWQgbG9uZyBjcml0X3RlbXAgPSAwOworCWludCBjcml0X3RlbXAgPSAwOwogCiAJLyoKIAkgKiBG
b3IgZXh5bm9zNTQ0MCBzb2MgdHJpbWluZm8gdmFsdWUgaXMgc3dhcHBlZCBiZXR3ZWVuIFRNVTAg
YW5kCkBAIC02NjMsNyArNjYyLDcgQEAgc3RhdGljIGludCBleHlub3M3X3RtdV9pbml0aWFsaXpl
KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJdW5zaWduZWQgaW50IHN0YXR1cywgdHJp
bV9pbmZvOwogCXVuc2lnbmVkIGludCByaXNpbmdfdGhyZXNob2xkID0gMCwgZmFsbGluZ190aHJl
c2hvbGQgPSAwOwogCWludCByZXQgPSAwLCB0aHJlc2hvbGRfY29kZSwgaTsKLQl1bnNpZ25lZCBs
b25nIHRlbXAsIHRlbXBfaGlzdDsKKwlpbnQgdGVtcCwgdGVtcF9oaXN0OwogCXVuc2lnbmVkIGlu
dCByZWdfb2ZmLCBiaXRfb2ZmOwogCiAJc3RhdHVzID0gcmVhZGIoZGF0YS0+YmFzZSArIEVYWU5P
U19UTVVfUkVHX1NUQVRVUyk7CkBAIC04NzYsNyArODc1LDcgQEAgc3RhdGljIHZvaWQgZXh5bm9z
N190bXVfY29udHJvbChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBib29sIG9uKQogCXdy
aXRlbChjb24sIGRhdGEtPmJhc2UgKyBFWFlOT1NfVE1VX1JFR19DT05UUk9MKTsKIH0KIAotc3Rh
dGljIGludCBleHlub3NfZ2V0X3RlbXAodm9pZCAqcCwgbG9uZyAqdGVtcCkKK3N0YXRpYyBpbnQg
ZXh5bm9zX2dldF90ZW1wKHZvaWQgKnAsIGludCAqdGVtcCkKIHsKIAlzdHJ1Y3QgZXh5bm9zX3Rt
dV9kYXRhICpkYXRhID0gcDsKIApAQCAtODk2LDcgKzg5NSw3IEBAIHN0YXRpYyBpbnQgZXh5bm9z
X2dldF90ZW1wKHZvaWQgKnAsIGxvbmcgKnRlbXApCiAKICNpZmRlZiBDT05GSUdfVEhFUk1BTF9F
TVVMQVRJT04KIHN0YXRpYyB1MzIgZ2V0X2VtdWxfY29uX3JlZyhzdHJ1Y3QgZXh5bm9zX3RtdV9k
YXRhICpkYXRhLCB1bnNpZ25lZCBpbnQgdmFsLAotCQkJICAgIHVuc2lnbmVkIGxvbmcgdGVtcCkK
KwkJCSAgICBpbnQgdGVtcCkKIHsKIAlpZiAodGVtcCkgewogCQl0ZW1wIC89IE1DRUxTSVVTOwpA
QCAtOTI2LDcgKzkyNSw3IEBAIHN0YXRpYyB1MzIgZ2V0X2VtdWxfY29uX3JlZyhzdHJ1Y3QgZXh5
bm9zX3RtdV9kYXRhICpkYXRhLCB1bnNpZ25lZCBpbnQgdmFsLAogfQogCiBzdGF0aWMgdm9pZCBl
eHlub3M0NDEyX3RtdV9zZXRfZW11bGF0aW9uKHN0cnVjdCBleHlub3NfdG11X2RhdGEgKmRhdGEs
Ci0JCQkJCSB1bnNpZ25lZCBsb25nIHRlbXApCisJCQkJCSBpbnQgdGVtcCkKIHsKIAl1bnNpZ25l
ZCBpbnQgdmFsOwogCXUzMiBlbXVsX2NvbjsKQEAgLTk0Niw3ICs5NDUsNyBAQCBzdGF0aWMgdm9p
ZCBleHlub3M0NDEyX3RtdV9zZXRfZW11bGF0aW9uKHN0cnVjdCBleHlub3NfdG11X2RhdGEgKmRh
dGEsCiB9CiAKIHN0YXRpYyB2b2lkIGV4eW5vczU0NDBfdG11X3NldF9lbXVsYXRpb24oc3RydWN0
IGV4eW5vc190bXVfZGF0YSAqZGF0YSwKLQkJCQkJIHVuc2lnbmVkIGxvbmcgdGVtcCkKKwkJCQkJ
IGludCB0ZW1wKQogewogCXVuc2lnbmVkIGludCB2YWw7CiAKQEAgLTk1NSw3ICs5NTQsNyBAQCBz
dGF0aWMgdm9pZCBleHlub3M1NDQwX3RtdV9zZXRfZW11bGF0aW9uKHN0cnVjdCBleHlub3NfdG11
X2RhdGEgKmRhdGEsCiAJd3JpdGVsKHZhbCwgZGF0YS0+YmFzZSArIEVYWU5PUzU0NDBfVE1VX1Mw
XzdfREVCVUcpOwogfQogCi1zdGF0aWMgaW50IGV4eW5vc190bXVfc2V0X2VtdWxhdGlvbih2b2lk
ICpkcnZfZGF0YSwgdW5zaWduZWQgbG9uZyB0ZW1wKQorc3RhdGljIGludCBleHlub3NfdG11X3Nl
dF9lbXVsYXRpb24odm9pZCAqZHJ2X2RhdGEsIGludCB0ZW1wKQogewogCXN0cnVjdCBleHlub3Nf
dG11X2RhdGEgKmRhdGEgPSBkcnZfZGF0YTsKIAlpbnQgcmV0ID0gLUVJTlZBTDsKQEAgLTk3OCw3
ICs5NzcsNyBAQCBvdXQ6CiAjZWxzZQogI2RlZmluZSBleHlub3M0NDEyX3RtdV9zZXRfZW11bGF0
aW9uIE5VTEwKICNkZWZpbmUgZXh5bm9zNTQ0MF90bXVfc2V0X2VtdWxhdGlvbiBOVUxMCi1zdGF0
aWMgaW50IGV4eW5vc190bXVfc2V0X2VtdWxhdGlvbih2b2lkICpkcnZfZGF0YSwJdW5zaWduZWQg
bG9uZyB0ZW1wKQorc3RhdGljIGludCBleHlub3NfdG11X3NldF9lbXVsYXRpb24odm9pZCAqZHJ2
X2RhdGEsIGludCB0ZW1wKQogCXsgcmV0dXJuIC1FSU5WQUw7IH0KICNlbmRpZiAvKiBDT05GSUdf
VEhFUk1BTF9FTVVMQVRJT04gKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy90aGVybWFsL3NwZWFy
X3RoZXJtYWwuYyBiL2RyaXZlcnMvdGhlcm1hbC9zcGVhcl90aGVybWFsLmMKaW5kZXggYmRkYjcx
Ny4uNTM0ZGQ5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy90aGVybWFsL3NwZWFyX3RoZXJtYWwuYwor
KysgYi9kcml2ZXJzL3RoZXJtYWwvc3BlYXJfdGhlcm1hbC5jCkBAIC0zOCw3ICszOCw3IEBAIHN0
cnVjdCBzcGVhcl90aGVybWFsX2RldiB7CiB9OwogCiBzdGF0aWMgaW5saW5lIGludCB0aGVybWFs
X2dldF90ZW1wKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0aGVybWFsLAotCQkJCXVuc2ln
bmVkIGxvbmcgKnRlbXApCisJCQkJaW50ICp0ZW1wKQogewogCXN0cnVjdCBzcGVhcl90aGVybWFs
X2RldiAqc3RkZXYgPSB0aGVybWFsLT5kZXZkYXRhOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Ro
ZXJtYWwvc3Qvc3RfdGhlcm1hbC5jIGIvZHJpdmVycy90aGVybWFsL3N0L3N0X3RoZXJtYWwuYwpp
bmRleCA3NmM1MTVkLi40NGNiYmE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3RoZXJtYWwvc3Qvc3Rf
dGhlcm1hbC5jCisrKyBiL2RyaXZlcnMvdGhlcm1hbC9zdC9zdF90aGVybWFsLmMKQEAgLTExMSw4
ICsxMTEsNyBAQCBzdGF0aWMgaW50IHN0X3RoZXJtYWxfY2FsaWJyYXRpb24oc3RydWN0IHN0X3Ro
ZXJtYWxfc2Vuc29yICpzZW5zb3IpCiB9CiAKIC8qIENhbGxiYWNrIHRvIGdldCB0ZW1wZXJhdHVy
ZSBmcm9tIEhXKi8KLXN0YXRpYyBpbnQgc3RfdGhlcm1hbF9nZXRfdGVtcChzdHJ1Y3QgdGhlcm1h
bF96b25lX2RldmljZSAqdGgsCi0JCXVuc2lnbmVkIGxvbmcgKnRlbXBlcmF0dXJlKQorc3RhdGlj
IGludCBzdF90aGVybWFsX2dldF90ZW1wKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0aCwg
aW50ICp0ZW1wZXJhdHVyZSkKIHsKIAlzdHJ1Y3Qgc3RfdGhlcm1hbF9zZW5zb3IgKnNlbnNvciA9
IHRoLT5kZXZkYXRhOwogCXN0cnVjdCBkZXZpY2UgKmRldiA9IHNlbnNvci0+ZGV2OwpAQCAtMTU5
LDcgKzE1OCw3IEBAIHN0YXRpYyBpbnQgc3RfdGhlcm1hbF9nZXRfdHJpcF90eXBlKHN0cnVjdCB0
aGVybWFsX3pvbmVfZGV2aWNlICp0aCwKIH0KIAogc3RhdGljIGludCBzdF90aGVybWFsX2dldF90
cmlwX3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnRoLAotCQkJCSAgICBpbnQgdHJp
cCwgdW5zaWduZWQgbG9uZyAqdGVtcCkKKwkJCQkgICAgaW50IHRyaXAsIGludCAqdGVtcCkKIHsK
IAlzdHJ1Y3Qgc3RfdGhlcm1hbF9zZW5zb3IgKnNlbnNvciA9IHRoLT5kZXZkYXRhOwogCXN0cnVj
dCBkZXZpY2UgKmRldiA9IHNlbnNvci0+ZGV2OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90aGVybWFs
L3N0ZXBfd2lzZS5jIGIvZHJpdmVycy90aGVybWFsL3N0ZXBfd2lzZS5jCmluZGV4IDVhMGYxMmQu
LjJmOWY3MDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGhlcm1hbC9zdGVwX3dpc2UuYworKysgYi9k
cml2ZXJzL3RoZXJtYWwvc3RlcF93aXNlLmMKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgdm9p
ZCB1cGRhdGVfcGFzc2l2ZV9pbnN0YW5jZShzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHos
CiAKIHN0YXRpYyB2b2lkIHRoZXJtYWxfem9uZV90cmlwX3VwZGF0ZShzdHJ1Y3QgdGhlcm1hbF96
b25lX2RldmljZSAqdHosIGludCB0cmlwKQogewotCWxvbmcgdHJpcF90ZW1wOworCWludCB0cmlw
X3RlbXA7CiAJZW51bSB0aGVybWFsX3RyaXBfdHlwZSB0cmlwX3R5cGU7CiAJZW51bSB0aGVybWFs
X3RyZW5kIHRyZW5kOwogCXN0cnVjdCB0aGVybWFsX2luc3RhbmNlICppbnN0YW5jZTsKQEAgLTEz
NSw3ICsxMzUsNyBAQCBzdGF0aWMgdm9pZCB0aGVybWFsX3pvbmVfdHJpcF91cGRhdGUoc3RydWN0
IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6LCBpbnQgdHJpcCkKIAkJdHJhY2VfdGhlcm1hbF96b25l
X3RyaXAodHosIHRyaXAsIHRyaXBfdHlwZSk7CiAJfQogCi0JZGV2X2RiZygmdHotPmRldmljZSwg
IlRyaXAlZFt0eXBlPSVkLHRlbXA9JWxkXTp0cmVuZD0lZCx0aHJvdHRsZT0lZFxuIiwKKwlkZXZf
ZGJnKCZ0ei0+ZGV2aWNlLCAiVHJpcCVkW3R5cGU9JWQsdGVtcD0lZF06dHJlbmQ9JWQsdGhyb3R0
bGU9JWRcbiIsCiAJCQkJdHJpcCwgdHJpcF90eXBlLCB0cmlwX3RlbXAsIHRyZW5kLCB0aHJvdHRs
ZSk7CiAKIAltdXRleF9sb2NrKCZ0ei0+bG9jayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3RoZXJt
YWwvdGVncmFfc29jdGhlcm0uYyBiL2RyaXZlcnMvdGhlcm1hbC90ZWdyYV9zb2N0aGVybS5jCmlu
ZGV4IDkxOTdmYzAuLjc0ZWE1NzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGhlcm1hbC90ZWdyYV9z
b2N0aGVybS5jCisrKyBiL2RyaXZlcnMvdGhlcm1hbC90ZWdyYV9zb2N0aGVybS5jCkBAIC0yOTMs
NyArMjkzLDcgQEAgc3RhdGljIGludCBlbmFibGVfdHNlbnNvcihzdHJ1Y3QgdGVncmFfc29jdGhl
cm0gKnRlZ3JhLAogICogSCBkZW5vdGVzIGFuIGFkZGl0aW9uIG9mIDAuNSBDZWxzaXVzIGFuZCBO
IGRlbm90ZXMgbmVnYXRpb24KICAqIG9mIHRoZSBmaW5hbCB2YWx1ZS4KICAqLwotc3RhdGljIGxv
bmcgdHJhbnNsYXRlX3RlbXAodTE2IHZhbCkKK3N0YXRpYyBpbnQgdHJhbnNsYXRlX3RlbXAodTE2
IHZhbCkKIHsKIAlsb25nIHQ7CiAKQEAgLTMwNiw3ICszMDYsNyBAQCBzdGF0aWMgbG9uZyB0cmFu
c2xhdGVfdGVtcCh1MTYgdmFsKQogCXJldHVybiB0OwogfQogCi1zdGF0aWMgaW50IHRlZ3JhX3Ro
ZXJtY3RsX2dldF90ZW1wKHZvaWQgKmRhdGEsIGxvbmcgKm91dF90ZW1wKQorc3RhdGljIGludCB0
ZWdyYV90aGVybWN0bF9nZXRfdGVtcCh2b2lkICpkYXRhLCBpbnQgKm91dF90ZW1wKQogewogCXN0
cnVjdCB0ZWdyYV90aGVybWN0bF96b25lICp6b25lID0gZGF0YTsKIAl1MzIgdmFsOwpkaWZmIC0t
Z2l0IGEvZHJpdmVycy90aGVybWFsL3RoZXJtYWxfY29yZS5jIGIvZHJpdmVycy90aGVybWFsL3Ro
ZXJtYWxfY29yZS5jCmluZGV4IDA0NjU5YmYuLjM3MWE1NDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv
dGhlcm1hbC90aGVybWFsX2NvcmUuYworKysgYi9kcml2ZXJzL3RoZXJtYWwvdGhlcm1hbF9jb3Jl
LmMKQEAgLTQyNiw3ICs0MjYsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfbm9uX2NyaXRpY2FsX3Ry
aXBzKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0eiwKIHN0YXRpYyB2b2lkIGhhbmRsZV9j
cml0aWNhbF90cmlwcyhzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHosCiAJCQkJaW50IHRy
aXAsIGVudW0gdGhlcm1hbF90cmlwX3R5cGUgdHJpcF90eXBlKQogewotCWxvbmcgdHJpcF90ZW1w
OworCWludCB0cmlwX3RlbXA7CiAKIAl0ei0+b3BzLT5nZXRfdHJpcF90ZW1wKHR6LCB0cmlwLCAm
dHJpcF90ZW1wKTsKIApAQCAtNDc0LDEyICs0NzQsMTIgQEAgc3RhdGljIHZvaWQgaGFuZGxlX3Ro
ZXJtYWxfdHJpcChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHosIGludCB0cmlwKQogICoK
ICAqIFJldHVybjogT24gc3VjY2VzcyByZXR1cm5zIDAsIGFuIGVycm9yIGNvZGUgb3RoZXJ3aXNl
CiAgKi8KLWludCB0aGVybWFsX3pvbmVfZ2V0X3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZp
Y2UgKnR6LCB1bnNpZ25lZCBsb25nICp0ZW1wKQoraW50IHRoZXJtYWxfem9uZV9nZXRfdGVtcChz
dHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHosIGludCAqdGVtcCkKIHsKIAlpbnQgcmV0ID0g
LUVJTlZBTDsKICNpZmRlZiBDT05GSUdfVEhFUk1BTF9FTVVMQVRJT04KIAlpbnQgY291bnQ7Ci0J
dW5zaWduZWQgbG9uZyBjcml0X3RlbXAgPSAtMVVMOworCWludCBjcml0X3RlbXAgPSBJTlRfTUFY
OwogCWVudW0gdGhlcm1hbF90cmlwX3R5cGUgdHlwZTsKICNlbmRpZgogCkBAIC01MTYsOCArNTE2
LDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwodGhlcm1hbF96b25lX2dldF90ZW1wKTsKIAogc3RhdGlj
IHZvaWQgdXBkYXRlX3RlbXBlcmF0dXJlKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0eikK
IHsKLQlsb25nIHRlbXA7Ci0JaW50IHJldDsKKwlpbnQgdGVtcCwgcmV0OwogCiAJcmV0ID0gdGhl
cm1hbF96b25lX2dldF90ZW1wKHR6LCAmdGVtcCk7CiAJaWYgKHJldCkgewpAQCAtNTc3LDE1ICs1
NzYsMTQgQEAgc3RhdGljIHNzaXplX3QKIHRlbXBfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0
cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCiB7CiAJc3RydWN0IHRoZXJt
YWxfem9uZV9kZXZpY2UgKnR6ID0gdG9fdGhlcm1hbF96b25lKGRldik7Ci0JbG9uZyB0ZW1wZXJh
dHVyZTsKLQlpbnQgcmV0OworCWludCB0ZW1wZXJhdHVyZSwgcmV0OwogCiAJcmV0ID0gdGhlcm1h
bF96b25lX2dldF90ZW1wKHR6LCAmdGVtcGVyYXR1cmUpOwogCiAJaWYgKHJldCkKIAkJcmV0dXJu
IHJldDsKIAotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVsZFxuIiwgdGVtcGVyYXR1cmUpOworCXJl
dHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCB0ZW1wZXJhdHVyZSk7CiB9CiAKIHN0YXRpYyBzc2l6
ZV90CkBAIC02ODksNyArNjg3LDcgQEAgdHJpcF9wb2ludF90ZW1wX3Nob3coc3RydWN0IGRldmlj
ZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKIHsKIAlzdHJ1Y3QgdGhlcm1h
bF96b25lX2RldmljZSAqdHogPSB0b190aGVybWFsX3pvbmUoZGV2KTsKIAlpbnQgdHJpcCwgcmV0
OwotCWxvbmcgdGVtcGVyYXR1cmU7CisJaW50IHRlbXBlcmF0dXJlOwogCiAJaWYgKCF0ei0+b3Bz
LT5nZXRfdHJpcF90ZW1wKQogCQlyZXR1cm4gLUVQRVJNOwpAQCAtNzAyLDcgKzcwMCw3IEBAIHRy
aXBfcG9pbnRfdGVtcF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRy
aWJ1dGUgKmF0dHIsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldHVybiBzcHJpbnRm
KGJ1ZiwgIiVsZFxuIiwgdGVtcGVyYXR1cmUpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4i
LCB0ZW1wZXJhdHVyZSk7CiB9CiAKIHN0YXRpYyBzc2l6ZV90CkBAIC03MTEsNyArNzA5LDcgQEAg
dHJpcF9wb2ludF9oeXN0X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9h
dHRyaWJ1dGUgKmF0dHIsCiB7CiAJc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6ID0gdG9f
dGhlcm1hbF96b25lKGRldik7CiAJaW50IHRyaXAsIHJldDsKLQl1bnNpZ25lZCBsb25nIHRlbXBl
cmF0dXJlOworCWludCB0ZW1wZXJhdHVyZTsKIAogCWlmICghdHotPm9wcy0+c2V0X3RyaXBfaHlz
dCkKIAkJcmV0dXJuIC1FUEVSTTsKQEAgLTcxOSw3ICs3MTcsNyBAQCB0cmlwX3BvaW50X2h5c3Rf
c3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwK
IAlpZiAoIXNzY2FuZihhdHRyLT5hdHRyLm5hbWUsICJ0cmlwX3BvaW50XyVkX2h5c3QiLCAmdHJp
cCkpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JaWYgKGtzdHJ0b3VsKGJ1ZiwgMTAsICZ0ZW1wZXJh
dHVyZSkpCisJaWYgKGtzdHJ0b2ludChidWYsIDEwLCAmdGVtcGVyYXR1cmUpKQogCQlyZXR1cm4g
LUVJTlZBTDsKIAogCS8qCkBAIC03MzgsNyArNzM2LDcgQEAgdHJpcF9wb2ludF9oeXN0X3Nob3co
c3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKIHsKIAlz
dHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHogPSB0b190aGVybWFsX3pvbmUoZGV2KTsKIAlp
bnQgdHJpcCwgcmV0OwotCXVuc2lnbmVkIGxvbmcgdGVtcGVyYXR1cmU7CisJaW50IHRlbXBlcmF0
dXJlOwogCiAJaWYgKCF0ei0+b3BzLT5nZXRfdHJpcF9oeXN0KQogCQlyZXR1cm4gLUVQRVJNOwpA
QCAtNzQ4LDcgKzc0Niw3IEBAIHRyaXBfcG9pbnRfaHlzdF9zaG93KHN0cnVjdCBkZXZpY2UgKmRl
diwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAKIAlyZXQgPSB0ei0+b3BzLT5nZXRf
dHJpcF9oeXN0KHR6LCB0cmlwLCAmdGVtcGVyYXR1cmUpOwogCi0JcmV0dXJuIHJldCA/IHJldCA6
IHNwcmludGYoYnVmLCAiJWxkXG4iLCB0ZW1wZXJhdHVyZSk7CisJcmV0dXJuIHJldCA/IHJldCA6
IHNwcmludGYoYnVmLCAiJWRcbiIsIHRlbXBlcmF0dXJlKTsKIH0KIAogc3RhdGljIHNzaXplX3QK
ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGhlcm1hbC90aGVybWFsX2h3bW9uLmMgYi9kcml2ZXJzL3Ro
ZXJtYWwvdGhlcm1hbF9od21vbi5jCmluZGV4IDE5NjdiZWUuLjA2ZmQyZWQ5IDEwMDY0NAotLS0g
YS9kcml2ZXJzL3RoZXJtYWwvdGhlcm1hbF9od21vbi5jCisrKyBiL2RyaXZlcnMvdGhlcm1hbC90
aGVybWFsX2h3bW9uLmMKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIERFVklDRV9BVFRSKG5hbWUs
IDA0NDQsIG5hbWVfc2hvdywgTlVMTCk7CiBzdGF0aWMgc3NpemVfdAogdGVtcF9pbnB1dF9zaG93
KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIg
KmJ1ZikKIHsKLQlsb25nIHRlbXBlcmF0dXJlOworCWludCB0ZW1wZXJhdHVyZTsKIAlpbnQgcmV0
OwogCXN0cnVjdCB0aGVybWFsX2h3bW9uX2F0dHIgKmh3bW9uX2F0dHIKIAkJCT0gY29udGFpbmVy
X29mKGF0dHIsIHN0cnVjdCB0aGVybWFsX2h3bW9uX2F0dHIsIGF0dHIpOwpAQCAtODMsNyArODMs
NyBAQCB0ZW1wX2lucHV0X3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0
dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQly
ZXR1cm4gc3ByaW50ZihidWYsICIlbGRcbiIsIHRlbXBlcmF0dXJlKTsKKwlyZXR1cm4gc3ByaW50
ZihidWYsICIlZFxuIiwgdGVtcGVyYXR1cmUpOwogfQogCiBzdGF0aWMgc3NpemVfdApAQCAtOTUs
MTQgKzk1LDE0IEBAIHRlbXBfY3JpdF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRl
dmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKIAkJCT0gY29udGFpbmVyX29mKGh3bW9u
X2F0dHIsIHN0cnVjdCB0aGVybWFsX2h3bW9uX3RlbXAsCiAJCQkJICAgICAgIHRlbXBfY3JpdCk7
CiAJc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6ID0gdGVtcC0+dHo7Ci0JbG9uZyB0ZW1w
ZXJhdHVyZTsKKwlpbnQgdGVtcGVyYXR1cmU7CiAJaW50IHJldDsKIAogCXJldCA9IHR6LT5vcHMt
PmdldF90cmlwX3RlbXAodHosIDAsICZ0ZW1wZXJhdHVyZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJu
IHJldDsKIAotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVsZFxuIiwgdGVtcGVyYXR1cmUpOworCXJl
dHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCB0ZW1wZXJhdHVyZSk7CiB9CiAKIApAQCAtMTQyLDcg
KzE0Miw3IEBAIHRoZXJtYWxfaHdtb25fbG9va3VwX3RlbXAoY29uc3Qgc3RydWN0IHRoZXJtYWxf
aHdtb25fZGV2aWNlICpod21vbiwKIAogc3RhdGljIGJvb2wgdGhlcm1hbF96b25lX2NyaXRfdGVt
cF92YWxpZChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHopCiB7Ci0JdW5zaWduZWQgbG9u
ZyB0ZW1wOworCWludCB0ZW1wOwogCXJldHVybiB0ei0+b3BzLT5nZXRfY3JpdF90ZW1wICYmICF0
ei0+b3BzLT5nZXRfY3JpdF90ZW1wKHR6LCAmdGVtcCk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZl
cnMvdGhlcm1hbC90aS1zb2MtdGhlcm1hbC90aS10aGVybWFsLWNvbW1vbi5jIGIvZHJpdmVycy90
aGVybWFsL3RpLXNvYy10aGVybWFsL3RpLXRoZXJtYWwtY29tbW9uLmMKaW5kZXggYzdjNWIzNy4u
YjIxM2ExMiAxMDA2NDQKLS0tIGEvZHJpdmVycy90aGVybWFsL3RpLXNvYy10aGVybWFsL3RpLXRo
ZXJtYWwtY29tbW9uLmMKKysrIGIvZHJpdmVycy90aGVybWFsL3RpLXNvYy10aGVybWFsL3RpLXRo
ZXJtYWwtY29tbW9uLmMKQEAgLTc2LDE0ICs3NiwxNCBAQCBzdGF0aWMgaW5saW5lIGludCB0aV90
aGVybWFsX2hvdHNwb3RfdGVtcGVyYXR1cmUoaW50IHQsIGludCBzLCBpbnQgYykKIAogLyogdGhl
cm1hbCB6b25lIG9wcyAqLwogLyogR2V0IHRlbXBlcmF0dXJlIGNhbGxiYWNrIGZ1bmN0aW9uIGZv
ciB0aGVybWFsIHpvbmUgKi8KLXN0YXRpYyBpbmxpbmUgaW50IF9fdGlfdGhlcm1hbF9nZXRfdGVt
cCh2b2lkICpkZXZkYXRhLCBsb25nICp0ZW1wKQorc3RhdGljIGlubGluZSBpbnQgX190aV90aGVy
bWFsX2dldF90ZW1wKHZvaWQgKmRldmRhdGEsIGludCAqdGVtcCkKIHsKIAlzdHJ1Y3QgdGhlcm1h
bF96b25lX2RldmljZSAqcGNiX3R6ID0gTlVMTDsKIAlzdHJ1Y3QgdGlfdGhlcm1hbF9kYXRhICpk
YXRhID0gZGV2ZGF0YTsKIAlzdHJ1Y3QgdGlfYmFuZGdhcCAqYmdwOwogCWNvbnN0IHN0cnVjdCB0
aV90ZW1wX3NlbnNvciAqczsKIAlpbnQgcmV0LCB0bXAsIHNsb3BlLCBjb25zdGFudDsKLQl1bnNp
Z25lZCBsb25nIHBjYl90ZW1wOworCWludCBwY2JfdGVtcDsKIAogCWlmICghZGF0YSkKIAkJcmV0
dXJuIDA7CkBAIC0xMTksNyArMTE5LDcgQEAgc3RhdGljIGlubGluZSBpbnQgX190aV90aGVybWFs
X2dldF90ZW1wKHZvaWQgKmRldmRhdGEsIGxvbmcgKnRlbXApCiB9CiAKIHN0YXRpYyBpbmxpbmUg
aW50IHRpX3RoZXJtYWxfZ2V0X3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnRoZXJt
YWwsCi0JCQkJICAgICAgdW5zaWduZWQgbG9uZyAqdGVtcCkKKwkJCQkgICAgICBpbnQgKnRlbXAp
CiB7CiAJc3RydWN0IHRpX3RoZXJtYWxfZGF0YSAqZGF0YSA9IHRoZXJtYWwtPmRldmRhdGE7CiAK
QEAgLTIyOSw3ICsyMjksNyBAQCBzdGF0aWMgaW50IHRpX3RoZXJtYWxfZ2V0X3RyaXBfdHlwZShz
dHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdGhlcm1hbCwKIAogLyogR2V0IHRyaXAgdGVtcGVy
YXR1cmUgY2FsbGJhY2sgZnVuY3Rpb25zIGZvciB0aGVybWFsIHpvbmUgKi8KIHN0YXRpYyBpbnQg
dGlfdGhlcm1hbF9nZXRfdHJpcF90ZW1wKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0aGVy
bWFsLAotCQkJCSAgICBpbnQgdHJpcCwgdW5zaWduZWQgbG9uZyAqdGVtcCkKKwkJCQkgICAgaW50
IHRyaXAsIGludCAqdGVtcCkKIHsKIAlpZiAoIXRpX3RoZXJtYWxfaXNfdmFsaWRfdHJpcCh0cmlw
KSkKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0yODAsNyArMjgwLDcgQEAgc3RhdGljIGludCB0aV90
aGVybWFsX2dldF90cmVuZChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdGhlcm1hbCwKIAog
LyogR2V0IGNyaXRpY2FsIHRlbXBlcmF0dXJlIGNhbGxiYWNrIGZ1bmN0aW9ucyBmb3IgdGhlcm1h
bCB6b25lICovCiBzdGF0aWMgaW50IHRpX3RoZXJtYWxfZ2V0X2NyaXRfdGVtcChzdHJ1Y3QgdGhl
cm1hbF96b25lX2RldmljZSAqdGhlcm1hbCwKLQkJCQkgICAgdW5zaWduZWQgbG9uZyAqdGVtcCkK
KwkJCQkgICAgaW50ICp0ZW1wKQogewogCS8qIHNodXRkb3duIHpvbmUgKi8KIAlyZXR1cm4gdGlf
dGhlcm1hbF9nZXRfdHJpcF90ZW1wKHRoZXJtYWwsIE9NQVBfVFJJUF9OVU1CRVIgLSAxLCB0ZW1w
KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGhlcm1hbC94ODZfcGtnX3RlbXBfdGhlcm1hbC5jIGIv
ZHJpdmVycy90aGVybWFsL3g4Nl9wa2dfdGVtcF90aGVybWFsLmMKaW5kZXggNTBkMWQyYy4uN2Zj
OTE5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy90aGVybWFsL3g4Nl9wa2dfdGVtcF90aGVybWFsLmMK
KysrIGIvZHJpdmVycy90aGVybWFsL3g4Nl9wa2dfdGVtcF90aGVybWFsLmMKQEAgLTE2NCw3ICsx
NjQsNyBAQCBlcnJfcmV0OgogCXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyBpbnQgc3lzX2dldF9j
dXJyX3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6ZCwgdW5zaWduZWQgbG9uZyAq
dGVtcCkKK3N0YXRpYyBpbnQgc3lzX2dldF9jdXJyX3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9k
ZXZpY2UgKnR6ZCwgaW50ICp0ZW1wKQogewogCXUzMiBlYXgsIGVkeDsKIAlzdHJ1Y3QgcGh5X2Rl
dl9lbnRyeSAqcGh5X2Rldl9lbnRyeTsKQEAgLTE3NSw3ICsxNzUsNyBAQCBzdGF0aWMgaW50IHN5
c19nZXRfY3Vycl90ZW1wKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0emQsIHVuc2lnbmVk
IGxvbmcgKnRlbQogCWlmIChlYXggJiAweDgwMDAwMDAwKSB7CiAJCSp0ZW1wID0gcGh5X2Rldl9l
bnRyeS0+dGpfbWF4IC0KIAkJCQkoKGVheCA+PiAxNikgJiAweDdmKSAqIDEwMDA7Ci0JCXByX2Rl
YnVnKCJzeXNfZ2V0X2N1cnJfdGVtcCAlbGRcbiIsICp0ZW1wKTsKKwkJcHJfZGVidWcoInN5c19n
ZXRfY3Vycl90ZW1wICVkXG4iLCAqdGVtcCk7CiAJCXJldHVybiAwOwogCX0KIApAQCAtMTgzLDcg
KzE4Myw3IEBAIHN0YXRpYyBpbnQgc3lzX2dldF9jdXJyX3RlbXAoc3RydWN0IHRoZXJtYWxfem9u
ZV9kZXZpY2UgKnR6ZCwgdW5zaWduZWQgbG9uZyAqdGVtCiB9CiAKIHN0YXRpYyBpbnQgc3lzX2dl
dF90cmlwX3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6ZCwKLQkJaW50IHRyaXAs
IHVuc2lnbmVkIGxvbmcgKnRlbXApCisJCWludCB0cmlwLCBpbnQgKnRlbXApCiB7CiAJdTMyIGVh
eCwgZWR4OwogCXN0cnVjdCBwaHlfZGV2X2VudHJ5ICpwaHlfZGV2X2VudHJ5OwpAQCAtMjE0LDEz
ICsyMTQsMTMgQEAgc3RhdGljIGludCBzeXNfZ2V0X3RyaXBfdGVtcChzdHJ1Y3QgdGhlcm1hbF96
b25lX2RldmljZSAqdHpkLAogCQkqdGVtcCA9IHBoeV9kZXZfZW50cnktPnRqX21heCAtIHRocmVz
X3JlZ192YWx1ZSAqIDEwMDA7CiAJZWxzZQogCQkqdGVtcCA9IDA7Ci0JcHJfZGVidWcoInN5c19n
ZXRfdHJpcF90ZW1wICVsZFxuIiwgKnRlbXApOworCXByX2RlYnVnKCJzeXNfZ2V0X3RyaXBfdGVt
cCAlZFxuIiwgKnRlbXApOwogCiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgc3lzX3NldF90
cmlwX3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6ZCwgaW50IHRyaXAsCi0JCQkJ
CQkJdW5zaWduZWQgbG9uZyB0ZW1wKQorCQkJCQkJCWludCB0ZW1wKQogewogCXUzMiBsLCBoOwog
CXN0cnVjdCBwaHlfZGV2X2VudHJ5ICpwaHlfZGV2X2VudHJ5OwpkaWZmIC0tZ2l0IGEvaW5jbHVk
ZS9saW51eC90aGVybWFsLmggYi9pbmNsdWRlL2xpbnV4L3RoZXJtYWwuaAppbmRleCAwMzdlOWRm
Li4xNzI5MmZlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3RoZXJtYWwuaAorKysgYi9pbmNs
dWRlL2xpbnV4L3RoZXJtYWwuaApAQCAtOTIsMjMgKzkyLDE5IEBAIHN0cnVjdCB0aGVybWFsX3pv
bmVfZGV2aWNlX29wcyB7CiAJCSAgICAgc3RydWN0IHRoZXJtYWxfY29vbGluZ19kZXZpY2UgKik7
CiAJaW50ICgqdW5iaW5kKSAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKiwKIAkJICAgICAg
IHN0cnVjdCB0aGVybWFsX2Nvb2xpbmdfZGV2aWNlICopOwotCWludCAoKmdldF90ZW1wKSAoc3Ry
dWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKiwgdW5zaWduZWQgbG9uZyAqKTsKKwlpbnQgKCpnZXRf
dGVtcCkgKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICosIGludCAqKTsKIAlpbnQgKCpnZXRf
bW9kZSkgKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICosCiAJCQkgZW51bSB0aGVybWFsX2Rl
dmljZV9tb2RlICopOwogCWludCAoKnNldF9tb2RlKSAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZp
Y2UgKiwKIAkJZW51bSB0aGVybWFsX2RldmljZV9tb2RlKTsKIAlpbnQgKCpnZXRfdHJpcF90eXBl
KSAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKiwgaW50LAogCQllbnVtIHRoZXJtYWxfdHJp
cF90eXBlICopOwotCWludCAoKmdldF90cmlwX3RlbXApIChzdHJ1Y3QgdGhlcm1hbF96b25lX2Rl
dmljZSAqLCBpbnQsCi0JCQkgICAgICB1bnNpZ25lZCBsb25nICopOwotCWludCAoKnNldF90cmlw
X3RlbXApIChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqLCBpbnQsCi0JCQkgICAgICB1bnNp
Z25lZCBsb25nKTsKLQlpbnQgKCpnZXRfdHJpcF9oeXN0KSAoc3RydWN0IHRoZXJtYWxfem9uZV9k
ZXZpY2UgKiwgaW50LAotCQkJICAgICAgdW5zaWduZWQgbG9uZyAqKTsKLQlpbnQgKCpzZXRfdHJp
cF9oeXN0KSAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKiwgaW50LAotCQkJICAgICAgdW5z
aWduZWQgbG9uZyk7Ci0JaW50ICgqZ2V0X2NyaXRfdGVtcCkgKHN0cnVjdCB0aGVybWFsX3pvbmVf
ZGV2aWNlICosIHVuc2lnbmVkIGxvbmcgKik7Ci0JaW50ICgqc2V0X2VtdWxfdGVtcCkgKHN0cnVj
dCB0aGVybWFsX3pvbmVfZGV2aWNlICosIHVuc2lnbmVkIGxvbmcpOworCWludCAoKmdldF90cmlw
X3RlbXApIChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqLCBpbnQsIGludCAqKTsKKwlpbnQg
KCpzZXRfdHJpcF90ZW1wKSAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKiwgaW50LCBpbnQp
OworCWludCAoKmdldF90cmlwX2h5c3QpIChzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqLCBp
bnQsIGludCAqKTsKKwlpbnQgKCpzZXRfdHJpcF9oeXN0KSAoc3RydWN0IHRoZXJtYWxfem9uZV9k
ZXZpY2UgKiwgaW50LCBpbnQpOworCWludCAoKmdldF9jcml0X3RlbXApIChzdHJ1Y3QgdGhlcm1h
bF96b25lX2RldmljZSAqLCBpbnQgKik7CisJaW50ICgqc2V0X2VtdWxfdGVtcCkgKHN0cnVjdCB0
aGVybWFsX3pvbmVfZGV2aWNlICosIGludCk7CiAJaW50ICgqZ2V0X3RyZW5kKSAoc3RydWN0IHRo
ZXJtYWxfem9uZV9kZXZpY2UgKiwgaW50LAogCQkJICBlbnVtIHRoZXJtYWxfdHJlbmQgKik7CiAJ
aW50ICgqbm90aWZ5KSAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKiwgaW50LApAQCAtMzMy
LDkgKzMyOCw5IEBAIHN0cnVjdCB0aGVybWFsX2dlbmxfZXZlbnQgewogICoJCSAgIHRlbXBlcmF0
dXJlLgogICovCiBzdHJ1Y3QgdGhlcm1hbF96b25lX29mX2RldmljZV9vcHMgewotCWludCAoKmdl
dF90ZW1wKSh2b2lkICosIGxvbmcgKik7CisJaW50ICgqZ2V0X3RlbXApKHZvaWQgKiwgaW50ICop
OwogCWludCAoKmdldF90cmVuZCkodm9pZCAqLCBsb25nICopOwotCWludCAoKnNldF9lbXVsX3Rl
bXApKHZvaWQgKiwgdW5zaWduZWQgbG9uZyk7CisJaW50ICgqc2V0X2VtdWxfdGVtcCkodm9pZCAq
LCBpbnQpOwogfTsKIAogLyoqCkBAIC00MDYsNyArNDAyLDcgQEAgdGhlcm1hbF9vZl9jb29saW5n
X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBjaGFyICosIHZvaWQgKiwK
IAkJCQkgICBjb25zdCBzdHJ1Y3QgdGhlcm1hbF9jb29saW5nX2RldmljZV9vcHMgKik7CiB2b2lk
IHRoZXJtYWxfY29vbGluZ19kZXZpY2VfdW5yZWdpc3RlcihzdHJ1Y3QgdGhlcm1hbF9jb29saW5n
X2RldmljZSAqKTsKIHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0aGVybWFsX3pvbmVfZ2V0
X3pvbmVfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKTsKLWludCB0aGVybWFsX3pvbmVfZ2V0X3Rl
bXAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6LCB1bnNpZ25lZCBsb25nICp0ZW1wKTsK
K2ludCB0aGVybWFsX3pvbmVfZ2V0X3RlbXAoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6
LCBpbnQgKnRlbXApOwogCiBpbnQgZ2V0X3R6X3RyZW5kKHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2
aWNlICosIGludCk7CiBzdHJ1Y3QgdGhlcm1hbF9pbnN0YW5jZSAqZ2V0X3RoZXJtYWxfaW5zdGFu
Y2Uoc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKiwKQEAgLTQ1Nyw3ICs0NTMsNyBAQCBzdGF0
aWMgaW5saW5lIHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0aGVybWFsX3pvbmVfZ2V0X3pv
bmVfYnlfbmFtZSgKIAkJY29uc3QgY2hhciAqbmFtZSkKIHsgcmV0dXJuIEVSUl9QVFIoLUVOT0RF
Vik7IH0KIHN0YXRpYyBpbmxpbmUgaW50IHRoZXJtYWxfem9uZV9nZXRfdGVtcCgKLQkJc3RydWN0
IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6LCB1bnNpZ25lZCBsb25nICp0ZW1wKQorCQlzdHJ1Y3Qg
dGhlcm1hbF96b25lX2RldmljZSAqdHosIGludCAqdGVtcCkKIHsgcmV0dXJuIC1FTk9ERVY7IH0K
IHN0YXRpYyBpbmxpbmUgaW50IGdldF90el90cmVuZChzdHJ1Y3QgdGhlcm1hbF96b25lX2Rldmlj
ZSAqdHosIGludCB0cmlwKQogeyByZXR1cm4gLUVOT0RFVjsgfQotLSAKMi4xLjQKCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsbS1zZW5zb3JzIG1haWxp
bmcgbGlzdApsbS1zZW5zb3JzQGxtLXNlbnNvcnMub3JnCmh0dHA6Ly9saXN0cy5sbS1zZW5zb3Jz
Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xtLXNlbnNvcnM

             reply	other threads:[~2015-07-06  7:19 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-06  7:19 Sascha Hauer [this message]
2015-07-06  7:19 ` [lm-sensors] [PATCH] thermal: consistently use int for temperatures Sascha Hauer
2015-07-06  7:19 ` Sascha Hauer
2015-07-06  8:34 ` Geert Uytterhoeven
2015-07-06  8:34   ` [lm-sensors] " Geert Uytterhoeven
2015-07-06  8:34   ` Geert Uytterhoeven
2015-07-06  8:34   ` Geert Uytterhoeven
2015-07-06  8:34   ` Geert Uytterhoeven
2015-07-06 10:25 ` Jean Delvare
2015-07-06 10:25   ` [lm-sensors] " Jean Delvare
2015-07-06 10:25   ` Jean Delvare
2015-07-06 10:26 ` Lukasz Majewski
2015-07-06 10:26   ` [lm-sensors] " Lukasz Majewski
2015-07-06 10:26   ` Lukasz Majewski
2015-07-06 10:26   ` Lukasz Majewski
2015-07-06 18:18 ` Darren Hart
2015-07-06 18:18   ` [lm-sensors] " Darren Hart
2015-07-06 18:18   ` Darren Hart
2015-07-06 19:07 ` Heiko Stübner
2015-07-06 19:07   ` [lm-sensors] " Heiko Stübner
2015-07-06 19:07   ` Heiko Stübner
2015-07-06 19:07   ` Heiko Stübner
2015-07-08  8:11 ` Peter Feuerer
2015-07-08  8:11   ` [lm-sensors] " Peter Feuerer
2015-07-08  8:11   ` Peter Feuerer
2015-07-08  8:11   ` Peter Feuerer
2015-07-17 11:14 ` Punit Agrawal
2015-07-17 11:14   ` [lm-sensors] " Punit Agrawal
2015-07-17 11:14   ` Punit Agrawal
2015-07-17 11:14   ` Punit Agrawal
2015-07-21  7:31   ` Sascha Hauer
2015-07-21  7:31     ` [lm-sensors] " Sascha Hauer
2015-07-21  7:31     ` Sascha Hauer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1436167189-29835-1-git-send-email-s.hauer@pengutronix.de \
    --to=s.hauer@pengutronix.de \
    --cc=dvhart@infradead.org \
    --cc=edubezval@gmail.com \
    --cc=heiko@sntech.de \
    --cc=jdelvare@suse.de \
    --cc=l.majewski@samsung.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=lm-sensors@lm-sensors.org \
    --cc=maxime.ripard@free-electrons.com \
    --cc=peter@piie.net \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=rjw@rjwysocki.net \
    --cc=rui.zhang@intel.com \
    --cc=swarren@wwwdotorg.org \
    --cc=thierry.reding@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.