linux/drivers/net/phy
David Daney b93984c9af netdev/phy: Fixup lockdep warnings in mdio-mux.c
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>
2012-07-09 00:12:42 -07:00
..
Kconfig netdev/of/phy: Add MDIO bus multiplexer driven by GPIO lines. 2012-05-07 22:58:09 -04:00
Makefile netdev/of/phy: Add MDIO bus multiplexer driven by GPIO lines. 2012-05-07 22:58:09 -04:00
amd.c phy: add am79c874 PHY support 2012-03-19 18:02:05 -04:00
bcm63xx.c net:phy:bcm63xx: remove unnecessary code 2012-04-03 19:02:00 -04:00
broadcom.c drivers/net: Remove boolean comparisons to true/false 2012-02-13 00:47:40 -05:00
cicada.c
davicom.c net:phy:davicom: remove unnecessary code 2012-04-03 19:02:00 -04:00
dp83640.c dp83640: Support the get_ts_info ethtool method. 2012-04-04 05:28:45 -04:00
dp83640_reg.h ptp: Added a clock driver for the National Semiconductor PHYTER. 2011-05-23 13:10:23 -07:00
et1011c.c
fixed.c phy/fixed: use an unique MDIO bus name. 2012-01-10 16:35:02 -08:00
icplus.c net: icplus: fix interrupt mask 2012-06-04 12:02:40 -04:00
lxt.c
marvell.c net:phy:marvell: remove unnecessary code 2012-04-03 19:02:00 -04:00
mdio-bitbang.c mdio-gpio: Add reset functionality to mdio-gpio driver(v2). 2011-11-15 16:56:17 -05:00
mdio-gpio.c irq_domain/x86: Convert x86 (embedded) to use common irq_domain 2012-02-23 14:37:47 -07:00
mdio-mux-gpio.c netdev/of/phy: Add MDIO bus multiplexer driven by GPIO lines. 2012-05-07 22:58:09 -04:00
mdio-mux.c netdev/phy: Fixup lockdep warnings in mdio-mux.c 2012-07-09 00:12:42 -07:00
mdio-octeon.c mdio-octeon: use an unique MDIO bus name. 2012-01-10 16:35:02 -08:00
mdio_bus.c netdev: fix drivers/net/phy/ kernel-doc warnings 2012-06-08 22:20:58 -07:00
micrel.c phy/micrel: change phy_id_mask for KSZ9021 and KS8001 2012-06-19 00:31:36 -07:00
national.c net/phy: fix DP83865 phy interrupt handler 2011-08-26 12:48:24 -04:00
phy.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
phy_device.c netdev/phy: Make get_phy_id() static and quit EXPORTing it. 2012-05-16 00:59:12 -04:00
qsemi.c
realtek.c drivers/net: Add module.h to drivers who were implicitly using it 2011-10-31 19:31:07 -04:00
smsc.c net: phy: smsc: Move SMSC PHY constants to <linux/smscphy.h> 2012-01-03 20:23:18 -05:00
spi_ks8995.c net: Remove redundant spi driver bus initialization 2012-04-13 13:13:38 -04:00
ste10Xp.c
vitesse.c phylib: Modify Vitesse RGMII skew settings 2011-10-19 15:59:45 -04:00