aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/ipath/ipath_file_ops.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/infiniband/hw/ipath/ipath_file_ops.c')
-rw-r--r--drivers/infiniband/hw/ipath/ipath_file_ops.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_file_ops.c b/drivers/infiniband/hw/ipath/ipath_file_ops.c
index 5de3243a47c..92dae6f5b39 100644
--- a/drivers/infiniband/hw/ipath/ipath_file_ops.c
+++ b/drivers/infiniband/hw/ipath/ipath_file_ops.c
@@ -2149,11 +2149,15 @@ static int ipath_get_slave_info(struct ipath_portdata *pd,
2149 2149
2150static int ipath_force_pio_avail_update(struct ipath_devdata *dd) 2150static int ipath_force_pio_avail_update(struct ipath_devdata *dd)
2151{ 2151{
2152 u64 reg = dd->ipath_sendctrl; 2152 unsigned long flags;
2153 2153
2154 clear_bit(IPATH_S_PIOBUFAVAILUPD, &reg); 2154 spin_lock_irqsave(&dd->ipath_sendctrl_lock, flags);
2155 ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl, reg); 2155 ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl,
2156 dd->ipath_sendctrl & ~INFINIPATH_S_PIOBUFAVAILUPD);
2157 ipath_read_kreg64(dd, dd->ipath_kregs->kr_scratch);
2156 ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl, dd->ipath_sendctrl); 2158 ipath_write_kreg(dd, dd->ipath_kregs->kr_sendctrl, dd->ipath_sendctrl);
2159 ipath_read_kreg64(dd, dd->ipath_kregs->kr_scratch);
2160 spin_unlock_irqrestore(&dd->ipath_sendctrl_lock, flags);
2157 2161
2158 return 0; 2162 return 0;
2159} 2163}