mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-22 23:04:43 +00:00
PHYLIB: Locking fixes for PHY I/O potentially sleeping
PHY read/write functions can potentially sleep (e.g., a PHY accessed via I2C). The following changes were made to account for this: * Change spin locks to mutex locks * Add a BUG_ON() to phy_read() phy_write() to warn against calling them from an interrupt context. * Use work queue for PHY state machine handling since it can potentially sleep * Change phydev lock from spinlock to mutex Signed-off-by: Nate Case <ncase@xes-inc.com> Acked-by: Andy Fleming <afleming@freescale.com> Signed-off-by: Jeff Garzik <jeff@garzik.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2b91213064
commit
35b5f6b1a8
4 changed files with 55 additions and 31 deletions
|
@ -88,7 +88,7 @@ struct mii_bus {
|
|||
|
||||
/* A lock to ensure that only one thing can read/write
|
||||
* the MDIO bus at a time */
|
||||
spinlock_t mdio_lock;
|
||||
struct mutex mdio_lock;
|
||||
|
||||
struct device *dev;
|
||||
|
||||
|
@ -284,10 +284,11 @@ struct phy_device {
|
|||
|
||||
/* Interrupt and Polling infrastructure */
|
||||
struct work_struct phy_queue;
|
||||
struct work_struct state_queue;
|
||||
struct timer_list phy_timer;
|
||||
atomic_t irq_disable;
|
||||
|
||||
spinlock_t lock;
|
||||
struct mutex lock;
|
||||
|
||||
struct net_device *attached_dev;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue