diff options
author | Alexander Schmidt <alexs@linux.vnet.ibm.com> | 2009-12-09 10:11:04 -0800 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2009-12-09 10:11:04 -0800 |
commit | 9420269428b3dc80c98e52beac60a3976fbef7d2 (patch) | |
tree | b2b43bbaa396613434143efe79b00b15eed690f1 /drivers/infiniband/hw/ehca/ehca_classes.h | |
parent | 91d3f9bacdb4950d2f79fe2ba296aa249f60d06c (diff) | |
download | linux-9420269428b3dc80c98e52beac60a3976fbef7d2.tar.gz linux-9420269428b3dc80c98e52beac60a3976fbef7d2.tar.bz2 linux-9420269428b3dc80c98e52beac60a3976fbef7d2.zip |
IB/ehca: Rework destroy_eq()
The ibmebus_free_irq() function, which might sleep, was called with
interrupts disabled. To fix this, make sure that no interrupts are
running by killing the interrupt tasklet. Also lock the
shca_list_lock to protect against the poll_eqs_timer running
concurrently.
Signed-off-by: Alexander Schmidt <alexs@linux.vnet.ibm.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/hw/ehca/ehca_classes.h')
-rw-r--r-- | drivers/infiniband/hw/ehca/ehca_classes.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/ehca/ehca_classes.h b/drivers/infiniband/hw/ehca/ehca_classes.h index c825142a2fb7..0136abd50dd4 100644 --- a/drivers/infiniband/hw/ehca/ehca_classes.h +++ b/drivers/infiniband/hw/ehca/ehca_classes.h @@ -375,6 +375,7 @@ extern rwlock_t ehca_qp_idr_lock; extern rwlock_t ehca_cq_idr_lock; extern struct idr ehca_qp_idr; extern struct idr ehca_cq_idr; +extern spinlock_t shca_list_lock; extern int ehca_static_rate; extern int ehca_port_act_time; |