b93984c9af
With lockdep enabled we get: ============================================= [ INFO: possible recursive locking detected ] 3.4.4-Cavium-Octeon+ #313 Not tainted --------------------------------------------- kworker/u:1/36 is trying to acquire lock: (&bus->mdio_lock){+.+...}, at: [<ffffffff813da7e8>] mdio_mux_read+0x38/0xa0 but task is already holding lock: (&bus->mdio_lock){+.+...}, at: [<ffffffff813d79e4>] mdiobus_read+0x44/0x88 other info that might help us debug this: Possible unsafe locking scenario: CPU0 ---- lock(&bus->mdio_lock); lock(&bus->mdio_lock); *** DEADLOCK *** May be due to missing lock nesting notation . . . This is a false positive, since we are indeed using 'nested' locking, we need to use mutex_lock_nested(). Now in theory we can stack multiple MDIO multiplexers, but that would require passing the nesting level (which is difficult to know) to mutex_lock_nested(). Instead we assume the simple case of a single level of nesting. Since these are only warning messages, it isn't so important to solve the general case. Signed-off-by: David Daney <david.daney@cavium.com> Signed-off-by: David S. Miller <davem@davemloft.net> |
||
---|---|---|
.. | ||
amd.c | ||
bcm63xx.c | ||
broadcom.c | ||
cicada.c | ||
davicom.c | ||
dp83640.c | ||
dp83640_reg.h | ||
et1011c.c | ||
fixed.c | ||
icplus.c | ||
Kconfig | ||
lxt.c | ||
Makefile | ||
marvell.c | ||
mdio-bitbang.c | ||
mdio-gpio.c | ||
mdio-mux-gpio.c | ||
mdio-mux.c | ||
mdio-octeon.c | ||
mdio_bus.c | ||
micrel.c | ||
national.c | ||
phy.c | ||
phy_device.c | ||
qsemi.c | ||
realtek.c | ||
smsc.c | ||
spi_ks8995.c | ||
ste10Xp.c | ||
vitesse.c |