Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Sep 2010 05:32:37 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r212992 - head/sys/kern
Message-ID:  <201009220532.o8M5WbGb017692@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Wed Sep 22 05:32:37 2010
New Revision: 212992
URL: http://svn.freebsd.org/changeset/base/212992

Log:
  If kernel built with DEVICE_POLLING, keep one CPU always in active state
  to handle it.

Modified:
  head/sys/kern/kern_clocksource.c

Modified: head/sys/kern/kern_clocksource.c
==============================================================================
--- head/sys/kern/kern_clocksource.c	Wed Sep 22 05:17:18 2010	(r212991)
+++ head/sys/kern/kern_clocksource.c	Wed Sep 22 05:32:37 2010	(r212992)
@@ -34,6 +34,7 @@ __FBSDID("$FreeBSD$");
 /* XEN has own timer routines now. */
 #ifndef XEN
 
+#include "opt_device_polling.h"
 #include "opt_kdtrace.h"
 
 #include <sys/param.h>
@@ -721,7 +722,11 @@ cpu_idleclock(void)
 	struct pcpu_state *state;
 
 	if (idletick || busy ||
-	    (periodic && (timer->et_flags & ET_FLAGS_PERCPU)))
+	    (periodic && (timer->et_flags & ET_FLAGS_PERCPU))
+#ifdef DEVICE_POLLING
+	    || curcpu == CPU_FIRST()
+#endif
+	    )
 		return;
 	state = DPCPU_PTR(timerstate);
 	if (periodic)



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