summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchas williams <chas@cmf.nrl.navy.mil>2007-11-29 23:07:57 +1100
committerGreg Kroah-Hartman <gregkh@suse.de>2007-12-14 09:51:03 -0800
commitc996090b7a28d89cf1f2365688dad715b2ae7bd6 (patch)
tree7dddbe0862f3aacccde0a9fdec6d340b794efd93
parenta9a88eb292818f5ff9ba6c0fabc17fa663c6a278 (diff)
downloadlwn-c996090b7a28d89cf1f2365688dad715b2ae7bd6.tar.gz
lwn-c996090b7a28d89cf1f2365688dad715b2ae7bd6.zip
ATM: [he] initialize lock and tasklet earlier
[ATM]: [he] initialize lock and tasklet earlier [ Upstream commit: 8a8037ac9dbe4eb20ce50aa20244faf77444f4a3 ] 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> Cc: David Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-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 d33aba6864c2..3b64a99772ea 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);