sky2: Serialize access to PCI config space
Subsystems (2)
PATCH 1/1 sky2: Serialize access to PCI config space
Disable NAPI when powering up or down the phy, as sky2_err_intr
may also access the PCI config space.
Signed-off-by Mike McCormack <[email protected]>
--- drivers/net/sky2.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-)
drivers/net/sky2.c +6 -1
@@ -1448,7 +1448,9 @@ static int sky2_up(struct net_device *dev)if (!sky2->rx_ring) goto err_out; +napi_disable (&hw->napi);sky2_mac_init (hw, port); +napi_enable (&hw->napi);/* Register is number of 4K blocks on internal RAM buffer. */ ramsize =sky2_read8 (hw,B2_E_0 ) *4 ;
@@ -1880,13 +1882,16 @@ static int sky2_down(struct net_device *dev)sky2_write32 (hw,B0_IMSK , imask);sky2_read32 (hw,B0_IMSK ); +/* after this, there should be no more interrupts for this port */ synchronize_irq (hw->pdev->irq); -napi_synchronize (&hw->napi); +napi_disable (&hw->napi);spin_lock_bh (&sky2->phy_lock);sky2_phy_power_down (hw, port);spin_unlock_bh (&sky2->phy_lock); +napi_enable (&hw->napi); +/* turn off LED's */ sky2_write16 (hw,B0_Y2LED ,LED_STAT_OFF );
Signature · 1 line
1.5.6.5
Quoted 3 lines · On Sun, 09 Aug 2009 20:37:19 +0900 Mike McCormack <[email protected]> wrote:
Disable NAPI when powering up or down the phy, as
sky2_err_intr
may also access the PCI config space.
Maybe, but any sky2_err interrupt is a serious condition that means hardware is being used incorrectly or dead.
Quoted 4 lines · On Sun, 09 Aug 2009 20:37:19 +0900 Mike McCormack <[email protected]> wrote:
Disable NAPI when powering up or down the phy, as
sky2_err_intr
may also access the PCI config space.
Also access to PCI config is done through shared memory, so each access is atomic. The only issue is the stupid config write bit; this bit really doesn't protect from anything useful. Probably better to just always leave it TST_CFG_WRITE_ON.