Hi all,
While adding support for configuring the LEDs with Broadcom PHYs, I
stumbled upon the NPD below which happens while issuing a reboot. The
driver being used is GENET which calls phy_disconnect() in its
shutdown/remove path. This is also reproducible by unbinding the MDIO
bus controller driver, e.g.:
# echo unimac-mdio.0 > unbind
The relevant section of the DT for this platform is the following:
leds {
leds@2 {
default-state =
"keep";
color = <0x4>;
reg = <0x2>;
};
leds@1 {
default-state =
"keep";
color = <0x2>;
reg = <0x1>;
};
};
There is no trigger being configured for either LED therefore it is not
clear to me why the workqueue is being kicked in the first place?
# cat /sys/class/leds/
mmc0::/ unimac-mdio-0:19:amber:/
mmc1::/ unimac-mdio-0:19:green:/
# cat /sys/class/leds/unimac-mdio-0\:19\:
unimac-mdio-0:19:amber:/ unimac-mdio-0:19:green:/
# cat /sys/class/leds/unimac-mdio-0\:19\:green\:/trigger
[none] rfkill-any rfkill-none kbd-scrolllock kbd-numlock kbd-capslock
kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock
kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock mmc1 mmc0
# cat /sys/class/leds/unimac-mdio-0\:19\:amber\:/trigger
[none] rfkill-any rfkill-none kbd-scrolllock kbd-numlock kbd-capslock
kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock
kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock mmc1 mmc0
# reboot -f
[ 55.476856] bcmgenet 8f00000.ethernet eth0: Link is Down
[ 55.553834] Unable to handle kernel NULL pointer dereference at
virtual address 00000000000001f0
[ 55.562674] Mem abort info:
[ 55.565482] ESR = 0x0000000096000005
[ 55.569245] EC = 0x25: DABT (current EL), IL = 32 bits
[ 55.574575] SET = 0, FnV = 0
[ 55.577641] EA = 0, S1PTW = 0
[ 55.580797] FSC = 0x05: level 1 translation fault
[ 55.585690] Data abort info:
[ 55.588582] ISV = 0, ISS = 0x00000005
[ 55.592432] CM = 0, WnR = 0
[ 55.595410] user pgtable: 4k pages, 39-bit VAs, pgdp=000000004815d000
[ 55.601870] [00000000000001f0] pgd=0000000000000000,
p4d=0000000000000000, pud=0000000000000000
[ 55.610601] Internal error: Oops: 0000000096000005 [#1] SMP
[ 55.616190] Modules linked in: bdc udc_core
[ 55.620394] CPU: 2 PID: 46 Comm: kworker/2:1 Not tainted
6.4.0-rc1-g665543a0726c #76
[ 55.628156] Hardware name: BCM972180HB_V20 (DT)
[ 55.632697] Workqueue: events set_brightness_delayed
[ 55.637691] pstate: 40000005 (nZcv daif -PAN -UAO -TCO -DIT -SSBS
BTYPE=--)
[ 55.644669] pc : phy_led_set_brightness+0x3c/0x68
[ 55.649389] lr : phy_led_set_brightness+0x30/0x68
[ 55.654105] sp : ffffffc00acabd10
[ 55.657425] x29: ffffffc00acabd10 x28: 0000000000000000 x27:
0000000000000000
[ 55.664581] x26: 0000000000000000 x25: ffffff807dbb340d x24:
0000000000000000
[ 55.671736] x23: ffffff807dbb3400 x22: 0000000000000000 x21:
ffffff8002e59c80
[ 55.678891] x20: ffffff8003d1f520 x19: ffffff8003d1f000 x18:
0000000000000000
[ 55.686046] x17: 74656e2f74656e72 x16: 656874652e303030 x15:
303066382f626472
[ 55.693202] x14: ffffff8003022de0 x13: 6e69622f7273752f x12:
0000000000000000
[ 55.700357] x11: ffffff8002d1d510 x10: 0000000000000870 x9 :
ffffffc008660a7c
[ 55.707512] x8 : ffffff8002e77374 x7 : fefefefefefefeff x6 :
000073746e657665
[ 55.714667] x5 : ffffff8002e77374 x4 : 0000000000000000 x3 :
0000000000000000
[ 55.721822] x2 : 0000000000000000 x1 : 0000000000000001 x0 :
0000000000000000
[ 55.728978] Call trace:
[ 55.731431] phy_led_set_brightness+0x3c/0x68
[ 55.735800] set_brightness_delayed_set_brightness+0x44/0x7c
[ 55.741476] set_brightness_delayed+0xc4/0x1a4
[ 55.745932] process_one_work+0x1a4/0x254
[ 55.749958] process_scheduled_works+0x44/0x48
[ 55.754415] worker_thread+0x1e8/0x264
[ 55.758176] kthread+0xcc/0xdc
[ 55.761242] ret_from_fork+0x10/0x20
[ 55.764833] Code: 940ed4c5 f941a660 2a1603e2 394622a1 (f940f803)
[ 55.770941] ---[ end trace 0000000000000000 ]---
--
Florian