IB/qib: Add percpu counter replacing qib_devdata int_counter
This patch replaces the dd->int_counter with a percpu counter. The maintanance of qib_stats.sps_ints and int_counter are combined into the new counter. There are two new functions added to read the counter: - qib_int_counter (for a particular qib_devdata) - qib_sps_ints (for all HCAs) A z_int_counter is added to allow the interrupt detection logic to determine if interrupts have occured since z_int_counter was "reset". Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:

committed by
Roland Dreier

parent
f8b6c47a44
commit
1ed88dd7d0
@@ -1634,9 +1634,7 @@ static irqreturn_t qib_6120intr(int irq, void *data)
|
||||
goto bail;
|
||||
}
|
||||
|
||||
qib_stats.sps_ints++;
|
||||
if (dd->int_counter != (u32) -1)
|
||||
dd->int_counter++;
|
||||
this_cpu_inc(*dd->int_counter);
|
||||
|
||||
if (unlikely(istat & (~QLOGIC_IB_I_BITSEXTANT |
|
||||
QLOGIC_IB_I_GPIO | QLOGIC_IB_I_ERROR)))
|
||||
@@ -1808,7 +1806,8 @@ static int qib_6120_setup_reset(struct qib_devdata *dd)
|
||||
* isn't set.
|
||||
*/
|
||||
dd->flags &= ~(QIB_INITTED | QIB_PRESENT);
|
||||
dd->int_counter = 0; /* so we check interrupts work again */
|
||||
/* so we check interrupts work again */
|
||||
dd->z_int_counter = qib_int_counter(dd);
|
||||
val = dd->control | QLOGIC_IB_C_RESET;
|
||||
writeq(val, &dd->kregbase[kr_control]);
|
||||
mb(); /* prevent compiler re-ordering around actual reset */
|
||||
|
Reference in New Issue
Block a user