Print this page
8368 remove warlock leftovers from usr/src/uts
@@ -617,369 +617,10 @@
fmt, ap);
cmn_err(CE_NOTE, "!%s", ibd_print_buf);
va_end(ap);
}
-/*
- * Warlock directives
- */
-
-/*
- * id_lso_lock
- *
- * state->id_lso->bkt_nfree may be accessed without a lock to
- * determine the threshold at which we have to ask the nw layer
- * to resume transmission (see ibd_resume_transmission()).
- */
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_lso_lock,
- ibd_state_t::id_lso))
-_NOTE(DATA_READABLE_WITHOUT_LOCK(ibd_state_t::id_lso))
-_NOTE(SCHEME_PROTECTS_DATA("init", ibd_state_t::id_lso_policy))
-_NOTE(DATA_READABLE_WITHOUT_LOCK(ibd_lsobkt_t::bkt_nfree))
-
-/*
- * id_scq_poll_lock
- */
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_scq_poll_lock,
- ibd_state_t::id_scq_poll_busy))
-
-/*
- * id_txpost_lock
- */
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_txpost_lock,
- ibd_state_t::id_tx_head))
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_txpost_lock,
- ibd_state_t::id_tx_busy))
-
-/*
- * id_acache_req_lock
- */
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_acache_req_lock,
- ibd_state_t::id_acache_req_cv))
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_acache_req_lock,
- ibd_state_t::id_req_list))
-_NOTE(SCHEME_PROTECTS_DATA("atomic",
- ibd_acache_s::ac_ref))
-
-/*
- * id_ac_mutex
- *
- * This mutex is actually supposed to protect id_ah_op as well,
- * but this path of the code isn't clean (see update of id_ah_op
- * in ibd_async_acache(), immediately after the call to
- * ibd_async_mcache()). For now, we'll skip this check by
- * declaring that id_ah_op is protected by some internal scheme
- * that warlock isn't aware of.
- */
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_ac_mutex,
- ibd_state_t::id_ah_active))
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_ac_mutex,
- ibd_state_t::id_ah_free))
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_ac_mutex,
- ibd_state_t::id_ah_addr))
-_NOTE(SCHEME_PROTECTS_DATA("ac mutex should protect this",
- ibd_state_t::id_ah_op))
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_ac_mutex,
- ibd_state_t::id_ah_error))
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_ac_mutex,
- ibd_state_t::id_ac_hot_ace))
-_NOTE(DATA_READABLE_WITHOUT_LOCK(ibd_state_t::id_ah_error))
-
-/*
- * id_mc_mutex
- */
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_mc_mutex,
- ibd_state_t::id_mc_full))
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_mc_mutex,
- ibd_state_t::id_mc_non))
-
-/*
- * id_trap_lock
- */
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_trap_lock,
- ibd_state_t::id_trap_cv))
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_trap_lock,
- ibd_state_t::id_trap_stop))
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_trap_lock,
- ibd_state_t::id_trap_inprog))
-
-/*
- * id_prom_op
- */
-_NOTE(SCHEME_PROTECTS_DATA("only by async thread",
- ibd_state_t::id_prom_op))
-
-/*
- * id_sched_lock
- */
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_sched_lock,
- ibd_state_t::id_sched_needed))
-
-/*
- * id_link_mutex
- */
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_link_mutex,
- ibd_state_t::id_link_state))
-_NOTE(DATA_READABLE_WITHOUT_LOCK(ibd_state_t::id_link_state))
-_NOTE(SCHEME_PROTECTS_DATA("only async thr and ibd_m_start",
- ibd_state_t::id_link_speed))
-_NOTE(DATA_READABLE_WITHOUT_LOCK(ibd_state_t::id_sgid))
-
-/*
- * id_tx_list.dl_mutex
- */
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_tx_list.dl_mutex,
- ibd_state_t::id_tx_list.dl_head))
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_tx_list.dl_mutex,
- ibd_state_t::id_tx_list.dl_pending_sends))
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::id_tx_list.dl_mutex,
- ibd_state_t::id_tx_list.dl_cnt))
-
-/*
- * id_rx_list.dl_mutex
- */
-_NOTE(SCHEME_PROTECTS_DATA("atomic or dl mutex or single thr",
- ibd_state_t::id_rx_list.dl_bufs_outstanding))
-_NOTE(SCHEME_PROTECTS_DATA("atomic or dl mutex or single thr",
- ibd_state_t::id_rx_list.dl_cnt))
-
-/*
- * rc_timeout_lock
- */
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::rc_timeout_lock,
- ibd_state_t::rc_timeout_start))
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_t::rc_timeout_lock,
- ibd_state_t::rc_timeout))
-
-
-/*
- * Items protected by atomic updates
- */
-_NOTE(SCHEME_PROTECTS_DATA("atomic update only",
- ibd_state_s::id_brd_rcv
- ibd_state_s::id_brd_xmt
- ibd_state_s::id_multi_rcv
- ibd_state_s::id_multi_xmt
- ibd_state_s::id_num_intrs
- ibd_state_s::id_rcv_bytes
- ibd_state_s::id_rcv_pkt
- ibd_state_s::id_rx_post_queue_index
- ibd_state_s::id_tx_short
- ibd_state_s::id_xmt_bytes
- ibd_state_s::id_xmt_pkt
- ibd_state_s::rc_rcv_trans_byte
- ibd_state_s::rc_rcv_trans_pkt
- ibd_state_s::rc_rcv_copy_byte
- ibd_state_s::rc_rcv_copy_pkt
- ibd_state_s::rc_xmt_bytes
- ibd_state_s::rc_xmt_small_pkt
- ibd_state_s::rc_xmt_fragmented_pkt
- ibd_state_s::rc_xmt_map_fail_pkt
- ibd_state_s::rc_xmt_map_succ_pkt
- ibd_rc_chan_s::rcq_invoking))
-
-/*
- * Non-mutex protection schemes for data elements. Almost all of
- * these are non-shared items.
- */
-_NOTE(SCHEME_PROTECTS_DATA("unshared or single-threaded",
- callb_cpr
- ib_gid_s
- ib_header_info
- ibd_acache_rq
- ibd_acache_s::ac_mce
- ibd_acache_s::ac_chan
- ibd_mcache::mc_fullreap
- ibd_mcache::mc_jstate
- ibd_mcache::mc_req
- ibd_rwqe_s
- ibd_swqe_s
- ibd_wqe_s
- ibt_wr_ds_s::ds_va
- ibt_wr_lso_s
- ipoib_mac::ipoib_qpn
- mac_capab_lso_s
- msgb::b_next
- msgb::b_cont
- msgb::b_rptr
- msgb::b_wptr
- ibd_state_s::id_bgroup_created
- ibd_state_s::id_mac_state
- ibd_state_s::id_mtu
- ibd_state_s::id_ud_num_rwqe
- ibd_state_s::id_ud_num_swqe
- ibd_state_s::id_qpnum
- ibd_state_s::id_rcq_hdl
- ibd_state_s::id_rx_buf_sz
- ibd_state_s::id_rx_bufs
- ibd_state_s::id_rx_mr_hdl
- ibd_state_s::id_rx_wqes
- ibd_state_s::id_rxwcs
- ibd_state_s::id_rxwcs_size
- ibd_state_s::id_rx_nqueues
- ibd_state_s::id_rx_queues
- ibd_state_s::id_scope
- ibd_state_s::id_scq_hdl
- ibd_state_s::id_tx_buf_sz
- ibd_state_s::id_tx_bufs
- ibd_state_s::id_tx_mr_hdl
- ibd_state_s::id_tx_rel_list.dl_cnt
- ibd_state_s::id_tx_wqes
- ibd_state_s::id_txwcs
- ibd_state_s::id_txwcs_size
- ibd_state_s::rc_listen_hdl
- ibd_state_s::rc_listen_hdl_OFED_interop
- ibd_state_s::rc_srq_size
- ibd_state_s::rc_srq_rwqes
- ibd_state_s::rc_srq_rx_bufs
- ibd_state_s::rc_srq_rx_mr_hdl
- ibd_state_s::rc_tx_largebuf_desc_base
- ibd_state_s::rc_tx_mr_bufs
- ibd_state_s::rc_tx_mr_hdl
- ipha_s
- icmph_s
- ibt_path_info_s::pi_sid
- ibd_rc_chan_s::ace
- ibd_rc_chan_s::chan_hdl
- ibd_rc_chan_s::state
- ibd_rc_chan_s::chan_state
- ibd_rc_chan_s::is_tx_chan
- ibd_rc_chan_s::rcq_hdl
- ibd_rc_chan_s::rcq_size
- ibd_rc_chan_s::scq_hdl
- ibd_rc_chan_s::scq_size
- ibd_rc_chan_s::rx_bufs
- ibd_rc_chan_s::rx_mr_hdl
- ibd_rc_chan_s::rx_rwqes
- ibd_rc_chan_s::tx_wqes
- ibd_rc_chan_s::tx_mr_bufs
- ibd_rc_chan_s::tx_mr_hdl
- ibd_rc_chan_s::tx_rel_list.dl_cnt
- ibd_rc_chan_s::is_used
- ibd_rc_tx_largebuf_s::lb_buf
- ibd_rc_msg_hello_s
- ibt_cm_return_args_s))
-
-/*
- * ibd_rc_chan_s::next is protected by two mutexes:
- * 1) ibd_state_s::rc_pass_chan_list.chan_list_mutex
- * 2) ibd_state_s::rc_obs_act_chan_list.chan_list_mutex.
- */
-_NOTE(SCHEME_PROTECTS_DATA("protected by two mutexes",
- ibd_rc_chan_s::next))
-
-/*
- * ibd_state_s.rc_tx_large_bufs_lock
- */
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_s::rc_tx_large_bufs_lock,
- ibd_state_s::rc_tx_largebuf_free_head))
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_s::rc_tx_large_bufs_lock,
- ibd_state_s::rc_tx_largebuf_nfree))
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_s::rc_tx_large_bufs_lock,
- ibd_rc_tx_largebuf_s::lb_next))
-
-/*
- * ibd_acache_s.tx_too_big_mutex
- */
-_NOTE(MUTEX_PROTECTS_DATA(ibd_acache_s::tx_too_big_mutex,
- ibd_acache_s::tx_too_big_ongoing))
-
-/*
- * tx_wqe_list.dl_mutex
- */
-_NOTE(MUTEX_PROTECTS_DATA(ibd_rc_chan_s::tx_wqe_list.dl_mutex,
- ibd_rc_chan_s::tx_wqe_list.dl_head))
-_NOTE(MUTEX_PROTECTS_DATA(ibd_rc_chan_s::tx_wqe_list.dl_mutex,
- ibd_rc_chan_s::tx_wqe_list.dl_pending_sends))
-_NOTE(MUTEX_PROTECTS_DATA(ibd_rc_chan_s::tx_wqe_list.dl_mutex,
- ibd_rc_chan_s::tx_wqe_list.dl_cnt))
-
-/*
- * ibd_state_s.rc_ace_recycle_lock
- */
-_NOTE(MUTEX_PROTECTS_DATA(ibd_state_s::rc_ace_recycle_lock,
- ibd_state_s::rc_ace_recycle))
-
-/*
- * rc_srq_rwqe_list.dl_mutex
- */
-_NOTE(SCHEME_PROTECTS_DATA("atomic or dl mutex or single thr",
- ibd_state_t::rc_srq_rwqe_list.dl_bufs_outstanding))
-_NOTE(SCHEME_PROTECTS_DATA("atomic or dl mutex or single thr",
- ibd_state_t::rc_srq_rwqe_list.dl_cnt))
-
-/*
- * Non-mutex protection schemes for data elements. They are counters
- * for problem diagnosis. Don't need be protected.
- */
-_NOTE(SCHEME_PROTECTS_DATA("counters for problem diagnosis",
- ibd_state_s::rc_rcv_alloc_fail
- ibd_state_s::rc_rcq_err
- ibd_state_s::rc_ace_not_found
- ibd_state_s::rc_xmt_drop_too_long_pkt
- ibd_state_s::rc_xmt_icmp_too_long_pkt
- ibd_state_s::rc_xmt_reenter_too_long_pkt
- ibd_state_s::rc_swqe_short
- ibd_state_s::rc_swqe_mac_update
- ibd_state_s::rc_xmt_buf_short
- ibd_state_s::rc_xmt_buf_mac_update
- ibd_state_s::rc_scq_no_swqe
- ibd_state_s::rc_scq_no_largebuf
- ibd_state_s::rc_conn_succ
- ibd_state_s::rc_conn_fail
- ibd_state_s::rc_null_conn
- ibd_state_s::rc_no_estab_conn
- ibd_state_s::rc_act_close
- ibd_state_s::rc_pas_close
- ibd_state_s::rc_delay_ace_recycle
- ibd_state_s::rc_act_close_simultaneous
- ibd_state_s::rc_act_close_not_clean
- ibd_state_s::rc_pas_close_rcq_invoking
- ibd_state_s::rc_reset_cnt
- ibd_state_s::rc_timeout_act
- ibd_state_s::rc_timeout_pas
- ibd_state_s::rc_stop_connect))
-
-#ifdef DEBUG
-/*
- * Non-mutex protection schemes for data elements. They are counters
- * for problem diagnosis. Don't need be protected.
- */
-_NOTE(SCHEME_PROTECTS_DATA("counters for problem diagnosis",
- ibd_state_s::rc_rwqe_short
- ibd_rc_stat_s::rc_rcv_trans_byte
- ibd_rc_stat_s::rc_rcv_trans_pkt
- ibd_rc_stat_s::rc_rcv_copy_byte
- ibd_rc_stat_s::rc_rcv_copy_pkt
- ibd_rc_stat_s::rc_rcv_alloc_fail
- ibd_rc_stat_s::rc_rcq_err
- ibd_rc_stat_s::rc_rwqe_short
- ibd_rc_stat_s::rc_xmt_bytes
- ibd_rc_stat_s::rc_xmt_small_pkt
- ibd_rc_stat_s::rc_xmt_fragmented_pkt
- ibd_rc_stat_s::rc_xmt_map_fail_pkt
- ibd_rc_stat_s::rc_xmt_map_succ_pkt
- ibd_rc_stat_s::rc_ace_not_found
- ibd_rc_stat_s::rc_scq_no_swqe
- ibd_rc_stat_s::rc_scq_no_largebuf
- ibd_rc_stat_s::rc_swqe_short
- ibd_rc_stat_s::rc_swqe_mac_update
- ibd_rc_stat_s::rc_xmt_buf_short
- ibd_rc_stat_s::rc_xmt_buf_mac_update
- ibd_rc_stat_s::rc_conn_succ
- ibd_rc_stat_s::rc_conn_fail
- ibd_rc_stat_s::rc_null_conn
- ibd_rc_stat_s::rc_no_estab_conn
- ibd_rc_stat_s::rc_act_close
- ibd_rc_stat_s::rc_pas_close
- ibd_rc_stat_s::rc_delay_ace_recycle
- ibd_rc_stat_s::rc_act_close_simultaneous
- ibd_rc_stat_s::rc_reset_cnt
- ibd_rc_stat_s::rc_timeout_act
- ibd_rc_stat_s::rc_timeout_pas))
-#endif
-
int
_init()
{
int status;
@@ -1261,15 +902,11 @@
case IBD_ASYNC_LINK:
ibd_async_link(state, ptr);
break;
case IBD_ASYNC_EXIT:
mutex_enter(&state->id_acache_req_lock);
-#ifndef __lock_lint
CALLB_CPR_EXIT(&cprinfo);
-#else
- mutex_exit(&state->id_acache_req_lock);
-#endif
return;
case IBD_ASYNC_RC_TOO_BIG:
ibd_async_rc_process_too_big(state,
ptr);
break;
@@ -1288,20 +925,18 @@
if (ptr != NULL)
kmem_cache_free(state->id_req_kmc, ptr);
mutex_enter(&state->id_acache_req_lock);
} else {
-#ifndef __lock_lint
/*
* Nothing to do: wait till new request arrives.
*/
CALLB_CPR_SAFE_BEGIN(&cprinfo);
cv_wait(&state->id_acache_req_cv,
&state->id_acache_req_lock);
CALLB_CPR_SAFE_END(&cprinfo,
&state->id_acache_req_lock);
-#endif
}
}
/*NOTREACHED*/
_NOTE(NOT_REACHED)
@@ -1944,13 +1579,11 @@
* defaulting to the lowest speed. Also notice that we update our
* notion of speed before calling mac_link_update(), which will do
* necessary higher level notifications for speed changes.
*/
if ((opcode == IBD_LINK_UP_ABSENT) || (opcode == IBD_LINK_UP)) {
- _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*state))
state->id_link_speed = ibd_get_portspeed(state);
- _NOTE(NOW_VISIBLE_TO_OTHER_THREADS(*state))
}
/*
* Do all the work required to establish our presence on
* the subnet.
@@ -2198,11 +1831,10 @@
* Check to see if the subnet part of GID0 has changed. If
* not, check the simple case first to see if the pkey
* index is the same as before; finally check to see if the
* pkey has been relocated to a different index in the table.
*/
- _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(state->id_sgid))
if (bcmp(port_infop->p_sgid_tbl,
&state->id_sgid, sizeof (ib_gid_t)) != 0) {
new_link_state = LINK_STATE_DOWN;
@@ -2233,11 +1865,10 @@
goto link_mod_return;
} else {
new_link_state = LINK_STATE_DOWN;
}
- _NOTE(NOW_VISIBLE_TO_OTHER_THREADS(state->id_sgid))
}
update_link_state:
if (port_infop) {
ibt_free_portinfo(port_infop, port_infosz);
@@ -2420,12 +2051,10 @@
ibd_record_capab(ibd_state_t *state)
{
ibt_hca_attr_t hca_attrs;
ibt_status_t ibt_status;
- _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*state))
-
/*
* Query the HCA and fetch its attributes
*/
ibt_status = ibt_query_hca(state->id_hca_hdl, &hca_attrs);
ASSERT(ibt_status == IBT_SUCCESS);
@@ -2524,12 +2153,10 @@
IBD_RWQE_MIN;
if (hca_attrs.hca_max_chan_sz < state->id_ud_num_swqe)
state->id_ud_num_swqe = hca_attrs.hca_max_chan_sz;
- _NOTE(NOW_VISIBLE_TO_OTHER_THREADS(*state))
-
return (DDI_SUCCESS);
}
static int
ibd_part_busy(ibd_state_t *state)
@@ -3415,27 +3042,23 @@
state->id_bgroup_present = B_FALSE;
query_bcast_grp:
bzero(&mcg_attr, sizeof (ibt_mcg_attr_t));
mcg_attr.mc_pkey = state->id_pkey;
- _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(state->id_mgid))
state->id_mgid.gid_guid = IB_MGID_IPV4_LOWGRP_MASK;
- _NOTE(NOW_VISIBLE_TO_OTHER_THREADS(state->id_mgid))
for (i = 0; i < sizeof (scopes)/sizeof (scopes[0]); i++) {
state->id_scope = mcg_attr.mc_scope = scopes[i];
/*
* Look for the IPoIB broadcast group.
*/
- _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(state->id_mgid))
state->id_mgid.gid_prefix =
(((uint64_t)IB_MCGID_IPV4_PREFIX << 32) |
((uint64_t)state->id_scope << 48) |
((uint32_t)(state->id_pkey << 16)));
mcg_attr.mc_mgid = state->id_mgid;
- _NOTE(NOW_VISIBLE_TO_OTHER_THREADS(state->id_mgid))
if (ibt_query_mcg(state->id_sgid, &mcg_attr, 1,
&state->id_mcinfo, &numg) == IBT_SUCCESS) {
found = B_TRUE;
break;
}
@@ -3463,17 +3086,15 @@
mcg_attr.mc_scope = IB_MC_SCOPE_SUBNET_LOCAL;
mcg_attr.mc_pkey = state->id_pkey;
mcg_attr.mc_flow = 0;
mcg_attr.mc_sl = 0;
mcg_attr.mc_tclass = 0;
- _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(state->id_mgid))
state->id_mgid.gid_prefix =
(((uint64_t)IB_MCGID_IPV4_PREFIX << 32) |
((uint64_t)IB_MC_SCOPE_SUBNET_LOCAL << 48) |
((uint32_t)(state->id_pkey << 16)));
mcg_attr.mc_mgid = state->id_mgid;
- _NOTE(NOW_VISIBLE_TO_OTHER_THREADS(state->id_mgid))
if ((ret = ibt_join_mcg(state->id_sgid, &mcg_attr,
&mcg_info, NULL, NULL)) != IBT_SUCCESS) {
ibd_print_warn(state, "IPoIB broadcast group "
"absent, create failed: ret = %d\n", ret);
@@ -4351,14 +3972,12 @@
* trap came in on; we just need to act on traps that came
* to our port, meaning the port on which the ipoib interface
* resides. Since ipoib uses GID0 of the port, we just match
* the gids to check whether we need to handle the trap.
*/
- _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(state->id_sgid))
if (bcmp(&gid, &state->id_sgid, sizeof (ib_gid_t)) != 0)
return;
- _NOTE(NOW_VISIBLE_TO_OTHER_THREADS(state->id_sgid))
DPRINT(10, "ibd_notices_handler : %d\n", code);
switch (code) {
case IBT_SM_EVENT_UNAVAILABLE:
@@ -5341,13 +4960,11 @@
state->id_link_state = LINK_STATE_DOWN;
} else {
state->id_link_state = LINK_STATE_UP;
}
state->id_mtu = (128 << port_infop->p_mtu);
- _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(state->id_sgid))
state->id_sgid = *port_infop->p_sgid_tbl;
- _NOTE(NOW_VISIBLE_TO_OTHER_THREADS(state->id_sgid))
/*
* Now that the port is active, record the port speed
*/
state->id_link_speed = ibd_get_portspeed(state);
} else {