Hi Takashi-san
Thank you for your help
My current headache is ALSA SoC's each modules (= Card/Codec/CPU/Platform) doesn't care about "unbind/rmmod". For example, if someone unbinded/rmmoded "Codec", Card or other modules doesn't know about it. Thus, user can continue to use this sound card, and kernel will be Oops.
Are you sure about this? Have you tried removing a module?
During card probe, asoc will hold a reference to the component. See the calls to try_module_get(). This will prevent from unloading under normal cases.
For unloading the module, yes, it should have been prevented by managing the module refcount. However, unbinding can't be stopped by that. It's a known problem.
Morimoto-san, do you see the issue really via module unloading, or is it only via unbinding?
I tried, I thought this issue was for both unload/unbind, but it was only for unbinding. is this correct ?
# insmod cpu driver
> insmod home/snd-soc-rcar.ko [ 94.853449] asoc-simple-graph-dpcm-card asoc-simple-graph-dpcm-card.0.auto: snd-soc-dummy-dai <-> rsnd-dai.0 mapping ok [ 94.864466] asoc-simple-graph-dpcm-card asoc-simple-graph-dpcm-card.0.auto: snd-soc-dummy-dai <-> rsnd-dai.1 mapping ok [ 94.876047] asoc-simple-graph-dpcm-card asoc-simple-graph-dpcm-card.0.auto: ak4642-hifi <-> snd-soc-dummy-dai mapping ok [ 94.888157] rcar_sound ec500000.sound: probed
# check it
> lsmod Module Size Used by Not tainted snd_soc_rcar 47695 2 ...
# try rmmod
> rmmod snd_soc_rcar rmmod: can't unload 'snd_soc_rcar': Resource temporarily unavailable
# try playback, it still working
> aplay xxxx.wav
# try unbind
> echo ec500000.sound > /sys/devices/platform/ec500000.sound/driver/unbind
# sound card will die
> aplay xxxx.wav [ 230.236466] Unable to handle kernel NULL pointer dereference at virtual address 00000014 [ 230.244580] pgd = eea60000 [ 230.247320] [00000014] *pgd=6e9a3835, *pte=00000000, *ppte=00000000 [ 230.253628] Internal error: Oops: 17 [#1] SMP ARM [ 230.258335] Modules linked in: snd_soc_rcar regmap_mmio ... [ 230.607462] 1fe0: 00000005 bed645b0 b6e2745d b6e28b86 60000030 bed64600 0645484d 82551041 [ 230.615643] Backtrace: [ 230.618105] [<c02eab58>] (pinctrl_select_state) from [<c02ead14>] (pinctrl_pm_select_state+0x28/0x58) [ 230.627330] r9:ee814f00 r8:ee8b8b98 r7:00000000 r6:ee927900 r5:ef2ba410 r4:ee8c9000 [ 230.635131] [<c02eacec>] (pinctrl_pm_select_state) from [<c02ead64>] (pinctrl_pm_select_default_state+0x20/0x2c) [ 230.645311] r7:00000000 r6:ee88b200 r5:ef378800 r4:ee8c9000 [ 230.651016] [<c02ead44>] (pinctrl_pm_select_default_state) from [<c040ab90>] (soc_pcm_open+0x34/0x798) [ 230.660331] [<c040ab5c>] (soc_pcm_open) from [<c040c0e4>] (dpcm_fe_dai_open+0xbc/0x524) [ 230.668340] r10:ee8c9000 r9:ee8b8bb0 r8:ee8b8b98 r7:00000280 r6:ee8c9000 r5:00000001 [ 230.676222] r4:ef378800 ...