diff options
author | Dean Luick <dean.luick@intel.com> | 2015-10-26 10:28:43 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-10-27 17:45:51 +0900 |
commit | b77d713a310b5c6eba13e9c394bcf0b085c4a49d (patch) | |
tree | 482853a8a51b68e3c739a7e375ff1df9a22c22ea /drivers/staging/rdma/hfi1/init.c | |
parent | staging/rdma/hfi1: Increase SDMA descriptor queue size (diff) | |
download | linux-dev-b77d713a310b5c6eba13e9c394bcf0b085c4a49d.tar.xz linux-dev-b77d713a310b5c6eba13e9c394bcf0b085c4a49d.zip |
staging/rdma/hfi1: Add irqsaves in the packet processing path
In preparation for threading the receive interrupt, add irqsaves in the packet
processing path.
When the receive interrupt is threaded, the packet processing path is no longer
guaranteed to have IRQs disabled. Add irqsaves where needed on several locks
in the packet processing path. Anything that did not have an obvious, "close"
irqsave in its caller is a candidate.
Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Dean Luick <dean.luick@intel.com>
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/rdma/hfi1/init.c')
-rw-r--r-- | drivers/staging/rdma/hfi1/init.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/staging/rdma/hfi1/init.c b/drivers/staging/rdma/hfi1/init.c index cd1508ec0914..47a1202fcbdf 100644 --- a/drivers/staging/rdma/hfi1/init.c +++ b/drivers/staging/rdma/hfi1/init.c @@ -413,6 +413,7 @@ static enum hrtimer_restart cca_timer_fn(struct hrtimer *t) int sl; u16 ccti, ccti_timer, ccti_min; struct cc_state *cc_state; + unsigned long flags; cca_timer = container_of(t, struct cca_timer, hrtimer); ppd = cca_timer->ppd; @@ -436,7 +437,7 @@ static enum hrtimer_restart cca_timer_fn(struct hrtimer *t) ccti_min = cc_state->cong_setting.entries[sl].ccti_min; ccti_timer = cc_state->cong_setting.entries[sl].ccti_timer; - spin_lock(&ppd->cca_timer_lock); + spin_lock_irqsave(&ppd->cca_timer_lock, flags); ccti = cca_timer->ccti; @@ -445,7 +446,7 @@ static enum hrtimer_restart cca_timer_fn(struct hrtimer *t) set_link_ipg(ppd); } - spin_unlock(&ppd->cca_timer_lock); + spin_unlock_irqrestore(&ppd->cca_timer_lock, flags); rcu_read_unlock(); |