From 89844a0028c37cf32f631085ff3684817a8737c5 Mon Sep 17 00:00:00 2001 From: Dale Farnsworth Date: Fri, 28 Sep 2007 06:30:43 -0700 Subject: [PATCH] --- yaml --- r: 65221 b: refs/heads/master c: 2bcff60f7ce88c09a2bc1302ff14510737bfcb7b h: refs/heads/master i: 65219: c7bf58bdd755bbc3e554942af5ea2d145e6d6843 v: v3 --- [refs] | 2 +- trunk/drivers/net/mv643xx_eth.c | 2 +- trunk/drivers/net/mv643xx_eth.h | 4 +++- trunk/include/asm-i386/system.h | 5 +++++ 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 9d7ee3ddf2bf..41ed4983cf15 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4827bbb06e4b59922c2b9bfb13ad1bf936bdebe5 +refs/heads/master: 2bcff60f7ce88c09a2bc1302ff14510737bfcb7b diff --git a/trunk/drivers/net/mv643xx_eth.c b/trunk/drivers/net/mv643xx_eth.c index 456d1e1c98bd..34288fe038c3 100644 --- a/trunk/drivers/net/mv643xx_eth.c +++ b/trunk/drivers/net/mv643xx_eth.c @@ -534,7 +534,7 @@ static irqreturn_t mv643xx_eth_int_handler(int irq, void *dev_id) } /* PHY status changed */ - if (eth_int_cause_ext & ETH_INT_CAUSE_PHY) { + if (eth_int_cause_ext & (ETH_INT_CAUSE_PHY | ETH_INT_CAUSE_STATE)) { struct ethtool_cmd cmd; if (mii_link_ok(&mp->mii)) { diff --git a/trunk/drivers/net/mv643xx_eth.h b/trunk/drivers/net/mv643xx_eth.h index 82f8c0cbfb64..565b96696aca 100644 --- a/trunk/drivers/net/mv643xx_eth.h +++ b/trunk/drivers/net/mv643xx_eth.h @@ -64,7 +64,9 @@ #define ETH_INT_CAUSE_TX_ERROR (ETH_TX_QUEUES_ENABLED << 8) #define ETH_INT_CAUSE_TX (ETH_INT_CAUSE_TX_DONE | ETH_INT_CAUSE_TX_ERROR) #define ETH_INT_CAUSE_PHY 0x00010000 -#define ETH_INT_UNMASK_ALL_EXT (ETH_INT_CAUSE_TX | ETH_INT_CAUSE_PHY) +#define ETH_INT_CAUSE_STATE 0x00100000 +#define ETH_INT_UNMASK_ALL_EXT (ETH_INT_CAUSE_TX | ETH_INT_CAUSE_PHY | \ + ETH_INT_CAUSE_STATE) #define ETH_INT_MASK_ALL 0x00000000 #define ETH_INT_MASK_ALL_EXT 0x00000000 diff --git a/trunk/include/asm-i386/system.h b/trunk/include/asm-i386/system.h index d69ba937e092..609756c61676 100644 --- a/trunk/include/asm-i386/system.h +++ b/trunk/include/asm-i386/system.h @@ -214,6 +214,11 @@ static inline unsigned long get_limit(unsigned long segment) */ +/* + * Actually only lfence would be needed for mb() because all stores done + * by the kernel should be already ordered. But keep a full barrier for now. + */ + #define mb() alternative("lock; addl $0,0(%%esp)", "mfence", X86_FEATURE_XMM2) #define rmb() alternative("lock; addl $0,0(%%esp)", "lfence", X86_FEATURE_XMM2)