[Letux-kernel] modprobe twl4030_* hangs

H. Nikolaus Schaller hns at goldelico.com
Fri Feb 12 12:13:18 CET 2016


Hi,
after some more tests it is clearly:

twl4030_charger on the GTA04
bq2429x_charger on the Pyra

If I remove these modules and do a depmod -a both systems boot (almost) fine and fast.
On the GTA04 I have no USB/OTG connection.

Then doing a modprobe twl4030_charger on the GTA04 makes the modprobe hang...

I.e. the driver is buggy. Perhaps the EPROBE_DEFER patch we have introduced?
Which waits for the USB-PHY (which appears not to be available).

AFAIK these drivers have nothing in common. Except part of the name and that
both are I2C devices. And both register as "power supply".

Any ideas?

BR,
Nikolaus


Am 11.02.2016 um 12:28 schrieb H. Nikolaus Schaller <hns at goldelico.com>:

> 
> Am 11.02.2016 um 12:18 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
> 
>> 
>> Am 11.02.2016 um 12:13 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>> 
>>> Hi,
>>> I have found a strange thing in my latest 4.5-rc3.
>>> 
>>> root at letux:~# modprobe twl4030_madc_battery
>>> root at letux:~# modprobe twl4030_pwrbutton   
>>> ^C
>>> root at letux:~# modprobe twl4030_vibra    
>>> root at letux:~# modprobe twl4030_charger
>>> ^C
>>> root at letux:~# modprobe twl4030_madc   
>>> root at letux:~# modprobe phy_twl4030_usb
>>> ^C
>>> root at letux:~# 
>>> 
>>> Some twl4030 related modules can't be modprobed and simply hang.
>>> Some others work.
>>> 
>>> The total effect is that the kernel needs ~200 seconds to boot.
>>> 
>>> And I have the same on the OMAP5 (where the twl4030 modules
>>> are not loaded/needed at all).
>> 
>> Well, there it is the bq2429x driver. And the common part is that both
>> create charger nodes, registered by power_supply_register().
>> 
>> What is even more strange is that they show up in lsmod. But a
>> second modprobe -v reports that it tries another insmod:
>> 
>> root at letux:~# lsmod | fgrep bq24
>> bq2429x_charger        13916  1 
>> root at letux:~# modprobe -v bq2429x_charger
>> insmod /lib/modules/4.5.0-rc3-letux+/kernel/drivers/power/bq2429x_charger.ko 
>> ^C
>> root at letux:~# 
>> 
> 
> I just found that modprobe understands verbosity levels:
> 
> root at letux:~# modprobe -v -v -v bq2429x_charger
> modprobe: INFO: ../libkmod/libkmod.c:354 kmod_set_log_fn() custom logging function 0x7f654a6d registered
> modprobe: DEBUG: ../libkmod/libkmod-index.c:790 index_mm_open() file=/lib/modules/4.5.0-rc3-letux+/modules.dep.bin
> modprobe: DEBUG: ../libkmod/libkmod-index.c:790 index_mm_open() file=/lib/modules/4.5.0-rc3-letux+/modules.alias.bin
> modprobe: DEBUG: ../libkmod/libkmod-index.c:790 index_mm_open() file=/lib/modules/4.5.0-rc3-letux+/modules.symbols.bin
> modprobe: DEBUG: ../libkmod/libkmod-index.c:790 index_mm_open() file=/lib/modules/4.5.0-rc3-letux+/modules.builtin.bin
> modprobe: DEBUG: ../libkmod/libkmod-module.c:540 kmod_module_new_from_lookup() input alias=bq2429x_charger, normalized=bq2429x_charger
> modprobe: DEBUG: ../libkmod/libkmod-module.c:546 kmod_module_new_from_lookup() lookup modules.dep bq2429x_charger
> modprobe: DEBUG: ../libkmod/libkmod.c:545 kmod_search_moddep() use mmaped index 'modules.dep' modname=bq2429x_charger
> modprobe: DEBUG: ../libkmod/libkmod.c:392 kmod_pool_get_module() get module name='bq2429x_charger' found=(nil)
> modprobe: DEBUG: ../libkmod/libkmod.c:400 kmod_pool_add_module() add 0x7f6773f0 key='bq2429x_charger'
> modprobe: DEBUG: ../libkmod/libkmod-module.c:196 kmod_module_parse_depline() 0 dependencies for bq2429x_charger
> modprobe: DEBUG: ../libkmod/libkmod-module.c:567 kmod_module_new_from_lookup() lookup bq2429x_charger=0, list=0x7f6770d8
> modprobe: DEBUG: ../libkmod/libkmod-module.c:1374 kmod_module_get_options() modname=snd_pcsp mod->name=bq2429x_charger mod->alias=(null)
> modprobe: DEBUG: ../libkmod/libkmod-module.c:1374 kmod_module_get_options() modname=snd_usb_audio mod->name=bq2429x_charger mod->alias=(null)
> modprobe: DEBUG: ../libkmod/libkmod-module.c:1374 kmod_module_get_options() modname=cx88_alsa mod->name=bq2429x_charger mod->alias=(null)
> modprobe: DEBUG: ../libkmod/libkmod-module.c:1374 kmod_module_get_options() modname=snd_atiixp_modem mod->name=bq2429x_charger mod->alias=(null)
> modprobe: DEBUG: ../libkmod/libkmod-module.c:1374 kmod_module_get_options() modname=snd_intel8x0m mod->name=bq2429x_charger mod->alias=(null)
> modprobe: DEBUG: ../libkmod/libkmod-module.c:1374 kmod_module_get_options() modname=snd_via82xx_modem mod->name=bq2429x_charger mod->alias=(null)
> modprobe: DEBUG: ../libkmod/libkmod-module.c:1374 kmod_module_get_options() modname=cirrus mod->name=bq2429x_charger mod->alias=(null)
> modprobe: DEBUG: ../libkmod/libkmod-module.c:1374 kmod_module_get_options() modname=mgag200 mod->name=bq2429x_charger mod->alias=(null)
> modprobe: DEBUG: ../libkmod/libkmod-module.c:728 kmod_module_get_path() name='bq2429x_charger' path='/lib/modules/4.5.0-rc3-letux+/kernel/drivers/power/bq2429x_charger.ko'
> modprobe: DEBUG: ../libkmod/libkmod-module.c:728 kmod_module_get_path() name='bq2429x_charger' path='/lib/modules/4.5.0-rc3-letux+/kernel/drivers/power/bq2429x_charger.ko'
> insmod /lib/modules/4.5.0-rc3-letux+/kernel/drivers/power/bq2429x_charger.ko 
> modprobe: DEBUG: ../libkmod/libkmod-module.c:728 kmod_module_get_path() name='bq2429x_charger' path='/lib/modules/4.5.0-rc3-letux+/kernel/drivers/power/bq2429x_charger.ko'
> 
> Maybe something in the MODULE_ALIAS is broken?
> 
> Really strange...
> 
> BR,
> Nikolaus
> 
> _______________________________________________
> http://projects.goldelico.com/p/gta04-kernel/
> Letux-kernel mailing list
> Letux-kernel at openphoenux.org
> http://lists.goldelico.com/mailman/listinfo.cgi/letux-kernel



More information about the Letux-kernel mailing list