We don't actually need these NULL-checks, my mistake.
sched_init_cpu() is only ever run once for a given cpu_info.
ok?
Index: kern_sched.c
===================================================================
RCS file: /cvs/src/sys/kern/kern_sched.c,v
retrieving revision 1.87
diff -u -p -r1.87 kern_sched.c
--- kern_sched.c 29 Aug 2023 16:19:34 -0000 1.87
+++ kern_sched.c 31 Aug 2023 15:24:02 -0000
@@ -88,26 +88,15 @@ sched_init_cpu(struct cpu_info *ci)
spc->spc_idleproc = NULL;
- if (spc->spc_itimer == NULL) {
- spc->spc_itimer = clockintr_establish(&ci->ci_queue,
- itimer_update);
- if (spc->spc_itimer == NULL) {
- panic("%s: clockintr_establish itimer_update",
- __func__);
- }
- }
- if (spc->spc_profclock == NULL) {
- spc->spc_profclock = clockintr_establish(&ci->ci_queue,
- profclock);
- if (spc->spc_profclock == NULL)
- panic("%s: clockintr_establish profclock", __func__);
- }
- if (spc->spc_roundrobin == NULL) {
- spc->spc_roundrobin = clockintr_establish(&ci->ci_queue,
- roundrobin);
- if (spc->spc_roundrobin == NULL)
- panic("%s: clockintr_establish roundrobin", __func__);
- }
+ spc->spc_itimer = clockintr_establish(&ci->ci_queue, itimer_update);
+ if (spc->spc_itimer == NULL)
+ panic("%s: clockintr_establish itimer_update", __func__);
+ spc->spc_profclock = clockintr_establish(&ci->ci_queue, profclock);
+ if (spc->spc_profclock == NULL)
+ panic("%s: clockintr_establish profclock", __func__);
+ spc->spc_roundrobin = clockintr_establish(&ci->ci_queue, roundrobin);
+ if (spc->spc_roundrobin == NULL)
+ panic("%s: clockintr_establish roundrobin", __func__);
kthread_create_deferred(sched_kthreads_create, ci);