mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 06:04:44 +01:00
The xgbe_powerdown() and xgbe_powerup() functions use spinlocks
(spin_lock_irqsave) while calling functions that may sleep:
- napi_disable() can sleep waiting for NAPI polling to complete
- flush_workqueue() can sleep waiting for pending work items
This causes a "BUG: scheduling while atomic" error during suspend/resume
cycles on systems using the AMD XGBE Ethernet controller.
The spinlock protection in these functions is unnecessary as these
functions are called from suspend/resume paths which are already serialized
by the PM core
Fix this by removing the spinlock. Since only code that takes this lock
is xgbe_powerdown() and xgbe_powerup(), remove it completely.
Fixes:
|
||
|---|---|---|
| .. | ||
| pds_core | ||
| xgbe | ||
| 7990.c | ||
| 7990.h | ||
| a2065.c | ||
| a2065.h | ||
| amd8111e.c | ||
| amd8111e.h | ||
| ariadne.c | ||
| ariadne.h | ||
| atarilance.c | ||
| au1000_eth.c | ||
| au1000_eth.h | ||
| declance.c | ||
| hplance.c | ||
| hplance.h | ||
| Kconfig | ||
| lance.c | ||
| Makefile | ||
| mvme147.c | ||
| nmclan_cs.c | ||
| pcnet32.c | ||
| sun3lance.c | ||
| sunlance.c | ||