IB/{rdmavt,hfi1}: Change hrtimer add to use pinned version
authorMike Marciniszyn <mike.marciniszyn@intel.com>
Wed, 16 May 2018 01:31:24 +0000 (18:31 -0700)
committerJason Gunthorpe <jgg@mellanox.com>
Thu, 24 May 2018 15:39:25 +0000 (09:39 -0600)
Given we are dealing with nano-second level timers, when the timer
pops, ensure it happens on the CPU which caused the timer to be set
in the first place.  This avoids excessive jitter from the desired
expiration time by avoiding the cost of switching our context to
another CPU that is cache cold for this given timer.

Reviewed-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/hfi1/rc.c
drivers/infiniband/sw/rdmavt/qp.c

index 79ee2b9e28c61e16e2b5ebd2d2819f49ae41b544..1a1a47ac53c6f049285a30028ba4cde5bd21d5af 100644 (file)
@@ -2012,7 +2012,7 @@ void process_becn(struct hfi1_pportdata *ppd, u8 sl, u32 rlid, u32 lqpn,
                unsigned long nsec = 1024 * ccti_timer;
 
                hrtimer_start(&cca_timer->hrtimer, ns_to_ktime(nsec),
-                             HRTIMER_MODE_REL);
+                             HRTIMER_MODE_REL_PINNED);
        }
 
        spin_unlock_irqrestore(&ppd->cca_timer_lock, flags);
index 6e9a351f45fb54be5923012fb5d09f11c09223fc..40046135c50991fb3af581c4308697ed676ccff4 100644 (file)
@@ -2225,7 +2225,7 @@ void rvt_add_rnr_timer(struct rvt_qp *qp, u32 aeth)
        to = rvt_aeth_to_usec(aeth);
        trace_rvt_rnrnak_add(qp, to);
        hrtimer_start(&qp->s_rnr_timer,
-                     ns_to_ktime(1000 * to), HRTIMER_MODE_REL);
+                     ns_to_ktime(1000 * to), HRTIMER_MODE_REL_PINNED);
 }
 EXPORT_SYMBOL(rvt_add_rnr_timer);