Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 31 Oct 2012 23:44:20 +0000 (UTC)
From:      Jim Harris <jimharris@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r242420 - head/sys/dev/nvme
Message-ID:  <201210312344.q9VNiKxK063744@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jimharris
Date: Wed Oct 31 23:44:19 2012
New Revision: 242420
URL: http://svn.freebsd.org/changeset/base/242420

Log:
  Use callout_reset_curcpu to allow the callout to be handled by the
  current CPU and not always CPU 0.
  
  This has the added benefit of reducing a huge amount of spinlock
  contention on the callout_cpu spinlock for CPU 0.
  
  Sponsored by:	Intel

Modified:
  head/sys/dev/nvme/nvme_qpair.c

Modified: head/sys/dev/nvme/nvme_qpair.c
==============================================================================
--- head/sys/dev/nvme/nvme_qpair.c	Wed Oct 31 22:21:33 2012	(r242419)
+++ head/sys/dev/nvme/nvme_qpair.c	Wed Oct 31 23:44:19 2012	(r242420)
@@ -390,7 +390,12 @@ nvme_qpair_submit_cmd(struct nvme_qpair 
 	req->cmd.cid = tr->cid;
 	qpair->act_tr[tr->cid] = tr;
 
+#if __FreeBSD_version >= 800030
+	callout_reset_curcpu(&tr->timer, NVME_TIMEOUT_IN_SEC * hz,
+	    nvme_timeout, tr);
+#else
 	callout_reset(&tr->timer, NVME_TIMEOUT_IN_SEC * hz, nvme_timeout, tr);
+#endif
 
 	/* Copy the command from the tracker to the submission queue. */
 	memcpy(&qpair->cmd[qpair->sq_tail], &req->cmd, sizeof(req->cmd));



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201210312344.q9VNiKxK063744>