diff options
author | chas williams <chas@cmf.nrl.navy.mil> | 2007-11-29 23:07:57 +1100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-12-14 09:51:03 -0800 |
commit | c996090b7a28d89cf1f2365688dad715b2ae7bd6 (patch) | |
tree | 7dddbe0862f3aacccde0a9fdec6d340b794efd93 | |
parent | a9a88eb292818f5ff9ba6c0fabc17fa663c6a278 (diff) | |
download | lwn-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.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); |