Date: Mon, 24 Feb 2020 11:53:03 +0100 From: =?utf-8?Q?Pawe=C5=82_Biernacki?= <kaktus@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r358286 - in head/sys/dev: e1000 ixgbe ixl Message-ID: <C2E42B36-B50F-44E9-83B0-94D255FA64A2@FreeBSD.org> In-Reply-To: <202002241051.01OApQM1019213@repo.freebsd.org> References: <202002241051.01OApQM1019213@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Approved by: kib (mentor, blanket) Differential Revision: https://reviews.freebsd.org/D23630 = <https://reviews.freebsd.org/D23639> > On 24 Feb 2020, at 11:51, Pawel Biernacki <kaktus@FreeBSD.org> wrote: >=20 > Author: kaktus > Date: Mon Feb 24 10:51:26 2020 > New Revision: 358286 > URL: https://svnweb.freebsd.org/changeset/base/358286 >=20 > Log: > Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (15 of many) >=20 > r357614 added CTLFLAG_NEEDGIANT to make it easier to find nodes that = are > still not MPSAFE (or already are but aren=E2=80=99t properly marked). > Use it in preparation for a general review of all nodes. >=20 > This is non-functional change that adds annotations to SYSCTL_NODE = and > SYSCTL_PROC nodes using one of the soon-to-be-required flags. >=20 > Modified: > head/sys/dev/e1000/if_em.c > head/sys/dev/ixgbe/if_bypass.c > head/sys/dev/ixgbe/if_ix.c > head/sys/dev/ixgbe/if_ixv.c > head/sys/dev/ixl/if_iavf.c > head/sys/dev/ixl/if_ixl.c > head/sys/dev/ixl/ixl_pf_main.c > head/sys/dev/ixl/ixl_txrx.c >=20 > Modified: head/sys/dev/e1000/if_em.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/dev/e1000/if_em.c Mon Feb 24 10:47:18 2020 = (r358285) > +++ head/sys/dev/e1000/if_em.c Mon Feb 24 10:51:26 2020 = (r358286) > @@ -459,7 +459,8 @@ static driver_t igb_if_driver =3D { > #define CSUM_TSO 0 > #endif >=20 > -static SYSCTL_NODE(_hw, OID_AUTO, em, CTLFLAG_RD, 0, "EM driver = parameters"); > +static SYSCTL_NODE(_hw, OID_AUTO, em, CTLFLAG_RD | CTLFLAG_MPSAFE, 0, > + "EM driver parameters"); >=20 > static int em_disable_crc_stripping =3D 0; > SYSCTL_INT(_hw_em, OID_AUTO, disable_crc_stripping, CTLFLAG_RDTUN, > @@ -785,27 +786,29 @@ em_if_attach_pre(if_ctx_t ctx) > /* SYSCTL stuff */ > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), > SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), > - OID_AUTO, "nvm", CTLTYPE_INT|CTLFLAG_RW, adapter, 0, > - em_sysctl_nvm_info, "I", "NVM Information"); > + OID_AUTO, "nvm", CTLTYPE_INT | CTLFLAG_RW | = CTLFLAG_NEEDGIANT, > + adapter, 0, em_sysctl_nvm_info, "I", "NVM Information"); >=20 > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), > SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), > - OID_AUTO, "debug", CTLTYPE_INT|CTLFLAG_RW, adapter, 0, > - em_sysctl_debug_info, "I", "Debug Information"); > + OID_AUTO, "debug", CTLTYPE_INT | CTLFLAG_RW | = CTLFLAG_NEEDGIANT, > + adapter, 0, em_sysctl_debug_info, "I", "Debug Information"); >=20 > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), > SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), > - OID_AUTO, "fc", CTLTYPE_INT|CTLFLAG_RW, adapter, 0, > - em_set_flowcntl, "I", "Flow Control"); > + OID_AUTO, "fc", CTLTYPE_INT | CTLFLAG_RW | = CTLFLAG_NEEDGIANT, > + adapter, 0, em_set_flowcntl, "I", "Flow Control"); >=20 > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), > SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), > - OID_AUTO, "reg_dump", CTLTYPE_STRING | CTLFLAG_RD, adapter, = 0, > + OID_AUTO, "reg_dump", > + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, adapter, 0, > em_get_regs, "A", "Dump Registers"); >=20 > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), > SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), > - OID_AUTO, "rs_dump", CTLTYPE_INT | CTLFLAG_RW, adapter, 0, > + OID_AUTO, "rs_dump", > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, adapter, 0, > em_get_rs, "I", "Dump RS indexes"); >=20 > /* Determine hardware and mac info */ > @@ -1020,7 +1023,8 @@ em_if_attach_pre(if_ctx_t ctx) > hw->dev_spec.ich8lan.eee_disable =3D eee_setting; > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), > SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), > - OID_AUTO, "eee_control", CTLTYPE_INT|CTLFLAG_RW, > + OID_AUTO, "eee_control", > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, > adapter, 0, em_sysctl_eee, "I", > "Disable Energy Efficient Ethernet"); >=20 > @@ -4081,13 +4085,13 @@ em_add_hw_stats(struct adapter *adapter) > CTLFLAG_RD, &adapter->watchdog_events, > "Watchdog timeouts"); > SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "device_control", > - CTLTYPE_UINT | CTLFLAG_RD, adapter, E1000_CTRL, > - em_sysctl_reg_handler, "IU", > - "Device Control Register"); > + CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, > + adapter, E1000_CTRL, em_sysctl_reg_handler, "IU", > + "Device Control Register"); > SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "rx_control", > - CTLTYPE_UINT | CTLFLAG_RD, adapter, E1000_RCTL, > - em_sysctl_reg_handler, "IU", > - "Receiver Control Register"); > + CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, > + adapter, E1000_RCTL, em_sysctl_reg_handler, "IU", > + "Receiver Control Register"); > SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "fc_high_water", > CTLFLAG_RD, &adapter->hw.fc.high_water, 0, > "Flow Control High Watermark"); > @@ -4099,19 +4103,17 @@ em_add_hw_stats(struct adapter *adapter) > struct tx_ring *txr =3D &tx_que->txr; > snprintf(namebuf, QUEUE_NAME_LEN, "queue_tx_%d", i); > queue_node =3D SYSCTL_ADD_NODE(ctx, child, OID_AUTO, = namebuf, > - CTLFLAG_RD, NULL, "TX Queue = Name"); > + CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "TX Queue Name"); > queue_list =3D SYSCTL_CHILDREN(queue_node); >=20 > SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "txd_head", > - CTLTYPE_UINT | CTLFLAG_RD, adapter, > - E1000_TDH(txr->me), > - em_sysctl_reg_handler, "IU", > - "Transmit Descriptor Head"); > + CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, = adapter, > + E1000_TDH(txr->me), em_sysctl_reg_handler, "IU", > + "Transmit Descriptor Head"); > SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "txd_tail", > - CTLTYPE_UINT | CTLFLAG_RD, adapter, > - E1000_TDT(txr->me), > - em_sysctl_reg_handler, "IU", > - "Transmit Descriptor Tail"); > + CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, = adapter, > + E1000_TDT(txr->me), em_sysctl_reg_handler, "IU", > + "Transmit Descriptor Tail"); > SYSCTL_ADD_ULONG(ctx, queue_list, OID_AUTO, "tx_irq", > CTLFLAG_RD, &txr->tx_irq, > "Queue MSI-X Transmit Interrupts"); > @@ -4121,19 +4123,17 @@ em_add_hw_stats(struct adapter *adapter) > struct rx_ring *rxr =3D &rx_que->rxr; > snprintf(namebuf, QUEUE_NAME_LEN, "queue_rx_%d", j); > queue_node =3D SYSCTL_ADD_NODE(ctx, child, OID_AUTO, = namebuf, > - CTLFLAG_RD, NULL, "RX Queue = Name"); > + CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "RX Queue Name"); > queue_list =3D SYSCTL_CHILDREN(queue_node); >=20 > SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "rxd_head", > - CTLTYPE_UINT | CTLFLAG_RD, adapter, > - E1000_RDH(rxr->me), > - em_sysctl_reg_handler, "IU", > - "Receive Descriptor Head"); > + CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, = adapter, > + E1000_RDH(rxr->me), em_sysctl_reg_handler, "IU", > + "Receive Descriptor Head"); > SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "rxd_tail", > - CTLTYPE_UINT | CTLFLAG_RD, adapter, > - E1000_RDT(rxr->me), > - em_sysctl_reg_handler, "IU", > - "Receive Descriptor Tail"); > + CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, = adapter, > + E1000_RDT(rxr->me), em_sysctl_reg_handler, "IU", > + "Receive Descriptor Tail"); > SYSCTL_ADD_ULONG(ctx, queue_list, OID_AUTO, "rx_irq", > CTLFLAG_RD, &rxr->rx_irq, > "Queue MSI-X Receive Interrupts"); > @@ -4142,7 +4142,7 @@ em_add_hw_stats(struct adapter *adapter) > /* MAC stats get their own sub node */ >=20 > stat_node =3D SYSCTL_ADD_NODE(ctx, child, OID_AUTO, "mac_stats", > - CTLFLAG_RD, NULL, "Statistics"); > + CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "Statistics"); > stat_list =3D SYSCTL_CHILDREN(stat_node); >=20 > SYSCTL_ADD_UQUAD(ctx, stat_list, OID_AUTO, "excess_coll", > @@ -4293,7 +4293,7 @@ em_add_hw_stats(struct adapter *adapter) > /* Interrupt Stats */ >=20 > int_node =3D SYSCTL_ADD_NODE(ctx, child, OID_AUTO, "interrupts", > - CTLFLAG_RD, NULL, "Interrupt = Statistics"); > + CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "Interrupt Statistics"); > int_list =3D SYSCTL_CHILDREN(int_node); >=20 > SYSCTL_ADD_UQUAD(ctx, int_list, OID_AUTO, "asserts", > @@ -4435,7 +4435,7 @@ em_add_int_delay_sysctl(struct adapter *adapter, = const > info->value =3D value; > SYSCTL_ADD_PROC(device_get_sysctl_ctx(adapter->dev), > SYSCTL_CHILDREN(device_get_sysctl_tree(adapter->dev)), > - OID_AUTO, name, CTLTYPE_INT|CTLFLAG_RW, > + OID_AUTO, name, CTLTYPE_INT | CTLFLAG_RW | = CTLFLAG_NEEDGIANT, > info, 0, em_sysctl_int_delay, "I", description); > } >=20 >=20 > Modified: head/sys/dev/ixgbe/if_bypass.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/dev/ixgbe/if_bypass.c Mon Feb 24 10:47:18 2020 = (r358285) > +++ head/sys/dev/ixgbe/if_bypass.c Mon Feb 24 10:51:26 2020 = (r358286) > @@ -746,50 +746,51 @@ ixgbe_bypass_init(struct adapter *adapter) > */ > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), > SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), > - OID_AUTO, "bypass_log", CTLTYPE_INT | CTLFLAG_RW, > + OID_AUTO, "bypass_log", > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, > adapter, 0, ixgbe_bp_log, "I", "Bypass Log"); >=20 > /* All other setting are hung from the 'bypass' node */ > bp_node =3D SYSCTL_ADD_NODE(device_get_sysctl_ctx(dev), > SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), > - OID_AUTO, "bypass", CTLFLAG_RD, NULL, "Bypass"); > + OID_AUTO, "bypass", CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, = "Bypass"); >=20 > bp_list =3D SYSCTL_CHILDREN(bp_node); >=20 > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), bp_list, > - OID_AUTO, "version", CTLTYPE_INT | CTLFLAG_RD, > + OID_AUTO, "version", CTLTYPE_INT | CTLFLAG_RD | = CTLFLAG_NEEDGIANT, > adapter, 0, ixgbe_bp_version, "I", "Bypass Version"); >=20 > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), bp_list, > - OID_AUTO, "state", CTLTYPE_INT | CTLFLAG_RW, > + OID_AUTO, "state", CTLTYPE_INT | CTLFLAG_RW | = CTLFLAG_NEEDGIANT, > adapter, 0, ixgbe_bp_set_state, "I", "Bypass State"); >=20 > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), bp_list, > - OID_AUTO, "timeout", CTLTYPE_INT | CTLFLAG_RW, > + OID_AUTO, "timeout", CTLTYPE_INT | CTLFLAG_RW | = CTLFLAG_NEEDGIANT, > adapter, 0, ixgbe_bp_timeout, "I", "Bypass Timeout"); >=20 > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), bp_list, > - OID_AUTO, "main_on", CTLTYPE_INT | CTLFLAG_RW, > + OID_AUTO, "main_on", CTLTYPE_INT | CTLFLAG_RW | = CTLFLAG_NEEDGIANT, > adapter, 0, ixgbe_bp_main_on, "I", "Bypass Main On"); >=20 > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), bp_list, > - OID_AUTO, "main_off", CTLTYPE_INT | CTLFLAG_RW, > + OID_AUTO, "main_off", CTLTYPE_INT | CTLFLAG_RW | = CTLFLAG_NEEDGIANT, > adapter, 0, ixgbe_bp_main_off, "I", "Bypass Main Off"); >=20 > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), bp_list, > - OID_AUTO, "aux_on", CTLTYPE_INT | CTLFLAG_RW, > + OID_AUTO, "aux_on", CTLTYPE_INT | CTLFLAG_RW | = CTLFLAG_NEEDGIANT, > adapter, 0, ixgbe_bp_aux_on, "I", "Bypass Aux On"); >=20 > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), bp_list, > - OID_AUTO, "aux_off", CTLTYPE_INT | CTLFLAG_RW, > + OID_AUTO, "aux_off", CTLTYPE_INT | CTLFLAG_RW | = CTLFLAG_NEEDGIANT, > adapter, 0, ixgbe_bp_aux_off, "I", "Bypass Aux Off"); >=20 > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), bp_list, > - OID_AUTO, "wd_set", CTLTYPE_INT | CTLFLAG_RW, > + OID_AUTO, "wd_set", CTLTYPE_INT | CTLFLAG_RW | = CTLFLAG_NEEDGIANT, > adapter, 0, ixgbe_bp_wd_set, "I", "Set BP Watchdog"); >=20 > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), bp_list, > - OID_AUTO, "wd_reset", CTLTYPE_INT | CTLFLAG_WR, > + OID_AUTO, "wd_reset", CTLTYPE_INT | CTLFLAG_WR | = CTLFLAG_NEEDGIANT, > adapter, 0, ixgbe_bp_wd_reset, "S", "Bypass WD Reset"); >=20 > adapter->feat_en |=3D IXGBE_FEATURE_BYPASS; >=20 > Modified: head/sys/dev/ixgbe/if_ix.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/dev/ixgbe/if_ix.c Mon Feb 24 10:47:18 2020 = (r358285) > +++ head/sys/dev/ixgbe/if_ix.c Mon Feb 24 10:51:26 2020 = (r358286) > @@ -285,7 +285,8 @@ static device_method_t ixgbe_if_methods[] =3D { > * TUNEABLE PARAMETERS: > */ >=20 > -static SYSCTL_NODE(_hw, OID_AUTO, ix, CTLFLAG_RD, 0, "IXGBE driver = parameters"); > +static SYSCTL_NODE(_hw, OID_AUTO, ix, CTLFLAG_RD | CTLFLAG_MPSAFE, 0, > + "IXGBE driver parameters"); > static driver_t ixgbe_if_driver =3D { > "ixgbe_if", ixgbe_if_methods, sizeof(struct adapter) > }; > @@ -1546,14 +1547,14 @@ ixgbe_add_hw_stats(struct adapter *adapter) > struct tx_ring *txr =3D &tx_que->txr; > snprintf(namebuf, QUEUE_NAME_LEN, "queue%d", i); > queue_node =3D SYSCTL_ADD_NODE(ctx, child, OID_AUTO, = namebuf, > - CTLFLAG_RD, NULL, "Queue Name"); > + CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "Queue Name"); > queue_list =3D SYSCTL_CHILDREN(queue_node); >=20 > SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "txd_head", > - CTLTYPE_UINT | CTLFLAG_RD, txr, 0, > + CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, txr, = 0, > ixgbe_sysctl_tdh_handler, "IU", "Transmit Descriptor = Head"); > SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "txd_tail", > - CTLTYPE_UINT | CTLFLAG_RD, txr, 0, > + CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, txr, = 0, > ixgbe_sysctl_tdt_handler, "IU", "Transmit Descriptor = Tail"); > SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "tso_tx", > CTLFLAG_RD, &txr->tso_tx, "TSO"); > @@ -1566,21 +1567,22 @@ ixgbe_add_hw_stats(struct adapter *adapter) > struct rx_ring *rxr =3D &rx_que->rxr; > snprintf(namebuf, QUEUE_NAME_LEN, "queue%d", i); > queue_node =3D SYSCTL_ADD_NODE(ctx, child, OID_AUTO, = namebuf, > - CTLFLAG_RD, NULL, "Queue Name"); > + CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "Queue Name"); > queue_list =3D SYSCTL_CHILDREN(queue_node); >=20 > SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, = "interrupt_rate", > - CTLTYPE_UINT | CTLFLAG_RW, &adapter->rx_queues[i], = 0, > + CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, > + &adapter->rx_queues[i], 0, > ixgbe_sysctl_interrupt_rate_handler, "IU", > "Interrupt Rate"); > SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "irqs", > CTLFLAG_RD, &(adapter->rx_queues[i].irqs), > "irqs on this queue"); > SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "rxd_head", > - CTLTYPE_UINT | CTLFLAG_RD, rxr, 0, > + CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, rxr, = 0, > ixgbe_sysctl_rdh_handler, "IU", "Receive Descriptor = Head"); > SYSCTL_ADD_PROC(ctx, queue_list, OID_AUTO, "rxd_tail", > - CTLTYPE_UINT | CTLFLAG_RD, rxr, 0, > + CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, rxr, = 0, > ixgbe_sysctl_rdt_handler, "IU", "Receive Descriptor = Tail"); > SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, = "rx_packets", > CTLFLAG_RD, &rxr->rx_packets, "Queue Packets = Received"); > @@ -1595,7 +1597,7 @@ ixgbe_add_hw_stats(struct adapter *adapter) > /* MAC stats get their own sub node */ >=20 > stat_node =3D SYSCTL_ADD_NODE(ctx, child, OID_AUTO, "mac_stats", > - CTLFLAG_RD, NULL, "MAC Statistics"); > + CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "MAC Statistics"); > stat_list =3D SYSCTL_CHILDREN(stat_node); >=20 > SYSCTL_ADD_UQUAD(ctx, stat_list, OID_AUTO, "crc_errs", > @@ -2528,37 +2530,42 @@ ixgbe_add_device_sysctls(if_ctx_t ctx) >=20 > /* Sysctls for all devices */ > SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "fc", > - CTLTYPE_INT | CTLFLAG_RW, adapter, 0, ixgbe_sysctl_flowcntl, = "I", > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, > + adapter, 0, ixgbe_sysctl_flowcntl, "I", > IXGBE_SYSCTL_DESC_SET_FC); >=20 > SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "advertise_speed", > - CTLTYPE_INT | CTLFLAG_RW, adapter, 0, = ixgbe_sysctl_advertise, "I", > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, > + adapter, 0, ixgbe_sysctl_advertise, "I", > IXGBE_SYSCTL_DESC_ADV_SPEED); >=20 > #ifdef IXGBE_DEBUG > /* testing sysctls (for all devices) */ > SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "power_state", > - CTLTYPE_INT | CTLFLAG_RW, adapter, 0, = ixgbe_sysctl_power_state, > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, > + adapter, 0, ixgbe_sysctl_power_state, > "I", "PCI Power State"); >=20 > SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "print_rss_config", > - CTLTYPE_STRING | CTLFLAG_RD, adapter, 0, > + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, adapter, 0, > ixgbe_sysctl_print_rss_config, "A", "Prints RSS = Configuration"); > #endif > /* for X550 series devices */ > if (hw->mac.type >=3D ixgbe_mac_X550) > SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "dmac", > - CTLTYPE_U16 | CTLFLAG_RW, adapter, 0, = ixgbe_sysctl_dmac, > + CTLTYPE_U16 | CTLFLAG_RW | CTLFLAG_NEEDGIANT, > + adapter, 0, ixgbe_sysctl_dmac, > "I", "DMA Coalesce"); >=20 > /* for WoL-capable devices */ > if (hw->device_id =3D=3D IXGBE_DEV_ID_X550EM_X_10G_T) { > SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "wol_enable", > - CTLTYPE_INT | CTLFLAG_RW, adapter, 0, > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, = adapter, 0, > ixgbe_sysctl_wol_enable, "I", "Enable/Disable Wake = on LAN"); >=20 > SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "wufc", > - CTLTYPE_U32 | CTLFLAG_RW, adapter, 0, = ixgbe_sysctl_wufc, > + CTLTYPE_U32 | CTLFLAG_RW | CTLFLAG_NEEDGIANT, > + adapter, 0, ixgbe_sysctl_wufc, > "I", "Enable/Disable Wake Up Filters"); > } >=20 > @@ -2568,22 +2575,24 @@ ixgbe_add_device_sysctls(if_ctx_t ctx) > struct sysctl_oid_list *phy_list; >=20 > phy_node =3D SYSCTL_ADD_NODE(ctx_list, child, OID_AUTO, = "phy", > - CTLFLAG_RD, NULL, "External PHY sysctls"); > + CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "External PHY = sysctls"); > phy_list =3D SYSCTL_CHILDREN(phy_node); >=20 > SYSCTL_ADD_PROC(ctx_list, phy_list, OID_AUTO, "temp", > - CTLTYPE_U16 | CTLFLAG_RD, adapter, 0, = ixgbe_sysctl_phy_temp, > + CTLTYPE_U16 | CTLFLAG_RD | CTLFLAG_NEEDGIANT, > + adapter, 0, ixgbe_sysctl_phy_temp, > "I", "Current External PHY Temperature (Celsius)"); >=20 > SYSCTL_ADD_PROC(ctx_list, phy_list, OID_AUTO, > - "overtemp_occurred", CTLTYPE_U16 | CTLFLAG_RD, = adapter, 0, > + "overtemp_occurred", > + CTLTYPE_U16 | CTLFLAG_RD | CTLFLAG_NEEDGIANT, = adapter, 0, > ixgbe_sysctl_phy_overtemp_occurred, "I", > "External PHY High Temperature Event Occurred"); > } >=20 > if (adapter->feat_cap & IXGBE_FEATURE_EEE) { > SYSCTL_ADD_PROC(ctx_list, child, OID_AUTO, "eee_state", > - CTLTYPE_INT | CTLFLAG_RW, adapter, 0, > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, = adapter, 0, > ixgbe_sysctl_eee_state, "I", "EEE Power Save = State"); > } > } /* ixgbe_add_device_sysctls */ >=20 > Modified: head/sys/dev/ixgbe/if_ixv.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/dev/ixgbe/if_ixv.c Mon Feb 24 10:47:18 2020 = (r358285) > +++ head/sys/dev/ixgbe/if_ixv.c Mon Feb 24 10:51:26 2020 = (r358286) > @@ -418,8 +418,8 @@ ixv_if_attach_pre(if_ctx_t ctx) > /* SYSCTL APIs */ > SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), > SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO, = "debug", > - CTLTYPE_INT | CTLFLAG_RW, adapter, 0, ixv_sysctl_debug, "I", > - "Debug Info"); > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, > + adapter, 0, ixv_sysctl_debug, "I", "Debug Info"); >=20 > /* Determine hardware revision */ > ixv_identify_hardware(ctx); > @@ -1803,7 +1803,7 @@ ixv_add_stats_sysctls(struct adapter *adapter) > struct tx_ring *txr =3D &tx_que->txr; > snprintf(namebuf, QUEUE_NAME_LEN, "queue%d", i); > queue_node =3D SYSCTL_ADD_NODE(ctx, child, OID_AUTO, = namebuf, > - CTLFLAG_RD, NULL, "Queue Name"); > + CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "Queue Name"); > queue_list =3D SYSCTL_CHILDREN(queue_node); >=20 > SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "tso_tx", > @@ -1816,7 +1816,7 @@ ixv_add_stats_sysctls(struct adapter *adapter) > struct rx_ring *rxr =3D &rx_que->rxr; > snprintf(namebuf, QUEUE_NAME_LEN, "queue%d", i); > queue_node =3D SYSCTL_ADD_NODE(ctx, child, OID_AUTO, = namebuf, > - CTLFLAG_RD, NULL, "Queue Name"); > + CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "Queue Name"); > queue_list =3D SYSCTL_CHILDREN(queue_node); >=20 > SYSCTL_ADD_UQUAD(ctx, queue_list, OID_AUTO, "irqs", > @@ -1830,7 +1830,8 @@ ixv_add_stats_sysctls(struct adapter *adapter) > } >=20 > stat_node =3D SYSCTL_ADD_NODE(ctx, child, OID_AUTO, "mac", > - CTLFLAG_RD, NULL, "VF Statistics (read from HW registers)"); > + CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, > + "VF Statistics (read from HW registers)"); > stat_list =3D SYSCTL_CHILDREN(stat_node); >=20 > SYSCTL_ADD_UQUAD(ctx, stat_list, OID_AUTO, "good_pkts_rcvd", >=20 > Modified: head/sys/dev/ixl/if_iavf.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/dev/ixl/if_iavf.c Mon Feb 24 10:47:18 2020 = (r358285) > +++ head/sys/dev/ixl/if_iavf.c Mon Feb 24 10:51:26 2020 = (r358286) > @@ -201,7 +201,7 @@ static driver_t iavf_if_driver =3D { > ** TUNEABLE PARAMETERS: > */ >=20 > -static SYSCTL_NODE(_hw, OID_AUTO, iavf, CTLFLAG_RD, 0, > +static SYSCTL_NODE(_hw, OID_AUTO, iavf, CTLFLAG_RD | CTLFLAG_MPSAFE, = 0, > "iavf driver parameters"); >=20 > /* > @@ -2049,23 +2049,27 @@ iavf_add_device_sysctls(struct iavf_sc *sc) > struct sysctl_oid_list *debug_list; >=20 > SYSCTL_ADD_PROC(ctx, ctx_list, > - OID_AUTO, "current_speed", CTLTYPE_STRING | CTLFLAG_RD, > + OID_AUTO, "current_speed", > + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, > sc, 0, iavf_sysctl_current_speed, "A", "Current Port = Speed"); >=20 > SYSCTL_ADD_PROC(ctx, ctx_list, > - OID_AUTO, "tx_itr", CTLTYPE_INT | CTLFLAG_RW, > + OID_AUTO, "tx_itr", > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, > sc, 0, iavf_sysctl_tx_itr, "I", > "Immediately set TX ITR value for all queues"); >=20 > SYSCTL_ADD_PROC(ctx, ctx_list, > - OID_AUTO, "rx_itr", CTLTYPE_INT | CTLFLAG_RW, > + OID_AUTO, "rx_itr", > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, > sc, 0, iavf_sysctl_rx_itr, "I", > "Immediately set RX ITR value for all queues"); >=20 > /* Add sysctls meant to print debug information, but don't list = them > * in "sysctl -a" output. */ > debug_node =3D SYSCTL_ADD_NODE(ctx, ctx_list, > - OID_AUTO, "debug", CTLFLAG_RD | CTLFLAG_SKIP, NULL, "Debug = Sysctls"); > + OID_AUTO, "debug", CTLFLAG_RD | CTLFLAG_SKIP | = CTLFLAG_NEEDGIANT, > + NULL, "Debug Sysctls"); > debug_list =3D SYSCTL_CHILDREN(debug_node); >=20 > SYSCTL_ADD_UINT(ctx, debug_list, > @@ -2077,19 +2081,23 @@ iavf_add_device_sysctls(struct iavf_sc *sc) > &sc->dbg_mask, 0, "Non-shared code debug message level"); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "filter_list", CTLTYPE_STRING | CTLFLAG_RD, > + OID_AUTO, "filter_list", > + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, > sc, 0, iavf_sysctl_sw_filter_list, "A", "SW Filter List"); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "queue_interrupt_table", CTLTYPE_STRING | = CTLFLAG_RD, > + OID_AUTO, "queue_interrupt_table", > + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, > sc, 0, iavf_sysctl_queue_interrupt_table, "A", "View MSI-X = indices for TX/RX queues"); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "do_vf_reset", CTLTYPE_INT | CTLFLAG_WR, > + OID_AUTO, "do_vf_reset", > + CTLTYPE_INT | CTLFLAG_WR | CTLFLAG_NEEDGIANT, > sc, 0, iavf_sysctl_vf_reset, "A", "Request a VF reset from = PF"); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "do_vflr_reset", CTLTYPE_INT | CTLFLAG_WR, > + OID_AUTO, "do_vflr_reset", > + CTLTYPE_INT | CTLFLAG_WR | CTLFLAG_NEEDGIANT, > sc, 0, iavf_sysctl_vflr_reset, "A", "Request a VFLR reset = from HW"); >=20 > /* Add stats sysctls */ >=20 > Modified: head/sys/dev/ixl/if_ixl.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/dev/ixl/if_ixl.c Mon Feb 24 10:47:18 2020 = (r358285) > +++ head/sys/dev/ixl/if_ixl.c Mon Feb 24 10:51:26 2020 = (r358286) > @@ -206,7 +206,7 @@ static driver_t ixl_if_driver =3D { > ** TUNEABLE PARAMETERS: > */ >=20 > -static SYSCTL_NODE(_hw, OID_AUTO, ixl, CTLFLAG_RD, 0, > +static SYSCTL_NODE(_hw, OID_AUTO, ixl, CTLFLAG_RD | CTLFLAG_MPSAFE, = 0, > "ixl driver parameters"); >=20 > /* >=20 > Modified: head/sys/dev/ixl/ixl_pf_main.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/dev/ixl/ixl_pf_main.c Mon Feb 24 10:47:18 2020 = (r358285) > +++ head/sys/dev/ixl/ixl_pf_main.c Mon Feb 24 10:51:26 2020 = (r358286) > @@ -1632,8 +1632,8 @@ ixl_add_sysctls_mac_stats(struct sysctl_ctx_list = *ctx, > struct sysctl_oid_list *child, > struct i40e_hw_port_stats *stats) > { > - struct sysctl_oid *stat_node =3D SYSCTL_ADD_NODE(ctx, child, = OID_AUTO, "mac", > - CTLFLAG_RD, NULL, "Mac Statistics"); > + struct sysctl_oid *stat_node =3D SYSCTL_ADD_NODE(ctx, child, = OID_AUTO, > + "mac", CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "Mac Statistics"); > struct sysctl_oid_list *stat_list =3D = SYSCTL_CHILDREN(stat_node); >=20 > struct i40e_eth_stats *eth_stats =3D &stats->eth; > @@ -3121,38 +3121,45 @@ ixl_add_device_sysctls(struct ixl_pf *pf) >=20 > /* Set up sysctls */ > SYSCTL_ADD_PROC(ctx, ctx_list, > - OID_AUTO, "fc", CTLTYPE_INT | CTLFLAG_RW, > + OID_AUTO, "fc", CTLTYPE_INT | CTLFLAG_RW | = CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_set_flowcntl, "I", IXL_SYSCTL_HELP_FC); >=20 > SYSCTL_ADD_PROC(ctx, ctx_list, > - OID_AUTO, "advertise_speed", CTLTYPE_INT | CTLFLAG_RW, > - pf, 0, ixl_sysctl_set_advertise, "I", = IXL_SYSCTL_HELP_SET_ADVERTISE); > + OID_AUTO, "advertise_speed", > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, pf, 0, > + ixl_sysctl_set_advertise, "I", = IXL_SYSCTL_HELP_SET_ADVERTISE); >=20 > SYSCTL_ADD_PROC(ctx, ctx_list, > - OID_AUTO, "supported_speeds", CTLTYPE_INT | CTLFLAG_RD, > - pf, 0, ixl_sysctl_supported_speeds, "I", = IXL_SYSCTL_HELP_SUPPORTED_SPEED); > + OID_AUTO, "supported_speeds", > + CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, pf, 0, > + ixl_sysctl_supported_speeds, "I", = IXL_SYSCTL_HELP_SUPPORTED_SPEED); >=20 > SYSCTL_ADD_PROC(ctx, ctx_list, > - OID_AUTO, "current_speed", CTLTYPE_STRING | CTLFLAG_RD, > - pf, 0, ixl_sysctl_current_speed, "A", "Current Port Speed"); > + OID_AUTO, "current_speed", > + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, pf, 0, > + ixl_sysctl_current_speed, "A", "Current Port Speed"); >=20 > SYSCTL_ADD_PROC(ctx, ctx_list, > - OID_AUTO, "fw_version", CTLTYPE_STRING | CTLFLAG_RD, > - pf, 0, ixl_sysctl_show_fw, "A", "Firmware version"); > + OID_AUTO, "fw_version", > + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, pf, 0, > + ixl_sysctl_show_fw, "A", "Firmware version"); >=20 > SYSCTL_ADD_PROC(ctx, ctx_list, > - OID_AUTO, "unallocated_queues", CTLTYPE_INT | CTLFLAG_RD, > - pf, 0, ixl_sysctl_unallocated_queues, "I", > + OID_AUTO, "unallocated_queues", > + CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, pf, 0, > + ixl_sysctl_unallocated_queues, "I", > "Queues not allocated to a PF or VF"); >=20 > SYSCTL_ADD_PROC(ctx, ctx_list, > - OID_AUTO, "tx_itr", CTLTYPE_INT | CTLFLAG_RW, > - pf, 0, ixl_sysctl_pf_tx_itr, "I", > + OID_AUTO, "tx_itr", > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, pf, 0, > + ixl_sysctl_pf_tx_itr, "I", > "Immediately set TX ITR value for all queues"); >=20 > SYSCTL_ADD_PROC(ctx, ctx_list, > - OID_AUTO, "rx_itr", CTLTYPE_INT | CTLFLAG_RW, > - pf, 0, ixl_sysctl_pf_rx_itr, "I", > + OID_AUTO, "rx_itr", > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, pf, 0, > + ixl_sysctl_pf_rx_itr, "I", > "Immediately set RX ITR value for all queues"); >=20 > SYSCTL_ADD_INT(ctx, ctx_list, > @@ -3166,38 +3173,48 @@ ixl_add_device_sysctls(struct ixl_pf *pf) > /* Add FEC sysctls for 25G adapters */ > if (i40e_is_25G_device(hw->device_id)) { > fec_node =3D SYSCTL_ADD_NODE(ctx, ctx_list, > - OID_AUTO, "fec", CTLFLAG_RD, NULL, "FEC Sysctls"); > + OID_AUTO, "fec", CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, > + "FEC Sysctls"); > fec_list =3D SYSCTL_CHILDREN(fec_node); >=20 > SYSCTL_ADD_PROC(ctx, fec_list, > - OID_AUTO, "fc_ability", CTLTYPE_INT | CTLFLAG_RW, > - pf, 0, ixl_sysctl_fec_fc_ability, "I", "FC FEC = ability enabled"); > + OID_AUTO, "fc_ability", > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, pf, 0, > + ixl_sysctl_fec_fc_ability, "I", "FC FEC ability = enabled"); >=20 > SYSCTL_ADD_PROC(ctx, fec_list, > - OID_AUTO, "rs_ability", CTLTYPE_INT | CTLFLAG_RW, > - pf, 0, ixl_sysctl_fec_rs_ability, "I", "RS FEC = ability enabled"); > + OID_AUTO, "rs_ability", > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, pf, 0, > + ixl_sysctl_fec_rs_ability, "I", "RS FEC ability = enabled"); >=20 > SYSCTL_ADD_PROC(ctx, fec_list, > - OID_AUTO, "fc_requested", CTLTYPE_INT | CTLFLAG_RW, > - pf, 0, ixl_sysctl_fec_fc_request, "I", "FC FEC mode = requested on link"); > + OID_AUTO, "fc_requested", > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, pf, 0, > + ixl_sysctl_fec_fc_request, "I", > + "FC FEC mode requested on link"); >=20 > SYSCTL_ADD_PROC(ctx, fec_list, > - OID_AUTO, "rs_requested", CTLTYPE_INT | CTLFLAG_RW, > - pf, 0, ixl_sysctl_fec_rs_request, "I", "RS FEC mode = requested on link"); > + OID_AUTO, "rs_requested", > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, pf, 0, > + ixl_sysctl_fec_rs_request, "I", > + "RS FEC mode requested on link"); >=20 > SYSCTL_ADD_PROC(ctx, fec_list, > - OID_AUTO, "auto_fec_enabled", CTLTYPE_INT | = CTLFLAG_RW, > - pf, 0, ixl_sysctl_fec_auto_enable, "I", "Let FW = decide FEC ability/request modes"); > + OID_AUTO, "auto_fec_enabled", > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, pf, 0, > + ixl_sysctl_fec_auto_enable, "I", > + "Let FW decide FEC ability/request modes"); > } >=20 > SYSCTL_ADD_PROC(ctx, ctx_list, > - OID_AUTO, "fw_lldp", CTLTYPE_INT | CTLFLAG_RW, > + OID_AUTO, "fw_lldp", CTLTYPE_INT | CTLFLAG_RW | = CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_fw_lldp, "I", IXL_SYSCTL_HELP_FW_LLDP); >=20 > /* Add sysctls meant to print debug information, but don't list = them > * in "sysctl -a" output. */ > debug_node =3D SYSCTL_ADD_NODE(ctx, ctx_list, > - OID_AUTO, "debug", CTLFLAG_RD | CTLFLAG_SKIP, NULL, "Debug = Sysctls"); > + OID_AUTO, "debug", CTLFLAG_RD | CTLFLAG_SKIP | = CTLFLAG_MPSAFE, NULL, > + "Debug Sysctls"); > debug_list =3D SYSCTL_CHILDREN(debug_node); >=20 > SYSCTL_ADD_UINT(ctx, debug_list, > @@ -3209,77 +3226,95 @@ ixl_add_device_sysctls(struct ixl_pf *pf) > &pf->dbg_mask, 0, "Non-shared code debug message level"); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "link_status", CTLTYPE_STRING | CTLFLAG_RD, > + OID_AUTO, "link_status", > + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_link_status, "A", = IXL_SYSCTL_HELP_LINK_STATUS); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "phy_abilities", CTLTYPE_STRING | CTLFLAG_RD, > + OID_AUTO, "phy_abilities", > + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_phy_abilities, "A", "PHY Abilities"); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "filter_list", CTLTYPE_STRING | CTLFLAG_RD, > + OID_AUTO, "filter_list", > + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_sw_filter_list, "A", "SW Filter List"); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "hw_res_alloc", CTLTYPE_STRING | CTLFLAG_RD, > + OID_AUTO, "hw_res_alloc", > + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_hw_res_alloc, "A", "HW Resource = Allocation"); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "switch_config", CTLTYPE_STRING | CTLFLAG_RD, > + OID_AUTO, "switch_config", > + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_switch_config, "A", "HW Switch = Configuration"); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "rss_key", CTLTYPE_STRING | CTLFLAG_RD, > + OID_AUTO, "rss_key", > + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_hkey, "A", "View RSS key"); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "rss_lut", CTLTYPE_STRING | CTLFLAG_RD, > + OID_AUTO, "rss_lut", > + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_hlut, "A", "View RSS lookup table"); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "rss_hena", CTLTYPE_ULONG | CTLFLAG_RD, > + OID_AUTO, "rss_hena", > + CTLTYPE_ULONG | CTLFLAG_RD | CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_hena, "LU", "View enabled packet types for = RSS"); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "disable_fw_link_management", CTLTYPE_INT | = CTLFLAG_WR, > + OID_AUTO, "disable_fw_link_management", > + CTLTYPE_INT | CTLFLAG_WR | CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_fw_link_management, "I", "Disable FW Link = Management"); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "dump_debug_data", CTLTYPE_STRING | CTLFLAG_RD, > + OID_AUTO, "dump_debug_data", > + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_dump_debug_data, "A", "Dump Debug Data = from FW"); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "do_pf_reset", CTLTYPE_INT | CTLFLAG_WR, > + OID_AUTO, "do_pf_reset", > + CTLTYPE_INT | CTLFLAG_WR | CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_do_pf_reset, "I", "Tell HW to initiate a = PF reset"); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "do_core_reset", CTLTYPE_INT | CTLFLAG_WR, > + OID_AUTO, "do_core_reset", > + CTLTYPE_INT | CTLFLAG_WR | CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_do_core_reset, "I", "Tell HW to initiate a = CORE reset"); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "do_global_reset", CTLTYPE_INT | CTLFLAG_WR, > + OID_AUTO, "do_global_reset", > + CTLTYPE_INT | CTLFLAG_WR | CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_do_global_reset, "I", "Tell HW to initiate = a GLOBAL reset"); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "do_emp_reset", CTLTYPE_INT | CTLFLAG_WR, > + OID_AUTO, "do_emp_reset", > + CTLTYPE_INT | CTLFLAG_WR | CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_do_emp_reset, "I", > "(This doesn't work) Tell HW to initiate a EMP (entire = firmware) reset"); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "queue_interrupt_table", CTLTYPE_STRING | = CTLFLAG_RD, > + OID_AUTO, "queue_interrupt_table", > + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_queue_interrupt_table, "A", "View MSI-X = indices for TX/RX queues"); >=20 > if (pf->has_i2c) { > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "read_i2c_byte", CTLTYPE_INT | CTLFLAG_RW, > + OID_AUTO, "read_i2c_byte", > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_read_i2c_byte, "I", = IXL_SYSCTL_HELP_READ_I2C); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "write_i2c_byte", CTLTYPE_INT | = CTLFLAG_RW, > + OID_AUTO, "write_i2c_byte", > + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_write_i2c_byte, "I", = IXL_SYSCTL_HELP_WRITE_I2C); >=20 > SYSCTL_ADD_PROC(ctx, debug_list, > - OID_AUTO, "read_i2c_diag_data", CTLTYPE_STRING | = CTLFLAG_RD, > + OID_AUTO, "read_i2c_diag_data", > + CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, > pf, 0, ixl_sysctl_read_i2c_diag_data, "A", "Dump = selected diagnostic data from FW"); > } > } >=20 > Modified: head/sys/dev/ixl/ixl_txrx.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/dev/ixl/ixl_txrx.c Mon Feb 24 10:47:18 2020 = (r358285) > +++ head/sys/dev/ixl/ixl_txrx.c Mon Feb 24 10:51:26 2020 = (r358286) > @@ -850,7 +850,7 @@ ixl_add_vsi_sysctls(device_t dev, struct ixl_vsi = *vsi, > tree =3D device_get_sysctl_tree(dev); > child =3D SYSCTL_CHILDREN(tree); > vsi->vsi_node =3D SYSCTL_ADD_NODE(ctx, child, OID_AUTO, = sysctl_name, > - CTLFLAG_RD, NULL, "VSI Number"); > + CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, "VSI Number"); > vsi_list =3D SYSCTL_CHILDREN(vsi->vsi_node); >=20 > ixl_add_sysctls_eth_stats(ctx, vsi_list, &vsi->eth_stats); > @@ -911,7 +911,8 @@ ixl_add_queues_sysctls(device_t dev, struct = ixl_vsi *v > bzero(queue_namebuf, sizeof(queue_namebuf)); > snprintf(queue_namebuf, QUEUE_NAME_LEN, "rxq%02d", q); > queue_node =3D SYSCTL_ADD_NODE(ctx, vsi_list, > - OID_AUTO, queue_namebuf, CTLFLAG_RD, NULL, "RX Queue = #"); > + OID_AUTO, queue_namebuf, CTLFLAG_RD | = CTLFLAG_MPSAFE, > + NULL, "RX Queue #"); > queue_list =3D SYSCTL_CHILDREN(queue_node); >=20 > rx_que =3D &(vsi->rx_queues[q]); > @@ -938,7 +939,8 @@ ixl_add_queues_sysctls(device_t dev, struct = ixl_vsi *v > bzero(queue_namebuf, sizeof(queue_namebuf)); > snprintf(queue_namebuf, QUEUE_NAME_LEN, "txq%02d", q); > queue_node =3D SYSCTL_ADD_NODE(ctx, vsi_list, > - OID_AUTO, queue_namebuf, CTLFLAG_RD, NULL, "TX Queue = #"); > + OID_AUTO, queue_namebuf, CTLFLAG_RD | = CTLFLAG_MPSAFE, > + NULL, "TX Queue #"); > queue_list =3D SYSCTL_CHILDREN(queue_node); >=20 > tx_que =3D &(vsi->tx_queues[q]);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?C2E42B36-B50F-44E9-83B0-94D255FA64A2>