summaryrefslogtreecommitdiff
path: root/sys/arch
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-08-20 00:35:47 -0400
committerIan Moffett <ian@osmora.org>2025-08-20 00:35:47 -0400
commit188297a70053a59fddcca7dc598ae4adfaef4199 (patch)
tree863967ccbe3f22054fc50400aa301d14240edea2 /sys/arch
parent32562fd6e829ca9262b8c78696930edfa15971de (diff)
kernel/amd64: Add preemptable flag to cpu_info
Add a new 'preempt' field to cpu_info' to indicate if that specific processor is preemptable. Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys/arch')
-rw-r--r--sys/arch/amd64/amd64/machdep.c1
-rw-r--r--sys/arch/amd64/amd64/proc_machdep.c5
2 files changed, 6 insertions, 0 deletions
diff --git a/sys/arch/amd64/amd64/machdep.c b/sys/arch/amd64/amd64/machdep.c
index 94b2d18..72de150 100644
--- a/sys/arch/amd64/amd64/machdep.c
+++ b/sys/arch/amd64/amd64/machdep.c
@@ -609,6 +609,7 @@ cpu_startup(struct cpu_info *ci)
try_mitigate_spectre();
ci->online = 1;
+ ci->preempt = 1;
cpu_get_info(ci);
cpu_enable_smep();
diff --git a/sys/arch/amd64/amd64/proc_machdep.c b/sys/arch/amd64/amd64/proc_machdep.c
index a1d6563..56348be 100644
--- a/sys/arch/amd64/amd64/proc_machdep.c
+++ b/sys/arch/amd64/amd64/proc_machdep.c
@@ -273,6 +273,11 @@ md_sched_switch(struct trapframe *tf)
struct cpu_info *ci;
ci = this_cpu();
+ if (!ci->preempt) {
+ sched_oneshot(false);
+ return;
+ }
+
td = ci->curtd;
mi_sched_switch(td);