lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 10 Apr 2015 13:48:41 +0200
From:	Heiko Stübner <heiko@...ech.de>
To:	Mark Brown <broonie@...nel.org>,
	Liam Girdwood <lgirdwood@...il.com>
Cc:	linux-kernel@...r.kernel.org
Subject: [PATCH] regulator: output current-limit for all regulators in summary

Voltage regulators can have (unregulated) current limits too, so we should
probably output both voltage and current for all regulators.

Holding the rdev->mutex actually conflicts with _regulator_get_current_limit
but also is not really necessary, as the global regulator_list_mutex already
protects us from the regulator vanishing while we go through the list.

On the rk3288-firefly the summary now looks like:

 regulator                      use open bypass voltage current     min     max
-------------------------------------------------------------------------------
 vcc_sys                          0   12      0  5000mV     0mA  5000mV  5000mV
    vcc_lan                       1    1      0  3300mV     0mA  3300mV  3300mV
       ff290000.ethernet                                            0mV     0mV
    vcca_33                       0    0      0  3300mV     0mA  3300mV  3300mV
    vcca_18                       0    0      0  1800mV     0mA  1800mV  1800mV
    vdd10_lcd                     0    0      0  1000mV     0mA  1000mV  1000mV
 [...]

Suggested-by: Mark Brown <broonie@...nel.org>
Signed-off-by: Heiko Stuebner <heiko@...ech.de>
---
 drivers/regulator/core.c | 24 +++++-------------------
 1 file changed, 5 insertions(+), 19 deletions(-)

diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index fb2c8d5..2cf51f4 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -3949,23 +3949,13 @@ static void regulator_summary_show_subtree(struct seq_file *s,
 	if (!rdev)
 		return;
 
-	mutex_lock(&rdev->mutex);
-
 	seq_printf(s, "%*s%-*s %3d %4d %6d ",
 		   level * 3 + 1, "",
 		   30 - level * 3, rdev_get_name(rdev),
 		   rdev->use_count, rdev->open_count, rdev->bypass_count);
 
-	switch (rdev->desc->type) {
-	case REGULATOR_VOLTAGE:
-		seq_printf(s, "%5dmV ",
-			   _regulator_get_voltage(rdev) / 1000);
-		break;
-	case REGULATOR_CURRENT:
-		seq_printf(s, "%5dmA ",
-			   _regulator_get_current_limit(rdev) / 1000);
-		break;
-	}
+	seq_printf(s, "%5dmV ", _regulator_get_voltage(rdev) / 1000);
+	seq_printf(s, "%5dmA ", _regulator_get_current_limit(rdev) / 1000);
 
 	c = rdev->constraints;
 	if (c) {
@@ -3993,21 +3983,17 @@ static void regulator_summary_show_subtree(struct seq_file *s,
 
 		switch (rdev->desc->type) {
 		case REGULATOR_VOLTAGE:
-			seq_printf(s, "%29dmV %5dmV",
+			seq_printf(s, "%37dmV %5dmV",
 				   consumer->min_uV / 1000,
 				   consumer->max_uV / 1000);
 			break;
 		case REGULATOR_CURRENT:
-			seq_printf(s, "%37dmA",
-				regulator_get_current_limit(consumer) / 1000);
 			break;
 		}
 
 		seq_puts(s, "\n");
 	}
 
-	mutex_unlock(&rdev->mutex);
-
 	list_for_each_entry(child, list, list) {
 		/* handle only non-root regulators supplied by current rdev */
 		if (!child->supply || child->supply->rdev != rdev)
@@ -4022,8 +4008,8 @@ static int regulator_summary_show(struct seq_file *s, void *data)
 	struct list_head *list = s->private;
 	struct regulator_dev *rdev;
 
-	seq_puts(s, " regulator                      use open bypass   value     min     max\n");
-	seq_puts(s, "-----------------------------------------------------------------------\n");
+	seq_puts(s, " regulator                      use open bypass voltage current     min     max\n");
+	seq_puts(s, "-------------------------------------------------------------------------------\n");
 
 	mutex_lock(&regulator_list_mutex);
 
-- 
2.1.4


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ