regulator: Ensure unique regulator debugfs directory names
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
@@ -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
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.
Cc Alan Tull <[email protected]>Signed-off-by Guenter Roeck <[email protected]>
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@@ -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
Mark Brown
maintainerQuoted 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.
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
Mark Brown
maintainerQuoted 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.
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.