diff options
author | Pawel Biernacki <kaktus@FreeBSD.org> | 2020-02-26 14:26:36 +0000 |
---|---|---|
committer | Pawel Biernacki <kaktus@FreeBSD.org> | 2020-02-26 14:26:36 +0000 |
commit | 7029da5c36f2d3cf6bb6c81bf551229f416399e8 (patch) | |
tree | 53cae9da1371117a3ac21d0d0f3f030a692807ae /sys/dev/sfxge | |
parent | d7313dc6f5fcab29946951936597772dfff6a4be (diff) | |
download | src-7029da5c36f2d3cf6bb6c81bf551229f416399e8.tar.gz src-7029da5c36f2d3cf6bb6c81bf551229f416399e8.zip |
Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many)
r357614 added CTLFLAG_NEEDGIANT to make it easier to find nodes that are
still not MPSAFE (or already are but aren’t properly marked).
Use it in preparation for a general review of all nodes.
This is non-functional change that adds annotations to SYSCTL_NODE and
SYSCTL_PROC nodes using one of the soon-to-be-required flags.
Mark all obvious cases as MPSAFE. All entries that haven't been marked
as MPSAFE before are by default marked as NEEDGIANT
Approved by: kib (mentor, blanket)
Commented by: kib, gallatin, melifaro
Differential Revision: https://reviews.freebsd.org/D23718
Notes
Notes:
svn path=/head/; revision=358333
Diffstat (limited to 'sys/dev/sfxge')
-rw-r--r-- | sys/dev/sfxge/sfxge.c | 25 | ||||
-rw-r--r-- | sys/dev/sfxge/sfxge_ev.c | 33 | ||||
-rw-r--r-- | sys/dev/sfxge/sfxge_port.c | 25 | ||||
-rw-r--r-- | sys/dev/sfxge/sfxge_rx.c | 14 | ||||
-rw-r--r-- | sys/dev/sfxge/sfxge_tx.c | 26 |
5 files changed, 55 insertions, 68 deletions
diff --git a/sys/dev/sfxge/sfxge.c b/sys/dev/sfxge/sfxge.c index 7932e204ddf5..b9ee63569d99 100644 --- a/sys/dev/sfxge/sfxge.c +++ b/sys/dev/sfxge/sfxge.c @@ -86,8 +86,8 @@ __FBSDID("$FreeBSD$"); MALLOC_DEFINE(M_SFXGE, "sfxge", "Solarflare 10GigE driver"); -SYSCTL_NODE(_hw, OID_AUTO, sfxge, CTLFLAG_RD, 0, - "SFXGE driver parameters"); +SYSCTL_NODE(_hw, OID_AUTO, sfxge, CTLFLAG_RD | CTLFLAG_MPSAFE, 0, + "SFXGE driver parameters"); #define SFXGE_PARAM_RX_RING SFXGE_PARAM(rx_ring) static int sfxge_rx_ring_entries = SFXGE_NDESCS; @@ -704,10 +704,9 @@ sfxge_create(struct sfxge_softc *sc) TUNABLE_INT_FETCH(mcdi_log_param_name, &sc->mcdi_logging); #endif - sc->stats_node = SYSCTL_ADD_NODE( - device_get_sysctl_ctx(dev), - SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), - OID_AUTO, "stats", CTLFLAG_RD, NULL, "Statistics"); + sc->stats_node = SYSCTL_ADD_NODE(device_get_sysctl_ctx(dev), + SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO, "stats", + CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "Statistics"); if (sc->stats_node == NULL) { error = ENOMEM; goto fail; @@ -970,10 +969,10 @@ sfxge_vpd_try_add(struct sfxge_softc *sc, struct sysctl_oid_list *list, if (efx_vpd_get(sc->enp, sc->vpd_data, sc->vpd_size, &value) != 0) return; - SYSCTL_ADD_PROC( - ctx, list, OID_AUTO, keyword, CTLTYPE_STRING|CTLFLAG_RD, - sc, tag << 16 | EFX_VPD_KEYWORD(keyword[0], keyword[1]), - sfxge_vpd_handler, "A", ""); + SYSCTL_ADD_PROC(ctx, list, OID_AUTO, keyword, + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, + sc, tag << 16 | EFX_VPD_KEYWORD(keyword[0], keyword[1]), + sfxge_vpd_handler, "A", ""); } static int @@ -1007,9 +1006,9 @@ sfxge_vpd_init(struct sfxge_softc *sc) device_printf(sc->dev, "%s\n", value.evv_value); } - vpd_node = SYSCTL_ADD_NODE( - ctx, SYSCTL_CHILDREN(device_get_sysctl_tree(sc->dev)), - OID_AUTO, "vpd", CTLFLAG_RD, NULL, "Vital Product Data"); + vpd_node = SYSCTL_ADD_NODE(ctx, + SYSCTL_CHILDREN(device_get_sysctl_tree(sc->dev)), OID_AUTO, "vpd", + CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "Vital Product Data"); vpd_list = SYSCTL_CHILDREN(vpd_node); /* Add sysctls for all expected and any vendor-defined keywords. */ diff --git a/sys/dev/sfxge/sfxge_ev.c b/sys/dev/sfxge/sfxge_ev.c index ea452c9e13e6..bcc18fb31d64 100644 --- a/sys/dev/sfxge/sfxge_ev.c +++ b/sys/dev/sfxge/sfxge_ev.c @@ -494,18 +494,16 @@ sfxge_evq_stat_init(struct sfxge_evq *evq) snprintf(name, sizeof(name), "%u", evq->index); evq_stats_node = SYSCTL_ADD_NODE(ctx, - SYSCTL_CHILDREN(sc->evqs_stats_node), - OID_AUTO, name, CTLFLAG_RD, NULL, ""); + SYSCTL_CHILDREN(sc->evqs_stats_node), OID_AUTO, name, + CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, ""); if (evq_stats_node == NULL) return (ENOMEM); for (id = 0; id < EV_NQSTATS; id++) { - SYSCTL_ADD_PROC( - ctx, SYSCTL_CHILDREN(evq_stats_node), - OID_AUTO, efx_ev_qstat_name(sc->enp, id), - CTLTYPE_U64|CTLFLAG_RD, - evq, id, sfxge_evq_stat_handler, "Q", - ""); + SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(evq_stats_node), + OID_AUTO, efx_ev_qstat_name(sc->enp, id), + CTLTYPE_U64 | CTLFLAG_RD | CTLFLAG_MPSAFE, evq, id, + sfxge_evq_stat_handler, "Q", ""); } return (0); @@ -564,11 +562,9 @@ sfxge_ev_stat_init(struct sfxge_softc *sc) for (id = 0; id < EV_NQSTATS; id++) { snprintf(name, sizeof(name), "ev_%s", efx_ev_qstat_name(sc->enp, id)); - SYSCTL_ADD_PROC( - ctx, stat_list, - OID_AUTO, name, CTLTYPE_U64|CTLFLAG_RD, - sc, id, sfxge_ev_stat_handler, "Q", - ""); + SYSCTL_ADD_PROC(ctx, stat_list, OID_AUTO, name, + CTLTYPE_U64 | CTLFLAG_RD | CTLFLAG_MPSAFE, + sc, id, sfxge_ev_stat_handler, "Q", ""); } } @@ -1004,14 +1000,15 @@ sfxge_ev_init(struct sfxge_softc *sc) */ sc->ev_moderation = SFXGE_MODERATION; SYSCTL_ADD_PROC(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), - OID_AUTO, "int_mod", CTLTYPE_UINT|CTLFLAG_RW, - sc, 0, sfxge_int_mod_handler, "IU", - "sfxge interrupt moderation (us)"); + OID_AUTO, "int_mod", CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, + sc, 0, sfxge_int_mod_handler, "IU", + "sfxge interrupt moderation (us)"); #if EFSYS_OPT_QSTATS sc->evqs_stats_node = SYSCTL_ADD_NODE( - device_get_sysctl_ctx(sc->dev), SYSCTL_CHILDREN(sc->stats_node), - OID_AUTO, "evq", CTLFLAG_RD, NULL, "Event queues stats"); + device_get_sysctl_ctx(sc->dev), SYSCTL_CHILDREN(sc->stats_node), + OID_AUTO, "evq", CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, + "Event queues stats"); if (sc->evqs_stats_node == NULL) { rc = ENOMEM; goto fail_evqs_stats_node; diff --git a/sys/dev/sfxge/sfxge_port.c b/sys/dev/sfxge/sfxge_port.c index 3407a176d863..2100d1d647cd 100644 --- a/sys/dev/sfxge/sfxge_port.c +++ b/sys/dev/sfxge/sfxge_port.c @@ -194,11 +194,9 @@ sfxge_mac_stat_init(struct sfxge_softc *sc) /* Initialise the named stats */ for (id = 0; id < EFX_MAC_NSTATS; id++) { name = efx_mac_stat_name(sc->enp, id); - SYSCTL_ADD_PROC( - ctx, stat_list, - OID_AUTO, name, CTLTYPE_U64|CTLFLAG_RD, - sc, id, sfxge_mac_stat_handler, "Q", - ""); + SYSCTL_ADD_PROC(ctx, stat_list, OID_AUTO, name, + CTLTYPE_U64 | CTLFLAG_RD | CTLFLAG_MPSAFE, + sc, id, sfxge_mac_stat_handler, "Q", ""); } } @@ -650,12 +648,10 @@ sfxge_phy_stat_init(struct sfxge_softc *sc) if (!(stat_mask & ((uint64_t)1 << id))) continue; name = efx_phy_stat_name(sc->enp, id); - SYSCTL_ADD_PROC( - ctx, stat_list, - OID_AUTO, name, CTLTYPE_UINT|CTLFLAG_RD, - sc, id, sfxge_phy_stat_handler, - id == EFX_PHY_STAT_OUI ? "IX" : "IU", - ""); + SYSCTL_ADD_PROC(ctx, stat_list, OID_AUTO, name, + CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_MPSAFE, + sc, id, sfxge_phy_stat_handler, + id == EFX_PHY_STAT_OUI ? "IX" : "IU", ""); } } @@ -787,10 +783,10 @@ sfxge_port_init(struct sfxge_softc *sc) * ifmedia, provide sysctls for it. */ port->wanted_fc = EFX_FCNTL_RESPOND | EFX_FCNTL_GENERATE; SYSCTL_ADD_PROC(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), OID_AUTO, - "wanted_fc", CTLTYPE_UINT|CTLFLAG_RW, sc, 0, + "wanted_fc", CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, 0, sfxge_port_wanted_fc_handler, "IU", "wanted flow control mode"); SYSCTL_ADD_PROC(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), OID_AUTO, - "link_fc", CTLTYPE_UINT|CTLFLAG_RD, sc, 0, + "link_fc", CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_MPSAFE, sc, 0, sfxge_port_link_fc_handler, "IU", "link flow control mode"); #endif @@ -806,7 +802,8 @@ sfxge_port_init(struct sfxge_softc *sc) sfxge_mac_stat_init(sc); SYSCTL_ADD_PROC(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), OID_AUTO, - "stats_update_period_ms", CTLTYPE_UINT|CTLFLAG_RW, sc, 0, + "stats_update_period_ms", + CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_MPSAFE, sc, 0, sfxge_port_stats_update_period_ms_handler, "IU", "interface statistics refresh period"); diff --git a/sys/dev/sfxge/sfxge_rx.c b/sys/dev/sfxge/sfxge_rx.c index cb1caae80165..c1fd93728594 100644 --- a/sys/dev/sfxge/sfxge_rx.c +++ b/sys/dev/sfxge/sfxge_rx.c @@ -73,8 +73,8 @@ __FBSDID("$FreeBSD$"); #ifdef SFXGE_LRO -SYSCTL_NODE(_hw_sfxge, OID_AUTO, lro, CTLFLAG_RD, NULL, - "Large receive offload (LRO) parameters"); +SYSCTL_NODE(_hw_sfxge, OID_AUTO, lro, CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, + "Large receive offload (LRO) parameters"); #define SFXGE_LRO_PARAM(_param) SFXGE_PARAM(lro._param) @@ -1356,12 +1356,10 @@ sfxge_rx_stat_init(struct sfxge_softc *sc) stat_list = SYSCTL_CHILDREN(sc->stats_node); for (id = 0; id < nitems(sfxge_rx_stats); id++) { - SYSCTL_ADD_PROC( - ctx, stat_list, - OID_AUTO, sfxge_rx_stats[id].name, - CTLTYPE_UINT|CTLFLAG_RD, - sc, id, sfxge_rx_stat_handler, "IU", - ""); + SYSCTL_ADD_PROC(ctx, stat_list, OID_AUTO, + sfxge_rx_stats[id].name, + CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, + sc, id, sfxge_rx_stat_handler, "IU", ""); } } diff --git a/sys/dev/sfxge/sfxge_tx.c b/sys/dev/sfxge/sfxge_tx.c index 25841e10e381..bdf698881301 100644 --- a/sys/dev/sfxge/sfxge_tx.c +++ b/sys/dev/sfxge/sfxge_tx.c @@ -1760,8 +1760,7 @@ sfxge_txq_stat_init(struct sfxge_txq *txq, struct sysctl_oid *txq_node) unsigned int id; stat_node = SYSCTL_ADD_NODE(ctx, SYSCTL_CHILDREN(txq_node), OID_AUTO, - "stats", CTLFLAG_RD, NULL, - "Tx queue statistics"); + "stats", CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "Tx queue statistics"); if (stat_node == NULL) return (ENOMEM); @@ -1872,7 +1871,7 @@ sfxge_tx_qinit(struct sfxge_softc *sc, unsigned int txq_index, snprintf(name, sizeof(name), "%u", txq_index); txq_node = SYSCTL_ADD_NODE(ctx, SYSCTL_CHILDREN(sc->txqs_node), - OID_AUTO, name, CTLFLAG_RD, NULL, ""); + OID_AUTO, name, CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, ""); if (txq_node == NULL) { rc = ENOMEM; goto fail_txq_node; @@ -1892,8 +1891,8 @@ sfxge_tx_qinit(struct sfxge_softc *sc, unsigned int txq_index, SFXGE_TXQ_LOCK_INIT(txq, device_get_nameunit(sc->dev), txq_index); dpl_node = SYSCTL_ADD_NODE(ctx, SYSCTL_CHILDREN(txq_node), OID_AUTO, - "dpl", CTLFLAG_RD, NULL, - "Deferred packet list statistics"); + "dpl", CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, + "Deferred packet list statistics"); if (dpl_node == NULL) { rc = ENOMEM; goto fail_dpl_node; @@ -1966,12 +1965,10 @@ sfxge_tx_stat_init(struct sfxge_softc *sc) stat_list = SYSCTL_CHILDREN(sc->stats_node); for (id = 0; id < nitems(sfxge_tx_stats); id++) { - SYSCTL_ADD_PROC( - ctx, stat_list, - OID_AUTO, sfxge_tx_stats[id].name, - CTLTYPE_ULONG|CTLFLAG_RD, - sc, id, sfxge_tx_stat_handler, "LU", - ""); + SYSCTL_ADD_PROC(ctx, stat_list, OID_AUTO, + sfxge_tx_stats[id].name, + CTLTYPE_ULONG | CTLFLAG_RD | CTLFLAG_NEEDGIANT, + sc, id, sfxge_tx_stat_handler, "LU", ""); } } @@ -2054,10 +2051,9 @@ sfxge_tx_init(struct sfxge_softc *sc) (!encp->enc_fw_assisted_tso_v2_enabled)) sc->tso_fw_assisted &= ~SFXGE_FATSOV2; - sc->txqs_node = SYSCTL_ADD_NODE( - device_get_sysctl_ctx(sc->dev), - SYSCTL_CHILDREN(device_get_sysctl_tree(sc->dev)), - OID_AUTO, "txq", CTLFLAG_RD, NULL, "Tx queues"); + sc->txqs_node = SYSCTL_ADD_NODE(device_get_sysctl_ctx(sc->dev), + SYSCTL_CHILDREN(device_get_sysctl_tree(sc->dev)), OID_AUTO, + "txq", CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "Tx queues"); if (sc->txqs_node == NULL) { rc = ENOMEM; goto fail_txq_node; |