diff options
author | Alexander Motin <mav@FreeBSD.org> | 2010-09-22 05:32:37 +0000 |
---|---|---|
committer | Alexander Motin <mav@FreeBSD.org> | 2010-09-22 05:32:37 +0000 |
commit | 9dfc483c4aa5337e2b0d55e47083b16144fa8e59 (patch) | |
tree | 53f7bdf33b17f42560109ceaa45bb3afea7c2425 /sys/kern/kern_clocksource.c | |
parent | 0069293b2bad5bfbd7d48131e135aef0bfc52437 (diff) | |
download | src-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.c | 7 |
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) |