The branch main has been updated by glebius:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=644ca0846da3492bf286201fd9a81659d044f589

commit 644ca0846da3492bf286201fd9a81659d044f589
Author:     Gleb Smirnoff <[email protected]>
AuthorDate: 2022-01-03 18:15:22 +0000
Commit:     Gleb Smirnoff <[email protected]>
CommitDate: 2022-01-03 18:15:22 +0000

    domains: make domain_init() initialize only global state
    
    Now that each module handles its global and VNET initialization
    itself, there is no VNET related stuff left to do in domain_init().
    
    Differential revision:  https://reviews.freebsd.org/D33541
---
 sys/dev/hyperv/hvsock/hv_sock.c             |  2 +-
 sys/kern/uipc_domain.c                      | 52 +++++++----------------------
 sys/net/rtsock.c                            |  2 +-
 sys/netgraph/bluetooth/socket/ng_btsocket.c |  2 +-
 sys/netgraph/ng_socket.c                    |  2 +-
 sys/netinet/in_proto.c                      |  2 +-
 sys/netinet6/in6_proto.c                    |  2 +-
 sys/sys/domain.h                            | 13 --------
 8 files changed, 18 insertions(+), 59 deletions(-)

diff --git a/sys/dev/hyperv/hvsock/hv_sock.c b/sys/dev/hyperv/hvsock/hv_sock.c
index b2a84befafa2..4bd98d154cbf 100644
--- a/sys/dev/hyperv/hvsock/hv_sock.c
+++ b/sys/dev/hyperv/hvsock/hv_sock.c
@@ -130,7 +130,7 @@ static struct domain                hv_socket_domain = {
        .dom_protoswNPROTOSW =  &hv_socket_protosw[nitems(hv_socket_protosw)]
 };
 
-VNET_DOMAIN_SET(hv_socket_);
+DOMAIN_SET(hv_socket_);
 
 #define MAX_PORT                       ((uint32_t)0xFFFFFFFF)
 #define MIN_PORT                       ((uint32_t)0x0)
diff --git a/sys/kern/uipc_domain.c b/sys/kern/uipc_domain.c
index 832db9f6e667..dc4a1541319c 100644
--- a/sys/kern/uipc_domain.c
+++ b/sys/kern/uipc_domain.c
@@ -183,29 +183,21 @@ domain_init(void *arg)
        struct protosw *pr;
        int flags;
 
+       MPASS(IS_DEFAULT_VNET(curvnet));
+
        flags = atomic_load_acq_int(&dp->dom_flags);
        if ((flags & DOMF_SUPPORTED) == 0)
                return;
-       KASSERT((flags & DOMF_INITED) == 0 || !IS_DEFAULT_VNET(curvnet),
-           ("Premature initialization of domain in non-default vnet"));
+       MPASS((flags & DOMF_INITED) == 0);
+
        for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++) {
-               /*
-                * Note that with VIMAGE enabled, domain_init() will be
-                * re-invoked for each new vnet that's created.  The below lists
-                * are intended to be system-wide, so avoid altering global
-                * state for non-default vnets.
-                */
-               if (IS_DEFAULT_VNET(curvnet)) {
-                       pr_usrreqs_init(pr);
-                       rm_wlock(&pftimo_lock);
-                       if (pr->pr_fasttimo != NULL)
-                               LIST_INSERT_HEAD(&pffast_list, pr,
-                                   pr_fasttimos);
-                       if (pr->pr_slowtimo != NULL)
-                               LIST_INSERT_HEAD(&pfslow_list, pr,
-                                   pr_slowtimos);
-                       rm_wunlock(&pftimo_lock);
-               }
+               pr_usrreqs_init(pr);
+               rm_wlock(&pftimo_lock);
+               if (pr->pr_fasttimo != NULL)
+                       LIST_INSERT_HEAD(&pffast_list, pr, pr_fasttimos);
+               if (pr->pr_slowtimo != NULL)
+                       LIST_INSERT_HEAD(&pfslow_list, pr, pr_slowtimos);
+               rm_wunlock(&pftimo_lock);
        }
 
        /*
@@ -215,29 +207,9 @@ domain_init(void *arg)
        max_datalen = MHLEN - max_hdr;
        if (max_datalen < 1)
                panic("%s: max_datalen < 1", __func__);
-       if (IS_DEFAULT_VNET(curvnet))
-               atomic_set_rel_int(&dp->dom_flags, DOMF_INITED);
-}
-
-#ifdef VIMAGE
-void
-vnet_domain_init(void *arg)
-{
-
-       /* Virtualized case is no different -- call init functions. */
-       domain_init(arg);
+       atomic_set_rel_int(&dp->dom_flags, DOMF_INITED);
 }
 
-void
-vnet_domain_uninit(void *arg)
-{
-       struct domain *dp = arg;
-
-       if ((atomic_load_acq_int(&dp->dom_flags) & DOMF_SUPPORTED) == 0)
-               return;
-}
-#endif
-
 /*
  * Add a new protocol domain to the list of supported domains
  * Note: you cant unload it again because a socket may be using it.
diff --git a/sys/net/rtsock.c b/sys/net/rtsock.c
index 7c4ff01e5e73..9ab07b374ea2 100644
--- a/sys/net/rtsock.c
+++ b/sys/net/rtsock.c
@@ -2702,4 +2702,4 @@ static struct domain routedomain = {
        .dom_protoswNPROTOSW =  &routesw[nitems(routesw)]
 };
 
-VNET_DOMAIN_SET(route);
+DOMAIN_SET(route);
diff --git a/sys/netgraph/bluetooth/socket/ng_btsocket.c 
b/sys/netgraph/bluetooth/socket/ng_btsocket.c
index 93866ce79d6c..416f07a670c6 100644
--- a/sys/netgraph/bluetooth/socket/ng_btsocket.c
+++ b/sys/netgraph/bluetooth/socket/ng_btsocket.c
@@ -287,4 +287,4 @@ ng_btsocket_modevent(module_t mod, int event, void *data)
        return (error);
 } /* ng_btsocket_modevent */
 
-VNET_DOMAIN_SET(ng_btsocket_);
+DOMAIN_SET(ng_btsocket_);
diff --git a/sys/netgraph/ng_socket.c b/sys/netgraph/ng_socket.c
index 05f37579aba1..d8a7d2f3701f 100644
--- a/sys/netgraph/ng_socket.c
+++ b/sys/netgraph/ng_socket.c
@@ -1223,7 +1223,7 @@ ngs_mod_event(module_t mod, int event, void *data)
        return (error);
 }
 
-VNET_DOMAIN_SET(ng);
+DOMAIN_SET(ng);
 
 SYSCTL_INT(_net_graph, OID_AUTO, family, CTLFLAG_RD, SYSCTL_NULL_INT_PTR, 
AF_NETGRAPH, "");
 static SYSCTL_NODE(_net_graph, OID_AUTO, data, CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
diff --git a/sys/netinet/in_proto.c b/sys/netinet/in_proto.c
index 035051c6f5da..b9f506518cce 100644
--- a/sys/netinet/in_proto.c
+++ b/sys/netinet/in_proto.c
@@ -302,7 +302,7 @@ struct domain inetdomain = {
        .dom_ifdetach =         in_domifdetach
 };
 
-VNET_DOMAIN_SET(inet);
+DOMAIN_SET(inet);
 #endif /* INET */
 
 SYSCTL_NODE(_net, PF_INET, inet, CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
diff --git a/sys/netinet6/in6_proto.c b/sys/netinet6/in6_proto.c
index 44eb0fa4ee62..6ccd90ac6fdd 100644
--- a/sys/netinet6/in6_proto.c
+++ b/sys/netinet6/in6_proto.c
@@ -345,7 +345,7 @@ struct domain inet6domain = {
        .dom_ifmtu    =         in6_domifmtu
 };
 
-VNET_DOMAIN_SET(inet6);
+DOMAIN_SET(inet6);
 
 /*
  * Internet configuration info
diff --git a/sys/sys/domain.h b/sys/sys/domain.h
index c9defe8e4341..409372e91915 100644
--- a/sys/sys/domain.h
+++ b/sys/sys/domain.h
@@ -87,19 +87,6 @@ void         vnet_domain_uninit(void *);
            SI_ORDER_FIRST, domain_add, & name ## domain);              \
        SYSINIT(domain_init_ ## name, SI_SUB_PROTO_DOMAIN,              \
            SI_ORDER_SECOND, domain_init, & name ## domain);
-#ifdef VIMAGE
-#define        VNET_DOMAIN_SET(name)                                           
\
-       SYSINIT(domain_add_ ## name, SI_SUB_PROTO_DOMAIN,               \
-           SI_ORDER_FIRST, domain_add, & name ## domain);              \
-       VNET_SYSINIT(vnet_domain_init_ ## name, SI_SUB_PROTO_DOMAIN,    \
-           SI_ORDER_SECOND, vnet_domain_init, & name ## domain);       \
-       VNET_SYSUNINIT(vnet_domain_uninit_ ## name,                     \
-           SI_SUB_PROTO_DOMAIN, SI_ORDER_SECOND, vnet_domain_uninit,   \
-           & name ## domain)
-#else /* !VIMAGE */
-#define        VNET_DOMAIN_SET(name)   DOMAIN_SET(name)
-#endif /* VIMAGE */
-
 #endif /* _KERNEL */
 
 #endif /* !_SYS_DOMAIN_H_ */

Reply via email to