Thread (39 messages) 39 messages, 4 authors, 2015-09-15

Re: [PATCH v3 05/18] regulator: core: Reduce critical area in _regulator_get

From: Mark Brown <broonie@kernel.org>
Date: 2015-08-07 12:08:27
Also in: linux-acpi, linux-arm-kernel, lkml

On Thu, Aug 06, 2015 at 04:11:42PM +0200, Tomeu Vizoso wrote:
This backtrace illustrates the situation described above:

(regulator_register) from [<c05efe64>]
(devm_regulator_register+0x48/0x84)
Please don't paste entire backtraces into commit messages, they are
enormous and contain very little useful content - they just obscure
actual information in the commit message.  If you feel there's useful
information in there just include edited highlights with only that.
+static int _regulator_enable(struct regulator *regulator, bool do_lock)
 {
-	int ret;
+	struct regulator_dev *rdev = regulator->rdev;
+	int ret = 0;
 
-	lockdep_assert_held_once(&rdev->mutex);
+	if (regulator->always_on)
+		return 0;
+
+	if (rdev->supply) {
+		ret = regulator_enable(rdev->supply);
+		if (ret != 0)
+			return ret;
+	}
+
+	if (do_lock)
+		mutex_lock(&rdev->mutex);
+	else
+		lockdep_assert_held_once(&rdev->mutex);
Eew.  This do_lock stuff is *not* nice and going to be fragile.  I'm not
a fan, we need something better.

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help