Skip to contentSkip to conversation

regulator: Ensure unique regulator debugfs directory names

PATCH Applied Guenter Roeck 2 participants 6 messages Oct 17, 2014 – Mar 28, 2015 Voltage and current regulator framework

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 regulator: Ensure unique regulator debugfs directory names

If multiple regulator devices of the same type exist in a system, the regulator driver assigns generic names for the regulators it provides, and debugfs is enabled, the regulator subsystem attempts to create multiple entries with the same name in the regulator debugfs directory. This fails for all but the first regulator, resulting in multiple "Failed to create debugfs directory" log entries.

To avoid the problem, prepend the debugfs directory name for a regulator with its parent device name if available, but only if no explicit regulator name was provided.

---
 drivers/regulator/core.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)
drivers/regulator/core.c +12 -1
index cd87c0c..92f7a53 100644
@@ -3538,7 +3538,18 @@ static int add_regulator_attributes(struct regulator_dev *rdev)
 
 static void rdev_init_debugfs(struct regulator_dev *rdev)
 {
-	rdev->debugfs = debugfs_create_dir(rdev_get_name(rdev), debugfs_root);
+	struct device *parent = rdev->dev.parent;
+	const char *rname = rdev_get_name(rdev);
+	char name[NAME_MAX];
+
+	/* Avoid duplicate debugfs directory names */
+	if (parent && rname == rdev->desc->name) {
+		snprintf(name, sizeof(name), "%s-%s", dev_name(parent),
+			 rname);
+		rname = name;
+	}
+
+	rdev->debugfs = debugfs_create_dir(rname, debugfs_root);
 	if (!rdev->debugfs) {
 		rdev_warn(rdev, "Failed to create debugfs directory\n");
 		return;
Signature · 1 line
1.9.1
#1 lore raw
Quoted 7 lines · Guenter Roeck

If multiple regulator devices of the same type exist in a system, the regulator driver assigns generic names for the regulators it provides, and debugfs is enabled, the regulator subsystem attempts to create multiple entries with the same name in the regulator debugfs directory. This fails for all but the first regulator, resulting in multiple "Failed to create debugfs directory" log entries.

Quoted 6 lines

To avoid the problem, prepend the debugfs directory name for a regulator with its parent device name if available, but only if no explicit regulator name was provided.

Hi Mark,

did you have time to look into this patch ?

Thanks,
Guenter

Quoted 31 lines
---
 drivers/regulator/core.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)
drivers/regulator/core.c +12 -1
index cd87c0c..92f7a53 100644
@@ -3538,7 +3538,18 @@ static int add_regulator_attributes(struct regulator_dev *rdev)
 
 static void rdev_init_debugfs(struct regulator_dev *rdev)
 {
-	rdev->debugfs = debugfs_create_dir(rdev_get_name(rdev), debugfs_root);
+	struct device *parent = rdev->dev.parent;
+	const char *rname = rdev_get_name(rdev);
+	char name[NAME_MAX];
+
+	/* Avoid duplicate debugfs directory names */
+	if (parent && rname == rdev->desc->name) {
+		snprintf(name, sizeof(name), "%s-%s", dev_name(parent),
+			 rname);
+		rname = name;
+	}
+
+	rdev->debugfs = debugfs_create_dir(rname, debugfs_root);
 	if (!rdev->debugfs) {
 		rdev_warn(rdev, "Failed to create debugfs directory\n");
 		return;
Signature · 1 line
1.9.1
maintainer
#2 lore raw
Quoted 9 lines · Guenter Roeck
Quoted 3 lines · Guenter Roeck

To avoid the problem, prepend the debugfs directory name for a regulator with its parent device name if available, but only if no explicit regulator name was provided.

Hi Mark,

did you have time to look into this patch ?

Please don't send contentless, quoted pings. One of two things will be
true: either your patch got lost in which case a quoted copy is of no use in getting the patch applied or the patch is buried under other mail in which case you are at best adding to the email volume and at worst your mail will never be seen as it's threaded in with the original send.

#3 lore raw
Quoted 9 lines · Mark Brown
Quoted 8 lines · Guenter Roeck
Quoted 3 lines · Guenter Roeck

To avoid the problem, prepend the debugfs directory name for a regulator with its parent device name if available, but only if no explicit regulator name was provided.

Hi Mark,

Quoted 8 lines
Quoted 1 line

did you have time to look into this patch ?

Please don't send contentless, quoted pings. One of two things will be
true: either your patch got lost in which case a quoted copy is of no use in getting the patch applied or the patch is buried under other mail in which case you are at best adding to the email volume and at worst your mail will never be seen as it's threaded in with the original send.

Hi Mark,

Sorry, I have no idea how you expect me (and others) to handle situations like this, much less with this patch. Please keep in mind that this is a per-maintainer process, and each maintainer handles things differently. Individual maintainers may expect me to send a ping like I did, or to resend the patch, or they may not reply because they dislike the patch and they don't want to be bothered with a discussion. Some even go ballistic if they get an e-mail with more than 80 columns of text.

Negotiating a minefield sometimes seems easier than submitting kernel patches :-(.

I can't even find out by browsing the regulator mailing list since it appears that there is no such list.

Guenter

maintainer
#4 lore raw
Quoted 5 lines · Guenter Roeck

Sorry, I have no idea how you expect me (and others) to handle situations like this, much less with this patch. Please keep in mind that this is a per-maintainer process, and each maintainer handles things differently. Individual maintainers may expect me to send a ping like I did, or to resend the patch, or they may not reply because they dislike the patch

The default process is to resend the patch; I'm sure there are some people who won't like that for some reason but it's reasonably rare.

Quoted 2 lines

and they don't want to be bothered with a discussion. Some even go ballistic if they get an e-mail with more than 80 columns of text.

That's going to annoy essentially everyone, some people will be more vocal than others but it's just a pretty basic thin.

Quoted 2 lines

I can't even find out by browsing the regulator mailing list since it appears that there is no such list.

lkml.

maintainer Applied
#5 lore raw
In reply to Guenter Roeck
Quoted 6 lines · Guenter Roeck

If multiple regulator devices of the same type exist in a system, the regulator driver assigns generic names for the regulators it provides, and debugfs is enabled, the regulator subsystem attempts to create multiple entries with the same name in the regulator debugfs directory. This fails for all but the first regulator, resulting in multiple "Failed to create debugfs directory" log entries.

Applied, thanks.