clockintr: remove support for independent schedclock()
authorcheloha <cheloha@openbsd.org>
Mon, 21 Aug 2023 17:22:04 +0000 (17:22 +0000)
committercheloha <cheloha@openbsd.org>
Mon, 21 Aug 2023 17:22:04 +0000 (17:22 +0000)
Remove the scaffolding for an independent schedclock().  With the
removal of the independent schedclock() from alpha, schedhz is zero on
all platforms and this schedclock-specific code is now unused.

It is possible that schedclock() will repurposed for use in the
future.  Even if this happens, the schedclock handle will not live in
struct clockintr_queue.

sys/kern/kern_clockintr.c
sys/sys/clockintr.h

index 6351a0b..48fb0de 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: kern_clockintr.c,v 1.31 2023/08/11 22:02:50 cheloha Exp $ */
+/* $OpenBSD: kern_clockintr.c,v 1.32 2023/08/21 17:22:04 cheloha Exp $ */
 /*
  * Copyright (c) 2003 Dale Rahn <drahn@openbsd.org>
  * Copyright (c) 2020 Mark Kettenis <kettenis@openbsd.org>
@@ -38,7 +38,6 @@
  */
 u_int clockintr_flags;                 /* [I] global state + behavior flags */
 uint32_t hardclock_period;             /* [I] hardclock period (ns) */
-uint32_t schedclock_period;            /* [I] schedclock period (ns) */
 uint32_t statclock_avg;                        /* [I] average statclock period (ns) */
 uint32_t statclock_min;                        /* [I] minimum statclock period (ns) */
 uint32_t statclock_mask;               /* [I] set of allowed offsets */
@@ -47,7 +46,6 @@ void clockintr_cancel_locked(struct clockintr *);
 uint64_t clockintr_expiration(const struct clockintr *);
 void clockintr_hardclock(struct clockintr *, void *);
 uint64_t clockintr_nsecuptime(const struct clockintr *);
-void clockintr_schedclock(struct clockintr *, void *);
 void clockintr_schedule(struct clockintr *, uint64_t);
 void clockintr_schedule_locked(struct clockintr *, uint64_t);
 void clockintr_statclock(struct clockintr *, void *);
@@ -89,10 +87,6 @@ clockintr_init(u_int flags)
        statclock_min = statclock_avg - (var / 2);
        statclock_mask = var - 1;
 
-       KASSERT(schedhz >= 0 && schedhz <= 1000000000);
-       if (schedhz != 0)
-               schedclock_period = 1000000000 / schedhz;
-
        SET(clockintr_flags, flags | CL_INIT);
 }
 
@@ -128,12 +122,6 @@ clockintr_cpu_init(const struct intrclock *ic)
                if (cq->cq_statclock == NULL)
                        panic("%s: failed to establish statclock", __func__);
        }
-       if (schedhz != 0 && cq->cq_schedclock == NULL) {
-               cq->cq_schedclock = clockintr_establish(cq,
-                   clockintr_schedclock);
-               if (cq->cq_schedclock == NULL)
-                       panic("%s: failed to establish schedclock", __func__);
-       }
 
        /*
         * Mask CQ_INTRCLOCK while we're advancing the internal clock
@@ -175,8 +163,8 @@ clockintr_cpu_init(const struct intrclock *ic)
        }
 
        /*
-        * We can always advance the statclock and schedclock.
-        * There is no reason to stagger a randomized statclock.
+        * We can always advance the statclock.  There is no reason to
+        * stagger a randomized statclock.
         */
        if (!ISSET(clockintr_flags, CL_RNDSTAT)) {
                if (cq->cq_statclock->cl_expiration == 0) {
@@ -185,13 +173,6 @@ clockintr_cpu_init(const struct intrclock *ic)
                }
        }
        clockintr_advance(cq->cq_statclock, statclock_avg);
-       if (schedhz != 0) {
-               if (cq->cq_schedclock->cl_expiration == 0) {
-                       clockintr_stagger(cq->cq_schedclock, schedclock_period,
-                           multiplier, MAXCPUS);
-               }
-               clockintr_advance(cq->cq_schedclock, schedclock_period);
-       }
 
        /*
         * XXX Need to find a better place to do this.  We can't do it in
@@ -514,19 +495,6 @@ clockintr_hardclock(struct clockintr *cl, void *frame)
                hardclock(frame);
 }
 
-void
-clockintr_schedclock(struct clockintr *cl, void *unused)
-{
-       uint64_t count, i;
-       struct proc *p = curproc;
-
-       count = clockintr_advance(cl, schedclock_period);
-       if (p != NULL) {
-               for (i = 0; i < count; i++)
-                       schedclock(p);
-       }
-}
-
 void
 clockintr_statclock(struct clockintr *cl, void *frame)
 {
index a46a311..71e4093 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: clockintr.h,v 1.9 2023/07/25 18:16:19 cheloha Exp $ */
+/* $OpenBSD: clockintr.h,v 1.10 2023/08/21 17:22:04 cheloha Exp $ */
 /*
  * Copyright (c) 2020-2022 Scott Cheloha <cheloha@openbsd.org>
  *
@@ -97,7 +97,6 @@ struct clockintr_queue {
        TAILQ_HEAD(, clockintr) cq_pend;/* [m] pending clockintr list */
        struct clockintr *cq_running;   /* [m] running clockintr */
        struct clockintr *cq_hardclock; /* [o] hardclock handle */
-       struct clockintr *cq_schedclock;/* [o] schedclock handle, if any */
        struct clockintr *cq_statclock; /* [o] statclock handle */
        struct intrclock cq_intrclock;  /* [I] local interrupt clock */
        struct clockintr_stat cq_stat;  /* [o] dispatch statistics */