summaryrefslogtreecommitdiffstats
path: root/sys/pc98
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2011-06-08 08:12:15 +0000
committeravg <avg@FreeBSD.org>2011-06-08 08:12:15 +0000
commit74204e61b2bf85d1e0d861efb6350869bef8d5ba (patch)
tree76b1205a2910e2296d889196ecc53a537b4fc56c /sys/pc98
parent9c3130fd8beafdb49ce265e2ed95dde63492dac1 (diff)
downloadFreeBSD-src-74204e61b2bf85d1e0d861efb6350869bef8d5ba.zip
FreeBSD-src-74204e61b2bf85d1e0d861efb6350869bef8d5ba.tar.gz
remove code for dynamic offlining/onlining of CPUs on x86
The code has definitely been broken for SCHED_ULE, which is a default scheduler. It may have been broken for SCHED_4BSD in more subtle ways, e.g. with manually configured CPU affinities and for interrupt devilery purposes. We still provide a way to disable individual CPUs or all hyperthreading "twin" CPUs before SMP startup. See the UPDATING entry for details. Interaction between building CPU topology and disabling CPUs still remains fuzzy: topology is first built using all availble CPUs and then the disabled CPUs should be "subtracted" from it. That doesn't work well if the resulting topology becomes non-uniform. This work is done in cooperation with Attilio Rao who in addition to reviewing also provided parts of code. PR: kern/145385 Discussed with: gcooper, ambrisko, mdf, sbruno Reviewed by: attilio Tested by: pho, pluknet X-MFC after: never
Diffstat (limited to 'sys/pc98')
-rw-r--r--sys/pc98/pc98/machdep.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/pc98/pc98/machdep.c b/sys/pc98/pc98/machdep.c
index 853ac69..8bcb618 100644
--- a/sys/pc98/pc98/machdep.c
+++ b/sys/pc98/pc98/machdep.c
@@ -49,6 +49,7 @@ __FBSDID("$FreeBSD$");
#include "opt_isa.h"
#include "opt_kstack_pages.h"
#include "opt_maxmem.h"
+#include "opt_mp_watchdog.h"
#include "opt_npx.h"
#include "opt_perfmon.h"
@@ -115,6 +116,7 @@ __FBSDID("$FreeBSD$");
#include <machine/intr_machdep.h>
#include <x86/mca.h>
#include <machine/md_var.h>
+#include <machine/mp_watchdog.h>
#include <machine/pc/bios.h>
#include <machine/pcb.h>
#include <machine/pcb_ext.h>
@@ -1193,9 +1195,8 @@ cpu_idle(int busy)
CTR2(KTR_SPARE2, "cpu_idle(%d) at %d",
busy, curcpu);
-#ifdef SMP
- if (mp_grab_cpu_hlt())
- return;
+#ifdef MP_WATCHDOG
+ ap_watchdog(PCPU_GET(cpuid));
#endif
/* If we are busy - try to use fast methods. */
if (busy) {
OpenPOWER on IntegriCloud