--- /dev/null
+From fa731ac7ea04a7d3a5c6d2f568132478c02a83b3 Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Fri, 20 Nov 2015 15:24:39 +0100
+Subject: regulator: core: avoid unused variable warning
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit fa731ac7ea04a7d3a5c6d2f568132478c02a83b3 upstream.
+
+The second argument of the mutex_lock_nested() helper is only
+evaluated if CONFIG_DEBUG_LOCK_ALLOC is set. Otherwise we
+get this build warning for the new regulator_lock_supply
+function:
+
+drivers/regulator/core.c: In function 'regulator_lock_supply':
+drivers/regulator/core.c:142:6: warning: unused variable 'i' [-Wunused-variable]
+
+To avoid the warning, this restructures the code to make it
+both simpler and to move the 'i++' outside of the mutex_lock_nested
+call, where it is now always used and the variable is not
+flagged as unused.
+
+We had some discussion about changing mutex_lock_nested to an
+inline function, which would make the code do the right thing here,
+but in the end decided against it, in order to guarantee that
+mutex_lock_nested() does not introduced overhead without
+CONFIG_DEBUG_LOCK_ALLOC.
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Fixes: 9f01cd4a915 ("regulator: core: introduce function to lock regulators and its supplies")
+Link: http://permalink.gmane.org/gmane.linux.kernel/2068900
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/regulator/core.c | 14 +++-----------
+ 1 file changed, 3 insertions(+), 11 deletions(-)
+
+--- a/drivers/regulator/core.c
++++ b/drivers/regulator/core.c
+@@ -138,18 +138,10 @@ static bool have_full_constraints(void)
+ */
+ static void regulator_lock_supply(struct regulator_dev *rdev)
+ {
+- struct regulator *supply;
+- int i = 0;
++ int i;
+
+- while (1) {
+- mutex_lock_nested(&rdev->mutex, i++);
+- supply = rdev->supply;
+-
+- if (!rdev->supply)
+- return;
+-
+- rdev = supply->rdev;
+- }
++ for (i = 0; rdev->supply; rdev = rdev->supply->rdev, i++)
++ mutex_lock_nested(&rdev->mutex, i);
+ }
+
+ /**
--- /dev/null
+From 70a7fb80e85ae7f78f8e90cec3fbd862ea6a4d4b Mon Sep 17 00:00:00 2001
+From: Thierry Reding <treding@nvidia.com>
+Date: Wed, 2 Dec 2015 16:54:50 +0100
+Subject: regulator: core: Fix nested locking of supplies
+
+From: Thierry Reding <treding@nvidia.com>
+
+commit 70a7fb80e85ae7f78f8e90cec3fbd862ea6a4d4b upstream.
+
+Commit fa731ac7ea04 ("regulator: core: avoid unused variable warning")
+introduced a subtle change in how supplies are locked. Where previously
+code was always locking the regulator of the current iteration, the new
+implementation only locks the regulator if it has a supply. For any
+given power tree that means that the root will never get locked.
+
+On the other hand the regulator_unlock_supply() will still release all
+the locks, which in turn causes the lock debugging code to warn about a
+mutex being unlocked which wasn't locked.
+
+Cc: Mark Brown <broonie@kernel.org>
+Cc: Arnd Bergmann <arnd@arndb.de>
+Fixes: Fixes: fa731ac7ea04 ("regulator: core: avoid unused variable warning")
+Signed-off-by: Thierry Reding <treding@nvidia.com>
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/regulator/core.c | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+--- a/drivers/regulator/core.c
++++ b/drivers/regulator/core.c
+@@ -132,6 +132,14 @@ static bool have_full_constraints(void)
+ return has_full_constraints || of_have_populated_dt();
+ }
+
++static inline struct regulator_dev *rdev_get_supply(struct regulator_dev *rdev)
++{
++ if (rdev && rdev->supply)
++ return rdev->supply->rdev;
++
++ return NULL;
++}
++
+ /**
+ * regulator_lock_supply - lock a regulator and its supplies
+ * @rdev: regulator source
+@@ -140,7 +148,7 @@ static void regulator_lock_supply(struct
+ {
+ int i;
+
+- for (i = 0; rdev->supply; rdev = rdev->supply->rdev, i++)
++ for (i = 0; rdev->supply; rdev = rdev_get_supply(rdev), i++)
+ mutex_lock_nested(&rdev->mutex, i);
+ }
+
instruction.
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
-Cc: stable@vger.kernel.org # v4.4+
Fixes: e22cf8ca6f75 ("s390/cpumf: rework program parameter setting to detect guest samples")
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
s390-cpumf-fix-lpp-detection.patch
+regulator-core-avoid-unused-variable-warning.patch
+regulator-core-fix-nested-locking-of-supplies.patch