diff options
-rw-r--r-- | release/tools/ec2.conf | 7 | ||||
-rw-r--r-- | share/man/man4/witness.4 | 6 | ||||
-rw-r--r-- | sys/dev/acpica/acpi_pci.c | 9 | ||||
-rw-r--r-- | sys/dev/acpica/acpivar.h | 3 | ||||
-rw-r--r-- | sys/net/bpf.c | 4 | ||||
-rw-r--r-- | sys/net/bridgestp.c | 3 | ||||
-rw-r--r-- | sys/net/if.c | 1 | ||||
-rw-r--r-- | sys/net/if_bridge.c | 4 | ||||
-rw-r--r-- | sys/net/if_clone.c | 9 | ||||
-rw-r--r-- | sys/net/if_clone.h | 1 | ||||
-rw-r--r-- | sys/net/if_lagg.c | 4 | ||||
-rw-r--r-- | sys/net/vnet.c | 3 | ||||
-rw-r--r-- | sys/net80211/ieee80211_node.c | 2 | ||||
-rw-r--r-- | sys/netinet/ip_carp.c | 3 | ||||
-rw-r--r-- | sys/netinet/tcp_ratelimit.c | 9 |
15 files changed, 33 insertions, 35 deletions
diff --git a/release/tools/ec2.conf b/release/tools/ec2.conf index b5a91d47decf..a8fc3854a0e2 100644 --- a/release/tools/ec2.conf +++ b/release/tools/ec2.conf @@ -72,8 +72,11 @@ ec2_common() { # Graviton 1 through Graviton 4 have a bug in their ACPI where they # mark the PL061's pins as needing to be configured in PullUp mode - # (in fact the PL061 has no pullup/pulldown resistors). - echo 'debug.acpi.quirks="8"' >> ${DESTDIR}/boot/loader.conf + # (in fact the PL061 has no pullup/pulldown resistors). Graviton 1 + # through Graviton 3 have non-functional PCI _EJ0 and need a value + # written to the PCI power status register in order to eject a + # device. + echo 'debug.acpi.quirks="24"' >> ${DESTDIR}/boot/loader.conf # Load the kernel module for the Amazon "Elastic Network Adapter" echo 'if_ena_load="YES"' >> ${DESTDIR}/boot/loader.conf diff --git a/share/man/man4/witness.4 b/share/man/man4/witness.4 index ab23eb49d9fe..f382a9378727 100644 --- a/share/man/man4/witness.4 +++ b/share/man/man4/witness.4 @@ -21,7 +21,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd November 18, 2015 +.Dd March 5, 2025 .Dt WITNESS 4 .Os .Sh NAME @@ -62,12 +62,12 @@ kernel option controls the maximum number of .Nm entries that are tracked in the kernel. The maximum number of entries can be queried via the -.Va debug.witness.count +.Va debug.witness.witness_count sysctl. It can also be set from the .Xr loader 8 via the -.Va debug.witness.count +.Va debug.witness.witness_count environment variable. .Pp The diff --git a/sys/dev/acpica/acpi_pci.c b/sys/dev/acpica/acpi_pci.c index 6411af02ee58..97704111839b 100644 --- a/sys/dev/acpica/acpi_pci.c +++ b/sys/dev/acpica/acpi_pci.c @@ -391,6 +391,8 @@ acpi_pci_device_notify_handler(ACPI_HANDLE h, UINT32 notify, void *context) { device_t child, dev; ACPI_STATUS status; + int pmc; + uint16_t pmstat; int error; dev = context; @@ -416,6 +418,13 @@ acpi_pci_device_notify_handler(ACPI_HANDLE h, UINT32 notify, void *context) device_get_nameunit(child), error); return; } + if ((acpi_quirks & ACPI_Q_CLEAR_PME_ON_DETACH) && + (pci_find_cap(child, PCIY_PMG, &pmc) == 0)) { + pmstat = pci_read_config(child, pmc + PCIR_POWER_STATUS, 2); + pmstat &= ~PCIM_PSTAT_PMEENABLE; + pmstat |= PCIM_PSTAT_PME; + pci_write_config(child, pmc + PCIR_POWER_STATUS, pmstat, 2); + } status = acpi_SetInteger(h, "_EJ0", 1); if (ACPI_FAILURE(status)) { bus_topo_unlock(); diff --git a/sys/dev/acpica/acpivar.h b/sys/dev/acpica/acpivar.h index 668d0b51a1f3..830764434f48 100644 --- a/sys/dev/acpica/acpivar.h +++ b/sys/dev/acpica/acpivar.h @@ -230,6 +230,8 @@ extern struct mtx acpi_mutex; * compatible flag and ignoring overrides that redirect IRQ 0 to pin 2. * ACPI_Q_AEI_NOPULL: Specifies that _AEI objects incorrectly designate pins * as "PullUp" and they should be treated as "NoPull" instead. + * ACPI_Q_CLEAR_PME_ON_DETACH: Specifies that PCIM_PSTAT_(PME & ~PMEENABLE) + * should be written to the power status register as part of ACPI Eject. */ extern int acpi_quirks; #define ACPI_Q_OK 0 @@ -237,6 +239,7 @@ extern int acpi_quirks; #define ACPI_Q_TIMER (1 << 1) #define ACPI_Q_MADT_IRQ0 (1 << 2) #define ACPI_Q_AEI_NOPULL (1 << 3) +#define ACPI_Q_CLEAR_PME_ON_DETACH (1 << 4) #if defined(__amd64__) || defined(__i386__) /* diff --git a/sys/net/bpf.c b/sys/net/bpf.c index a7e5bda97e23..263f241bcf5f 100644 --- a/sys/net/bpf.c +++ b/sys/net/bpf.c @@ -182,7 +182,7 @@ struct bpf_dltlist32 { * frames, ethernet frames, etc). */ CK_LIST_HEAD(bpf_iflist, bpf_if); -static struct bpf_iflist bpf_iflist; +static struct bpf_iflist bpf_iflist = CK_LIST_HEAD_INITIALIZER(); static struct sx bpf_sx; /* bpf global lock */ static int bpf_bpfd_cnt; @@ -3006,8 +3006,6 @@ bpf_drvinit(void *unused) struct cdev *dev; sx_init(&bpf_sx, "bpf global lock"); - CK_LIST_INIT(&bpf_iflist); - dev = make_dev(&bpf_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600, "bpf"); /* For compatibility */ make_dev_alias(dev, "bpf0"); diff --git a/sys/net/bridgestp.c b/sys/net/bridgestp.c index cdaf6b415417..c67f1efe3d88 100644 --- a/sys/net/bridgestp.c +++ b/sys/net/bridgestp.c @@ -86,7 +86,7 @@ const uint8_t bstp_etheraddr[] = { 0x01, 0x80, 0xc2, 0x00, 0x00, 0x00 }; -LIST_HEAD(, bstp_state) bstp_list; +LIST_HEAD(, bstp_state) bstp_list = LIST_HEAD_INITIALIZER(bstp_list); static struct mtx bstp_list_mtx; static void bstp_transmit(struct bstp_state *, struct bstp_port *); @@ -2137,7 +2137,6 @@ bstp_modevent(module_t mod, int type, void *data) switch (type) { case MOD_LOAD: mtx_init(&bstp_list_mtx, "bridgestp list", NULL, MTX_DEF); - LIST_INIT(&bstp_list); break; case MOD_UNLOAD: mtx_destroy(&bstp_list_mtx); diff --git a/sys/net/if.c b/sys/net/if.c index ce0c3d5c0616..21e3b1a8576a 100644 --- a/sys/net/if.c +++ b/sys/net/if.c @@ -433,7 +433,6 @@ vnet_if_init(const void *unused __unused) CK_STAILQ_INIT(&V_ifnet); CK_STAILQ_INIT(&V_ifg_head); - vnet_if_clone_init(); } VNET_SYSINIT(vnet_if_init, SI_SUB_INIT_IF, SI_ORDER_SECOND, vnet_if_init, NULL); diff --git a/sys/net/if_bridge.c b/sys/net/if_bridge.c index 299b6d80dcde..5cb4a033e325 100644 --- a/sys/net/if_bridge.c +++ b/sys/net/if_bridge.c @@ -602,7 +602,8 @@ static const struct bridge_control bridge_control_table[] = { }; static const int bridge_control_table_size = nitems(bridge_control_table); -VNET_DEFINE_STATIC(LIST_HEAD(, bridge_softc), bridge_list); +VNET_DEFINE_STATIC(LIST_HEAD(, bridge_softc), bridge_list) = + LIST_HEAD_INITIALIZER(); #define V_bridge_list VNET(bridge_list) #define BRIDGE_LIST_LOCK_INIT(x) sx_init(&V_bridge_list_sx, \ "if_bridge list") @@ -623,7 +624,6 @@ vnet_bridge_init(const void *unused __unused) sizeof(struct bridge_rtnode), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); BRIDGE_LIST_LOCK_INIT(); - LIST_INIT(&V_bridge_list); struct if_clone_addreq req = { .create_f = bridge_clone_create, diff --git a/sys/net/if_clone.c b/sys/net/if_clone.c index 13d89e4e2c59..066547ceeeb3 100644 --- a/sys/net/if_clone.c +++ b/sys/net/if_clone.c @@ -128,7 +128,7 @@ static int ifc_advanced_create_wrapper(struct if_clone *ifc, char *name, size_t static struct mtx if_cloners_mtx; MTX_SYSINIT(if_cloners_lock, &if_cloners_mtx, "if_cloners lock", MTX_DEF); VNET_DEFINE_STATIC(int, if_cloners_count); -VNET_DEFINE(LIST_HEAD(, if_clone), if_cloners); +VNET_DEFINE(LIST_HEAD(, if_clone), if_cloners) = LIST_HEAD_INITIALIZER(); #define V_if_cloners_count VNET(if_cloners_count) #define V_if_cloners VNET(if_cloners) @@ -183,13 +183,6 @@ VNET_DEFINE(LIST_HEAD(, if_clone), if_cloners); static MALLOC_DEFINE(M_CLONE, "clone", "interface cloning framework"); -void -vnet_if_clone_init(void) -{ - - LIST_INIT(&V_if_cloners); -} - /* * Lookup and create a clone network interface. */ diff --git a/sys/net/if_clone.h b/sys/net/if_clone.h index e11fc5c8cdd7..5a74ffa1cc2f 100644 --- a/sys/net/if_clone.h +++ b/sys/net/if_clone.h @@ -148,7 +148,6 @@ typedef void (*if_clone_event_handler_t)(void *, struct if_clone *); EVENTHANDLER_DECLARE(if_clone_event, if_clone_event_handler_t); /* The below interfaces used only by net/if.c. */ -void vnet_if_clone_init(void); int if_clone_create(char *, size_t, caddr_t); int if_clone_destroy(const char *); int if_clone_list(struct if_clonereq *); diff --git a/sys/net/if_lagg.c b/sys/net/if_lagg.c index 9bc42cb8cbe6..9867a718e148 100644 --- a/sys/net/if_lagg.c +++ b/sys/net/if_lagg.c @@ -102,7 +102,8 @@ struct lagg_snd_tag { struct m_snd_tag *tag; }; -VNET_DEFINE_STATIC(SLIST_HEAD(__trhead, lagg_softc), lagg_list); /* list of laggs */ +VNET_DEFINE_STATIC(SLIST_HEAD(__trhead, lagg_softc), lagg_list) = + SLIST_HEAD_INITIALIZER(); /* list of laggs */ #define V_lagg_list VNET(lagg_list) VNET_DEFINE_STATIC(struct mtx, lagg_list_mtx); #define V_lagg_list_mtx VNET(lagg_list_mtx) @@ -299,7 +300,6 @@ vnet_lagg_init(const void *unused __unused) { LAGG_LIST_LOCK_INIT(); - SLIST_INIT(&V_lagg_list); struct if_clone_addreq req = { .create_f = lagg_clone_create, .destroy_f = lagg_clone_destroy, diff --git a/sys/net/vnet.c b/sys/net/vnet.c index 94be49376adf..c64aaf9f61b5 100644 --- a/sys/net/vnet.c +++ b/sys/net/vnet.c @@ -101,7 +101,7 @@ struct sx vnet_sxlock; sx_xunlock(&vnet_sxlock); \ } while (0) -struct vnet_list_head vnet_head; +struct vnet_list_head vnet_head = LIST_HEAD_INITIALIZER(vnet_head); struct vnet *vnet0; /* @@ -318,7 +318,6 @@ vnet_init_prelink(void *arg __unused) rw_init(&vnet_rwlock, "vnet_rwlock"); sx_init(&vnet_sxlock, "vnet_sxlock"); sx_init(&vnet_sysinit_sxlock, "vnet_sysinit_sxlock"); - LIST_INIT(&vnet_head); } SYSINIT(vnet_init_prelink, SI_SUB_VNET_PRELINK, SI_ORDER_FIRST, vnet_init_prelink, NULL); diff --git a/sys/net80211/ieee80211_node.c b/sys/net80211/ieee80211_node.c index f4185dfb04d4..a495f2f78113 100644 --- a/sys/net80211/ieee80211_node.c +++ b/sys/net80211/ieee80211_node.c @@ -2206,7 +2206,7 @@ ieee80211_node_delucastkey(struct ieee80211_node *ni) IEEE80211_NODE_LOCK(nt); nikey = NULL; status = 1; /* NB: success */ - if (IEEE80211_KEY_UNDEFINED(&ni->ni_ucastkey)) { + if (!IEEE80211_KEY_UNDEFINED(&ni->ni_ucastkey)) { keyix = ni->ni_ucastkey.wk_rxkeyix; status = ieee80211_crypto_delkey(ni->ni_vap, &ni->ni_ucastkey); if (nt->nt_keyixmap != NULL && keyix < nt->nt_keyixmax) { diff --git a/sys/netinet/ip_carp.c b/sys/netinet/ip_carp.c index c01d1bdd8cff..0ead7149c1e2 100644 --- a/sys/netinet/ip_carp.c +++ b/sys/netinet/ip_carp.c @@ -357,7 +357,7 @@ static void carp_ifa_delroute(struct ifaddr *); static void carp_send_ad_all(void *, int); static void carp_demote_adj(int, char *); -static LIST_HEAD(, carp_softc) carp_list; +static LIST_HEAD(, carp_softc) carp_list = LIST_HEAD_INITIALIZER(carp_list); static struct mtx carp_mtx; static struct sx carp_sx; static struct task carp_sendall_task = @@ -3036,7 +3036,6 @@ carp_mod_load(void) mtx_init(&carp_mtx, "carp_mtx", NULL, MTX_DEF); sx_init(&carp_sx, "carp_sx"); - LIST_INIT(&carp_list); carp_get_vhid_p = carp_get_vhid; carp_forus_p = carp_forus; carp_output_p = carp_output; diff --git a/sys/netinet/tcp_ratelimit.c b/sys/netinet/tcp_ratelimit.c index 22bdf707fa89..a0e837cc7d76 100644 --- a/sys/netinet/tcp_ratelimit.c +++ b/sys/netinet/tcp_ratelimit.c @@ -246,10 +246,10 @@ const uint64_t desired_rates[] = { #define RS_ONE_GIGABIT_PERSEC 1000000000 #define RS_TEN_GIGABIT_PERSEC 10000000000 -static struct head_tcp_rate_set int_rs; +static struct head_tcp_rate_set int_rs = CK_LIST_HEAD_INITIALIZER(); static struct mtx rs_mtx; -uint32_t rs_number_alive; -uint32_t rs_number_dead; +uint32_t rs_number_alive = 0; +uint32_t rs_number_dead = 0; static uint32_t rs_floor_mss = 0; static uint32_t wait_time_floor = 8000; /* 8 ms */ static uint32_t rs_hw_floor_mss = 16; @@ -1778,9 +1778,6 @@ static eventhandler_tag rl_shutdown_start; static void tcp_rs_init(void *st __unused) { - CK_LIST_INIT(&int_rs); - rs_number_alive = 0; - rs_number_dead = 0; mtx_init(&rs_mtx, "tcp_rs_mtx", "rsmtx", MTX_DEF); rl_ifnet_departs = EVENTHANDLER_REGISTER(ifnet_departure_event, tcp_rl_ifnet_departure, |