diff options
author | chas williams <chas@cmf.nrl.navy.mil> | 2007-11-27 11:03:16 +0800 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2007-11-27 11:03:16 +0800 |
commit | 8a8037ac9dbe4eb20ce50aa20244faf77444f4a3 (patch) | |
tree | 433433e603a60c685bc66e4170a5796633741b19 /drivers/atm | |
parent | 3660019e5f96fd9a8b7d4214a96523c0bf7b676d (diff) | |
download | linux-8a8037ac9dbe4eb20ce50aa20244faf77444f4a3.tar.gz linux-8a8037ac9dbe4eb20ce50aa20244faf77444f4a3.tar.bz2 linux-8a8037ac9dbe4eb20ce50aa20244faf77444f4a3.zip |
[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.c | 10 |
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); |