aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/kern_clocksource.c
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2010-09-22 05:32:37 +0000
committerAlexander Motin <mav@FreeBSD.org>2010-09-22 05:32:37 +0000
commit9dfc483c4aa5337e2b0d55e47083b16144fa8e59 (patch)
tree53f7bdf33b17f42560109ceaa45bb3afea7c2425 /sys/kern/kern_clocksource.c
parent0069293b2bad5bfbd7d48131e135aef0bfc52437 (diff)
downloadsrc-9dfc483c4aa5337e2b0d55e47083b16144fa8e59.tar.gz
src-9dfc483c4aa5337e2b0d55e47083b16144fa8e59.zip
If kernel built with DEVICE_POLLING, keep one CPU always in active state
to handle it.
Notes
Notes: svn path=/head/; revision=212992
Diffstat (limited to 'sys/kern/kern_clocksource.c')
-rw-r--r--sys/kern/kern_clocksource.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/kern/kern_clocksource.c b/sys/kern/kern_clocksource.c
index e9a7c9dec1fe..e654659d4632 100644
--- a/sys/kern/kern_clocksource.c
+++ b/sys/kern/kern_clocksource.c
@@ -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)