aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/atm
diff options
context:
space:
mode:
authorchas williams <chas@cmf.nrl.navy.mil>2007-11-27 11:03:16 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2007-11-27 11:03:16 +0800
commit8a8037ac9dbe4eb20ce50aa20244faf77444f4a3 (patch)
tree433433e603a60c685bc66e4170a5796633741b19 /drivers/atm
parent3660019e5f96fd9a8b7d4214a96523c0bf7b676d (diff)
downloadkernel_samsung_aries-8a8037ac9dbe4eb20ce50aa20244faf77444f4a3.zip
kernel_samsung_aries-8a8037ac9dbe4eb20ce50aa20244faf77444f4a3.tar.gz
kernel_samsung_aries-8a8037ac9dbe4eb20ce50aa20244faf77444f4a3.tar.bz2
[ATM]: [he] initialize lock and tasklet earlier
if you are lucky (unlucky?) enough to have shared interrupts, the interrupt handler can be called before the tasklet and lock are ready for use. Signed-off-by: chas williams <chas@cmf.nrl.navy.mil> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/atm')
-rw-r--r--drivers/atm/he.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/atm/he.c b/drivers/atm/he.c
index d33aba6..3b64a99 100644
--- a/drivers/atm/he.c
+++ b/drivers/atm/he.c
@@ -394,6 +394,11 @@ he_init_one(struct pci_dev *pci_dev, const struct pci_device_id *pci_ent)
he_dev->atm_dev->dev_data = he_dev;
atm_dev->dev_data = he_dev;
he_dev->number = atm_dev->number;
+#ifdef USE_TASKLET
+ tasklet_init(&he_dev->tasklet, he_tasklet, (unsigned long) he_dev);
+#endif
+ spin_lock_init(&he_dev->global_lock);
+
if (he_start(atm_dev)) {
he_stop(he_dev);
err = -ENODEV;
@@ -1173,11 +1178,6 @@ he_start(struct atm_dev *dev)
if ((err = he_init_irq(he_dev)) != 0)
return err;
-#ifdef USE_TASKLET
- tasklet_init(&he_dev->tasklet, he_tasklet, (unsigned long) he_dev);
-#endif
- spin_lock_init(&he_dev->global_lock);
-
/* 4.11 enable pci bus controller state machines */
host_cntl |= (OUTFF_ENB | CMDFF_ENB |
QUICK_RD_RETRY | QUICK_WR_RETRY | PERR_INT_ENB);