mx28evk: kernel dump on sgtl5000 probe

5 messages, 5 authors, 2012-07-05 · open the first message on its own page

mx28evk: kernel dump on sgtl5000 probe

From: festevam@gmail.com (Fabio Estevam)
Date: 2012-07-04 03:53:34

Hi,

Running linux-next on a mx28evk I get the following:

[    0.930000] ------------[ cut here ]------------
[    0.940000] WARNING: at fs/sysfs/dir.c:526 sysfs_add_one+0x90/0xc0()
[    0.940000] sysfs: cannot create duplicate filename
'/devices/platform/reg-fixed-voltage/regulator/regulator.1/0-000a-VDDA'
[    0.950000] Modules linked in:
[    0.960000] [<c0014930>] (unwind_backtrace+0x0/0xf4) from
[<c001c054>] (warn_slowpath_common+0x4c/0x64)
[    0.970000] [<c001c054>] (warn_slowpath_common+0x4c/0x64) from
[<c001c100>] (warn_slowpath_fmt+0x30/0x40)
[    0.980000] [<c001c100>] (warn_slowpath_fmt+0x30/0x40) from
[<c0123b04>] (sysfs_add_one+0x90/0xc0)
[    0.990000] [<c0123b04>] (sysfs_add_one+0x90/0xc0) from
[<c0124d10>] (sysfs_do_create_link+0x128/0x224)
[    1.000000] [<c0124d10>] (sysfs_do_create_link+0x128/0x224) from
[<c01c4f60>] (create_regulator+0xbc/0x254)
[    1.010000] [<c01c4f60>] (create_regulator+0xbc/0x254) from
[<c01c6758>] (_regulator_get+0x9c/0x138)
[    1.020000] [<c01c6758>] (_regulator_get+0x9c/0x138) from
[<c01c684c>] (regulator_bulk_get+0x48/0xc0)
[    1.020000] [<c01c684c>] (regulator_bulk_get+0x48/0xc0) from
[<c0250f70>] (sgtl5000_replace_vddd_with_ldo+0xf8/0x1cc)
[    1.040000] [<c0250f70>]
(sgtl5000_replace_vddd_with_ldo+0xf8/0x1cc) from [<c02510c0>]
(sgtl5000_probe+0x7c/0x4dc)
[    1.050000] [<c02510c0>] (sgtl5000_probe+0x7c/0x4dc) from
[<c0244c04>] (soc_probe_codec+0x180/0x290)
[    1.060000] [<c0244c04>] (soc_probe_codec+0x180/0x290) from
[<c02454ec>] (snd_soc_register_card+0x7d8/0x1348)
[    1.070000] [<c02454ec>] (snd_soc_register_card+0x7d8/0x1348) from
[<c02f141c>] (mxs_sgtl5000_probe+0xf8/0x138)
[    1.080000] [<c02f141c>] (mxs_sgtl5000_probe+0xf8/0x138) from
[<c01eb4fc>] (platform_drv_probe+0x14/0x18)
[    1.090000] [<c01eb4fc>] (platform_drv_probe+0x14/0x18) from
[<c01ea1d4>] (driver_probe_device+0x80/0x214)
[    1.100000] [<c01ea1d4>] (driver_probe_device+0x80/0x214) from
[<c01ea3fc>] (__driver_attach+0x94/0x98)
[    1.110000] [<c01ea3fc>] (__driver_attach+0x94/0x98) from
[<c01e8afc>] (bus_for_each_dev+0x64/0x8c)
[    1.110000] [<c01e8afc>] (bus_for_each_dev+0x64/0x8c) from
[<c01e9364>] (bus_add_driver+0x194/0x270)
[    1.120000] [<c01e9364>] (bus_add_driver+0x194/0x270) from
[<c01ea9dc>] (driver_register+0x78/0x12c)
[    1.130000] [<c01ea9dc>] (driver_register+0x78/0x12c) from
[<c000874c>] (do_one_initcall+0x30/0x17c)
[    1.140000] [<c000874c>] (do_one_initcall+0x30/0x17c) from
[<c0413314>] (kernel_init+0xe8/0x1b4)
[    1.150000] [<c0413314>] (kernel_init+0xe8/0x1b4) from [<c001012c>]
(kernel_thread_exit+0x0/0x8)
[    1.160000] ---[ end trace 71dcd8a3218c5e53 ]---
[    1.170000] 3V3: could not add device link 0-000a err -17
[    1.180000] ------------[ cut here ]------------
[    1.180000] WARNING: at fs/sysfs/dir.c:526 sysfs_add_one+0x90/0xc0()
[    1.190000] sysfs: cannot create duplicate filename
'/devices/platform/reg-fixed-voltage/regulator/regulator.1/0-000a-VDDIO'
[    1.200000] Modules linked in:
[    1.210000] [<c0014930>] (unwind_backtrace+0x0/0xf4) from
[<c001c054>] (warn_slowpath_common+0x4c/0x64)
[    1.210000] [<c001c054>] (warn_slowpath_common+0x4c/0x64) from
[<c001c100>] (warn_slowpath_fmt+0x30/0x40)
[    1.220000] [<c001c100>] (warn_slowpath_fmt+0x30/0x40) from
[<c0123b04>] (sysfs_add_one+0x90/0xc0)
[    1.230000] [<c0123b04>] (sysfs_add_one+0x90/0xc0) from
[<c0124d10>] (sysfs_do_create_link+0x128/0x224)
[    1.240000] [<c0124d10>] (sysfs_do_create_link+0x128/0x224) from
[<c01c4f60>] (create_regulator+0xbc/0x254)
[    1.250000] [<c01c4f60>] (create_regulator+0xbc/0x254) from
[<c01c6758>] (_regulator_get+0x9c/0x138)
[    1.260000] [<c01c6758>] (_regulator_get+0x9c/0x138) from
[<c01c684c>] (regulator_bulk_get+0x48/0xc0)
[    1.270000] [<c01c684c>] (regulator_bulk_get+0x48/0xc0) from
[<c0250f70>] (sgtl5000_replace_vddd_with_ldo+0xf8/0x1cc)
[    1.280000] [<c0250f70>]
(sgtl5000_replace_vddd_with_ldo+0xf8/0x1cc) from [<c02510c0>]
(sgtl5000_probe+0x7c/0x4dc)
[    1.290000] [<c02510c0>] (sgtl5000_probe+0x7c/0x4dc) from
[<c0244c04>] (soc_probe_codec+0x180/0x290)
[    1.300000] [<c0244c04>] (soc_probe_codec+0x180/0x290) from
[<c02454ec>] (snd_soc_register_card+0x7d8/0x1348)
[    1.310000] [<c02454ec>] (snd_soc_register_card+0x7d8/0x1348) from
[<c02f141c>] (mxs_sgtl5000_probe+0xf8/0x138)
[    1.320000] [<c02f141c>] (mxs_sgtl5000_probe+0xf8/0x138) from
[<c01eb4fc>] (platform_drv_probe+0x14/0x18)
[    1.330000] [<c01eb4fc>] (platform_drv_probe+0x14/0x18) from
[<c01ea1d4>] (driver_probe_device+0x80/0x214)
[    1.340000] [<c01ea1d4>] (driver_probe_device+0x80/0x214) from
[<c01ea3fc>] (__driver_attach+0x94/0x98)
[    1.350000] [<c01ea3fc>] (__driver_attach+0x94/0x98) from
[<c01e8afc>] (bus_for_each_dev+0x64/0x8c)
[    1.360000] [<c01e8afc>] (bus_for_each_dev+0x64/0x8c) from
[<c01e9364>] (bus_add_driver+0x194/0x270)
[    1.370000] [<c01e9364>] (bus_add_driver+0x194/0x270) from
[<c01ea9dc>] (driver_register+0x78/0x12c)
[    1.380000] [<c01ea9dc>] (driver_register+0x78/0x12c) from
[<c000874c>] (do_one_initcall+0x30/0x17c)
[    1.390000] [<c000874c>] (do_one_initcall+0x30/0x17c) from
[<c0413314>] (kernel_init+0xe8/0x1b4)
[    1.400000] [<c0413314>] (kernel_init+0xe8/0x1b4) from [<c001012c>]
(kernel_thread_exit+0x0/0x8)
[    1.410000] ---[ end trace 71dcd8a3218c5e54 ]---
[    1.410000] 3V3: could not add device link 0-000a err -17

I haven't started debugging this yet, but just would like to check if
it is a known issue.

Regards,

Fabio Estevam

mx28evk: kernel dump on sgtl5000 probe

From: marex@denx.de (Marek Vasut)
Date: 2012-07-04 04:36:02

Dear Fabio Estevam,
Hi,

Running linux-next on a mx28evk I get the following:

[    0.930000] ------------[ cut here ]------------
[    0.940000] WARNING: at fs/sysfs/dir.c:526 sysfs_add_one+0x90/0xc0()
[    0.940000] sysfs: cannot create duplicate filename
'/devices/platform/reg-fixed-voltage/regulator/regulator.1/0-000a-VDDA'
[    0.950000] Modules linked in:
[    0.960000] [<c0014930>] (unwind_backtrace+0x0/0xf4) from
[<c001c054>] (warn_slowpath_common+0x4c/0x64)
[    0.970000] [<c001c054>] (warn_slowpath_common+0x4c/0x64) from
[<c001c100>] (warn_slowpath_fmt+0x30/0x40)
[    0.980000] [<c001c100>] (warn_slowpath_fmt+0x30/0x40) from
[<c0123b04>] (sysfs_add_one+0x90/0xc0)
[    0.990000] [<c0123b04>] (sysfs_add_one+0x90/0xc0) from
[<c0124d10>] (sysfs_do_create_link+0x128/0x224)
[    1.000000] [<c0124d10>] (sysfs_do_create_link+0x128/0x224) from
[<c01c4f60>] (create_regulator+0xbc/0x254)
[    1.010000] [<c01c4f60>] (create_regulator+0xbc/0x254) from
[<c01c6758>] (_regulator_get+0x9c/0x138)
[    1.020000] [<c01c6758>] (_regulator_get+0x9c/0x138) from
[<c01c684c>] (regulator_bulk_get+0x48/0xc0)
[    1.020000] [<c01c684c>] (regulator_bulk_get+0x48/0xc0) from
[<c0250f70>] (sgtl5000_replace_vddd_with_ldo+0xf8/0x1cc)
[    1.040000] [<c0250f70>]
(sgtl5000_replace_vddd_with_ldo+0xf8/0x1cc) from [<c02510c0>]
(sgtl5000_probe+0x7c/0x4dc)
[    1.050000] [<c02510c0>] (sgtl5000_probe+0x7c/0x4dc) from
[<c0244c04>] (soc_probe_codec+0x180/0x290)
[    1.060000] [<c0244c04>] (soc_probe_codec+0x180/0x290) from
[<c02454ec>] (snd_soc_register_card+0x7d8/0x1348)
[    1.070000] [<c02454ec>] (snd_soc_register_card+0x7d8/0x1348) from
[<c02f141c>] (mxs_sgtl5000_probe+0xf8/0x138)
[    1.080000] [<c02f141c>] (mxs_sgtl5000_probe+0xf8/0x138) from
[<c01eb4fc>] (platform_drv_probe+0x14/0x18)
[    1.090000] [<c01eb4fc>] (platform_drv_probe+0x14/0x18) from
[<c01ea1d4>] (driver_probe_device+0x80/0x214)
[    1.100000] [<c01ea1d4>] (driver_probe_device+0x80/0x214) from
[<c01ea3fc>] (__driver_attach+0x94/0x98)
[    1.110000] [<c01ea3fc>] (__driver_attach+0x94/0x98) from
[<c01e8afc>] (bus_for_each_dev+0x64/0x8c)
[    1.110000] [<c01e8afc>] (bus_for_each_dev+0x64/0x8c) from
[<c01e9364>] (bus_add_driver+0x194/0x270)
[    1.120000] [<c01e9364>] (bus_add_driver+0x194/0x270) from
[<c01ea9dc>] (driver_register+0x78/0x12c)
[    1.130000] [<c01ea9dc>] (driver_register+0x78/0x12c) from
[<c000874c>] (do_one_initcall+0x30/0x17c)
[    1.140000] [<c000874c>] (do_one_initcall+0x30/0x17c) from
[<c0413314>] (kernel_init+0xe8/0x1b4)
[    1.150000] [<c0413314>] (kernel_init+0xe8/0x1b4) from [<c001012c>]
(kernel_thread_exit+0x0/0x8)
[    1.160000] ---[ end trace 71dcd8a3218c5e53 ]---
[    1.170000] 3V3: could not add device link 0-000a err -17
[    1.180000] ------------[ cut here ]------------
[    1.180000] WARNING: at fs/sysfs/dir.c:526 sysfs_add_one+0x90/0xc0()
[    1.190000] sysfs: cannot create duplicate filename
'/devices/platform/reg-fixed-voltage/regulator/regulator.1/0-000a-VDDIO'
[    1.200000] Modules linked in:
[    1.210000] [<c0014930>] (unwind_backtrace+0x0/0xf4) from
[<c001c054>] (warn_slowpath_common+0x4c/0x64)
[    1.210000] [<c001c054>] (warn_slowpath_common+0x4c/0x64) from
[<c001c100>] (warn_slowpath_fmt+0x30/0x40)
[    1.220000] [<c001c100>] (warn_slowpath_fmt+0x30/0x40) from
[<c0123b04>] (sysfs_add_one+0x90/0xc0)
[    1.230000] [<c0123b04>] (sysfs_add_one+0x90/0xc0) from
[<c0124d10>] (sysfs_do_create_link+0x128/0x224)
[    1.240000] [<c0124d10>] (sysfs_do_create_link+0x128/0x224) from
[<c01c4f60>] (create_regulator+0xbc/0x254)
[    1.250000] [<c01c4f60>] (create_regulator+0xbc/0x254) from
[<c01c6758>] (_regulator_get+0x9c/0x138)
[    1.260000] [<c01c6758>] (_regulator_get+0x9c/0x138) from
[<c01c684c>] (regulator_bulk_get+0x48/0xc0)
[    1.270000] [<c01c684c>] (regulator_bulk_get+0x48/0xc0) from
[<c0250f70>] (sgtl5000_replace_vddd_with_ldo+0xf8/0x1cc)
[    1.280000] [<c0250f70>]
(sgtl5000_replace_vddd_with_ldo+0xf8/0x1cc) from [<c02510c0>]
(sgtl5000_probe+0x7c/0x4dc)
[    1.290000] [<c02510c0>] (sgtl5000_probe+0x7c/0x4dc) from
[<c0244c04>] (soc_probe_codec+0x180/0x290)
[    1.300000] [<c0244c04>] (soc_probe_codec+0x180/0x290) from
[<c02454ec>] (snd_soc_register_card+0x7d8/0x1348)
[    1.310000] [<c02454ec>] (snd_soc_register_card+0x7d8/0x1348) from
[<c02f141c>] (mxs_sgtl5000_probe+0xf8/0x138)
[    1.320000] [<c02f141c>] (mxs_sgtl5000_probe+0xf8/0x138) from
[<c01eb4fc>] (platform_drv_probe+0x14/0x18)
[    1.330000] [<c01eb4fc>] (platform_drv_probe+0x14/0x18) from
[<c01ea1d4>] (driver_probe_device+0x80/0x214)
[    1.340000] [<c01ea1d4>] (driver_probe_device+0x80/0x214) from
[<c01ea3fc>] (__driver_attach+0x94/0x98)
[    1.350000] [<c01ea3fc>] (__driver_attach+0x94/0x98) from
[<c01e8afc>] (bus_for_each_dev+0x64/0x8c)
[    1.360000] [<c01e8afc>] (bus_for_each_dev+0x64/0x8c) from
[<c01e9364>] (bus_add_driver+0x194/0x270)
[    1.370000] [<c01e9364>] (bus_add_driver+0x194/0x270) from
[<c01ea9dc>] (driver_register+0x78/0x12c)
[    1.380000] [<c01ea9dc>] (driver_register+0x78/0x12c) from
[<c000874c>] (do_one_initcall+0x30/0x17c)
[    1.390000] [<c000874c>] (do_one_initcall+0x30/0x17c) from
[<c0413314>] (kernel_init+0xe8/0x1b4)
[    1.400000] [<c0413314>] (kernel_init+0xe8/0x1b4) from [<c001012c>]
(kernel_thread_exit+0x0/0x8)
[    1.410000] ---[ end trace 71dcd8a3218c5e54 ]---
[    1.410000] 3V3: could not add device link 0-000a err -17

I haven't started debugging this yet, but just would like to check if
it is a known issue.
Confirmed on m28evk
Regards,

Fabio Estevam
Best regards,
Marek Vasut

[PATCH] regulator: core: remove sysfs entry properly in regulator_put

From: Shawn Guo <hidden>
Date: 2012-07-05 06:19:42

With changes introduced by commit 222cc7b (regulator: core: Allow
multiple requests of a single supply mapping) on create_regulator,
regulator_put needs a corresponding update on sysfs entry removing.

Also regulator->dev still needs to get assigned in create_regulator,
otherwise, sysfs_remove_link call in regulator_put will get bypassed.

Reported-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: Shawn Guo <redacted>
---
 drivers/regulator/core.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index ef07b62..3998d8f 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -1071,6 +1071,8 @@ static struct regulator *create_regulator(struct regulator_dev *rdev,
 	list_add(&regulator->list, &rdev->consumer_list);
 
 	if (dev) {
+		regulator->dev = dev;
+
 		/* Add a link to the device sysfs entry */
 		size = scnprintf(buf, REG_STR_SIZE, "%s-%s",
 				 dev->kobj.name, supply_name);
@@ -1367,11 +1369,8 @@ void regulator_put(struct regulator *regulator)
 	debugfs_remove_recursive(regulator->debugfs);
 
 	/* remove any sysfs entries */
-	if (regulator->dev) {
+	if (regulator->dev)
 		sysfs_remove_link(&rdev->dev.kobj, regulator->supply_name);
-		device_remove_file(regulator->dev, &regulator->dev_attr);
-		kfree(regulator->dev_attr.attr.name);
-	}
 	kfree(regulator->supply_name);
 	list_del(&regulator->list);
 	kfree(regulator);
-- 
1.7.5.4

[PATCH] regulator: core: remove sysfs entry properly in regulator_put

From: Dong Aisheng <hidden>
Date: 2012-07-05 08:28:46

On Thu, Jul 05, 2012 at 02:19:42PM +0800, Shawn Guo wrote:
With changes introduced by commit 222cc7b (regulator: core: Allow
multiple requests of a single supply mapping) on create_regulator,
regulator_put needs a corresponding update on sysfs entry removing.

Also regulator->dev still needs to get assigned in create_regulator,
otherwise, sysfs_remove_link call in regulator_put will get bypassed.

Reported-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: Shawn Guo <redacted>
---
 drivers/regulator/core.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)
Good catch.

Tested-by: Dong Aisheng <redacted>
Acked-by: Dong Aisheng <redacted>

Regards
Dong Aisheng

[PATCH] regulator: core: remove sysfs entry properly in regulator_put

From: Mark Brown <hidden>
Date: 2012-07-05 12:15:43

On Thu, Jul 05, 2012 at 02:19:42PM +0800, Shawn Guo wrote:
With changes introduced by commit 222cc7b (regulator: core: Allow
multiple requests of a single supply mapping) on create_regulator,
regulator_put needs a corresponding update on sysfs entry removing.

Also regulator->dev still needs to get assigned in create_regulator,
otherwise, sysfs_remove_link call in regulator_put will get bypassed.
Applied, but you should really know better than to submit two separate
changes in a single patch.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120705/5a0876c2/attachment.sig>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help