git: c4756f4a7abd - stable/12 - Add explicit SI_SUB_EPOCH
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 22 Feb 2022 07:28:59 UTC
The branch stable/12 has been updated by obrien:
URL: https://cgit.FreeBSD.org/src/commit/?id=c4756f4a7abd284b9beb732e734d62706c7cf352
commit c4756f4a7abd284b9beb732e734d62706c7cf352
Author: Conrad Meyer <cem@FreeBSD.org>
AuthorDate: 2019-11-22 23:23:40 +0000
Commit: David E. O'Brien <obrien@FreeBSD.org>
CommitDate: 2022-02-22 06:20:49 +0000
Add explicit SI_SUB_EPOCH
Add explicit SI_SUB_EPOCH, after SI_SUB_TASKQ and before SI_SUB_SMP
(EARLY_AP_STARTUP). Rename existing "SI_SUB_TASKQ + 1" to SI_SUB_EPOCH.
epoch(9) consumers cannot epoch_alloc() before SI_SUB_EPOCH:SI_ORDER_SECOND,
but likely should allocate before SI_SUB_SMP. Prior to this change,
consumers (well, epoch itself, and net/if.c) just open-coded the
SI_SUB_TASKQ + 1 order to match epoch.c, but this was fragile.
(cherry picked from commit 7993a104a10c81e4049e5923061d9bb7a5e35d80)
---
sys/kern/subr_epoch.c | 2 +-
sys/net/if.c | 3 +--
sys/sys/kernel.h | 1 +
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/sys/kern/subr_epoch.c b/sys/kern/subr_epoch.c
index af42446f7dff..8d021f748d57 100644
--- a/sys/kern/subr_epoch.c
+++ b/sys/kern/subr_epoch.c
@@ -169,7 +169,7 @@ epoch_init(void *arg __unused)
global_epoch = epoch_alloc(0);
global_epoch_preempt = epoch_alloc(EPOCH_PREEMPT);
}
-SYSINIT(epoch, SI_SUB_TASKQ + 1, SI_ORDER_FIRST, epoch_init, NULL);
+SYSINIT(epoch, SI_SUB_EPOCH, SI_ORDER_FIRST, epoch_init, NULL);
#if !defined(EARLY_AP_STARTUP)
static void
diff --git a/sys/net/if.c b/sys/net/if.c
index d93d63f82f23..f2c306af7095 100644
--- a/sys/net/if.c
+++ b/sys/net/if.c
@@ -984,8 +984,7 @@ if_epochalloc(void *dummy __unused)
net_epoch_preempt = epoch_alloc(EPOCH_PREEMPT);
net_epoch = epoch_alloc(0);
}
-SYSINIT(ifepochalloc, SI_SUB_TASKQ + 1, SI_ORDER_ANY,
- if_epochalloc, NULL);
+SYSINIT(ifepochalloc, SI_SUB_EPOCH, SI_ORDER_ANY, if_epochalloc, NULL);
static void
if_attachdomain(void *dummy)
diff --git a/sys/sys/kernel.h b/sys/sys/kernel.h
index ab9574192797..c7d4d7a24e96 100644
--- a/sys/sys/kernel.h
+++ b/sys/sys/kernel.h
@@ -125,6 +125,7 @@ enum sysinit_sub_id {
SI_SUB_MBUF = 0x2700000, /* mbuf subsystem */
SI_SUB_INTR = 0x2800000, /* interrupt threads */
SI_SUB_TASKQ = 0x2880000, /* task queues */
+ SI_SUB_EPOCH = 0x2888000, /* epoch subsystem */
#ifdef EARLY_AP_STARTUP
SI_SUB_SMP = 0x2900000, /* start the APs*/
#endif