BNX2X: spatch changes for BUG and WARN
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 18 Feb 2015 19:52:28 +0000 (14:52 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 2 Mar 2015 16:59:10 +0000 (11:59 -0500)
Spatching, vs #defining.  It'll be easier for other Linux code.

One slight pain is that BUG_ON's logic is the reverse of assert.  Not a huge
deal.

kern/drivers/net/bnx2x/akaros_compat.h
kern/drivers/net/bnx2x/bnx2x.h
kern/drivers/net/bnx2x/bnx2x_cmn.c
kern/drivers/net/bnx2x/bnx2x_cmn.h
kern/drivers/net/bnx2x/bnx2x_main.c
kern/drivers/net/bnx2x/bnx2x_sp.c
kern/drivers/net/bnx2x/bnx2x_sriov.c
kern/drivers/net/bnx2x/bnx2x_stats.c
kern/drivers/net/bnx2x/bnx2x_vfpf.c
scripts/spatch/linux/funcs.cocci

index f989067..762d91b 100644 (file)
 #define CLAMP(val, lo, hi) MIN((typeof(val))MAX(val, lo), hi)
 #define CLAMP_T(t, val, lo, hi) CLAMP(val, lo, hi)
 
-/* I'm okay with these versions of the asserts. */
-#define WARN(args...) warn(args)
-#define WARN_ONCE(args...) warn_once(args)
-#define WARN_ON(x) warn_on(x)
-#define WARN_ON_ONCE(x) warn_on_once(x)
-#define BUG() panic("BUG")
-#define BUG_ON(x) assert(x)
-
 typedef physaddr_t dma_addr_t;
 typedef int gfp_t;
 
index ccefe12..d6f2657 100644 (file)
@@ -616,7 +616,7 @@ static inline bool bnx2x_fp_lock_napi(struct bnx2x_fastpath *fp)
 
        spin_lock(&fp->lock);
        if (fp->state & BNX2X_FP_LOCKED) {
-               WARN_ON(fp->state & BNX2X_FP_STATE_NAPI);
+               warn_on(fp->state & BNX2X_FP_STATE_NAPI);
                fp->state |= BNX2X_FP_STATE_NAPI_YIELD;
                rc = false;
        } else {
@@ -633,7 +633,7 @@ static inline bool bnx2x_fp_unlock_napi(struct bnx2x_fastpath *fp)
        bool rc = false;
 
        spin_lock(&fp->lock);
-       WARN_ON(fp->state &
+       warn_on(fp->state &
                (BNX2X_FP_STATE_POLL | BNX2X_FP_STATE_NAPI_YIELD));
 
        if (fp->state & BNX2X_FP_STATE_POLL_YIELD)
@@ -668,7 +668,7 @@ static inline bool bnx2x_fp_unlock_poll(struct bnx2x_fastpath *fp)
        bool rc = false;
 
        spin_lock(&fp->lock);
-       WARN_ON(fp->state & BNX2X_FP_STATE_NAPI);
+       warn_on(fp->state & BNX2X_FP_STATE_NAPI);
 
        if (fp->state & BNX2X_FP_STATE_POLL_YIELD)
                rc = true;
@@ -682,7 +682,7 @@ static inline bool bnx2x_fp_unlock_poll(struct bnx2x_fastpath *fp)
 /* true if a socket is polling, even if it did not get the lock */
 static inline bool bnx2x_fp_ll_polling(struct bnx2x_fastpath *fp)
 {
-       WARN_ON(!(fp->state & BNX2X_FP_OWNED));
+       warn_on(!(fp->state & BNX2X_FP_OWNED));
        return fp->state & BNX2X_FP_USER_PEND;
 }
 
index d623f47..18c0f5b 100644 (file)
@@ -257,7 +257,7 @@ panic("Not implemented");
        }
 
        /* release skb */
-       WARN_ON(!skb);
+       warn_on(!skb);
        if (likely(skb)) {
                (*pkts_compl)++;
                (*bytes_compl) += skb->len;
@@ -3887,7 +3887,7 @@ panic("Not implemented");
        txq_index = skb_get_queue_mapping(skb);
        txq = netdev_get_tx_queue(dev, txq_index);
 
-       BUG_ON(txq_index >= MAX_ETH_TXQ_IDX(bp) + (CNIC_LOADED(bp) ? 1 : 0));
+       assert(!(txq_index >= MAX_ETH_TXQ_IDX(bp) + (CNIC_LOADED(bp) ? 1 : 0)));
 
        txdata = &bp->bnx2x_txq[txq_index];
 
@@ -4510,7 +4510,7 @@ static int bnx2x_alloc_rx_bds(struct bnx2x_fastpath *fp,
                }
                ring_prod = NEXT_RX_IDX(ring_prod);
                cqe_ring_prod = NEXT_RCQ_IDX(cqe_ring_prod);
-               WARN_ON(ring_prod <= (i - failure_cnt));
+               warn_on(ring_prod <= (i - failure_cnt));
        }
 
        if (failure_cnt)
@@ -4724,7 +4724,7 @@ static int bnx2x_alloc_fp_mem(struct bnx2x *bp)
        if (i != BNX2X_NUM_ETH_QUEUES(bp)) {
                int delta = BNX2X_NUM_ETH_QUEUES(bp) - i;
 
-               WARN_ON(delta < 0);
+               warn_on(delta < 0);
                bnx2x_shrink_eth_fp(bp, delta);
                if (CNIC_SUPPORT(bp))
                        /* move non eth FPs next to last eth FP
index 8170eb4..2bf7413 100644 (file)
@@ -743,9 +743,9 @@ static inline uint16_t bnx2x_tx_avail(struct bnx2x *bp,
        used = SUB_S16(prod, cons);
 
 #ifdef BNX2X_STOP_ON_ERROR
-       WARN_ON(used < 0);
-       WARN_ON(used > txdata->tx_ring_size);
-       WARN_ON((txdata->tx_ring_size - used) > MAX_TX_AVAIL);
+       warn_on(used < 0);
+       warn_on(used > txdata->tx_ring_size);
+       warn_on((txdata->tx_ring_size - used) > MAX_TX_AVAIL);
 #endif
 
        return (int16_t)(txdata->tx_ring_size) - used;
@@ -1072,7 +1072,7 @@ static inline uint8_t bnx2x_get_path_func_num(struct bnx2x *bp)
                }
        }
 
-       WARN_ON(!func_num);
+       warn_on(!func_num);
 
        return func_num;
 }
index 5aea655..9527bc2 100644 (file)
@@ -3187,7 +3187,7 @@ panic("Not implemented");
                pause->sge_th_hi = SGE_TH_HI(bp);
 
                /* validate SGE ring has enough to cross high threshold */
-               WARN_ON(bp->dropless_fc &&
+               warn_on(bp->dropless_fc &&
                                pause->sge_th_hi + FW_PREFETCH_CNT >
                                MAX_RX_SGE_CNT * NUM_RX_SGE_PAGES);
 
@@ -3210,10 +3210,10 @@ panic("Not implemented");
                 * validate that rings have enough entries to cross
                 * high thresholds
                 */
-               WARN_ON(bp->dropless_fc &&
+               warn_on(bp->dropless_fc &&
                                pause->bd_th_hi + FW_PREFETCH_CNT >
                                bp->rx_ring_size);
-               WARN_ON(bp->dropless_fc &&
+               warn_on(bp->dropless_fc &&
                                pause->rcq_th_hi + FW_PREFETCH_CNT >
                                NUM_RCQ_RINGS * MAX_RCQ_DESC_CNT);
 
@@ -6362,7 +6362,7 @@ static void bnx2x_init_eth_fp(struct bnx2x *bp, int fp_idx)
        __set_bit(BNX2X_Q_TYPE_HAS_RX, &q_type);
        __set_bit(BNX2X_Q_TYPE_HAS_TX, &q_type);
 
-       BUG_ON(fp->max_cos > BNX2X_MULTI_TX_COS);
+       assert(!(fp->max_cos > BNX2X_MULTI_TX_COS));
 
        /* init tx data */
        for_each_cos_in_tx_queue(fp, cos) {
@@ -6473,7 +6473,7 @@ panic("Not implemented");
        __set_bit(BNX2X_Q_TYPE_HAS_TX, &q_type);
 
        /* No multi-CoS for FCoE L2 client */
-       BUG_ON(fp->max_cos != 1);
+       assert(!(fp->max_cos != 1));
 
        bnx2x_init_queue_obj(bp, &bnx2x_sp_obj(bp, fp).q_obj, fp->cl_id,
                             &fp->cid, 1, BP_FUNC(bp), bnx2x_sp(bp, q_rdata),
@@ -8652,7 +8652,7 @@ void bnx2x_ilt_set_info(struct bnx2x *bp)
                   LOG2_UP(ilt_client->page_size >> 12));
        }
 
-       BUG_ON(line > ILT_MAX_LINES);
+       assert(!(line > ILT_MAX_LINES));
 }
 
 /**
@@ -9875,7 +9875,7 @@ panic("Not implemented");
                case BNX2X_RECOVERY_INIT:
                        DP(NETIF_MSG_HW, "State is BNX2X_RECOVERY_INIT\n");
                        is_parity = bnx2x_chk_parity_attn(bp, &global, false);
-                       WARN_ON(!is_parity);
+                       warn_on(!is_parity);
 
                        /* Try to get a LEADER_LOCK HW lock */
                        if (bnx2x_trylock_leader_lock(bp)) {
@@ -12349,7 +12349,7 @@ static void bnx2x_free_mcast_macs_list(
                list_first_entry(&p->mcast_list, struct bnx2x_mcast_list_elem,
                                 link);
 
-       WARN_ON(!mc_mac);
+       warn_on(!mc_mac);
        kfree(mc_mac);
 }
 
@@ -13961,7 +13961,7 @@ static void bnx2x_cnic_sp_post(struct bnx2x *bp, int count)
 #endif
 
        spin_lock(&bp->spq_lock);
-       BUG_ON(bp->cnic_spq_pending < count);
+       assert(!(bp->cnic_spq_pending < count));
        bp->cnic_spq_pending -= count;
 
        for (; bp->cnic_kwq_pending; bp->cnic_kwq_pending--) {
index 47ce757..83e1e20 100644 (file)
@@ -193,7 +193,7 @@ static inline int bnx2x_exe_queue_step(struct bnx2x *bp,
        while (!list_empty(&o->exe_queue)) {
                elem = list_first_entry(&o->exe_queue, struct bnx2x_exeq_elem,
                                        link);
-               WARN_ON(!elem->cmd_len);
+               warn_on(!elem->cmd_len);
 
                if (cur_len + elem->cmd_len <= o->exe_chunk_len) {
                        cur_len += elem->cmd_len;
@@ -319,7 +319,7 @@ static bool bnx2x_get_cam_offset_mac(struct bnx2x_vlan_mac_obj *o, int *offset)
 {
        struct bnx2x_credit_pool_obj *mp = o->macs_pool;
 
-       WARN_ON(!mp);
+       warn_on(!mp);
 
        return mp->get_entry(mp, offset);
 }
@@ -328,7 +328,7 @@ static bool bnx2x_get_credit_mac(struct bnx2x_vlan_mac_obj *o)
 {
        struct bnx2x_credit_pool_obj *mp = o->macs_pool;
 
-       WARN_ON(!mp);
+       warn_on(!mp);
 
        return mp->get(mp, 1);
 }
@@ -337,7 +337,7 @@ static bool bnx2x_get_cam_offset_vlan(struct bnx2x_vlan_mac_obj *o, int *offset)
 {
        struct bnx2x_credit_pool_obj *vp = o->vlans_pool;
 
-       WARN_ON(!vp);
+       warn_on(!vp);
 
        return vp->get_entry(vp, offset);
 }
@@ -346,7 +346,7 @@ static bool bnx2x_get_credit_vlan(struct bnx2x_vlan_mac_obj *o)
 {
        struct bnx2x_credit_pool_obj *vp = o->vlans_pool;
 
-       WARN_ON(!vp);
+       warn_on(!vp);
 
        return vp->get(vp, 1);
 }
@@ -1561,7 +1561,7 @@ static inline int bnx2x_vlan_mac_get_registry_elem(
                        /* This shall never happen, because we have checked the
                         * CAM availability in the 'validate'.
                         */
-                       WARN_ON(1);
+                       warn_on(1);
                        kfree(reg_elem);
                        return -EINVAL;
                }
@@ -1610,7 +1610,7 @@ static int bnx2x_execute_vlan_mac(struct bnx2x *bp,
         * and exit. Otherwise send a ramrod to FW.
         */
        if (!drv_only) {
-               WARN_ON(r->check_pending(r));
+               warn_on(r->check_pending(r));
 
                /* Set pending */
                r->set_pending(r);
@@ -1632,7 +1632,7 @@ static int bnx2x_execute_vlan_mac(struct bnx2x *bp,
                        if (rc)
                                goto error_exit;
 
-                       WARN_ON(!reg_elem);
+                       warn_on(!reg_elem);
 
                        /* Push a new entry into the registry */
                        if (!restore &&
@@ -1674,7 +1674,7 @@ static int bnx2x_execute_vlan_mac(struct bnx2x *bp,
                        reg_elem = o->check_del(bp, o,
                                                &elem->cmd_data.vlan_mac.u);
 
-                       WARN_ON(!reg_elem);
+                       warn_on(!reg_elem);
 
                        o->put_cam_offset(o, reg_elem->cam_offset);
                        list_del(&reg_elem->link);
@@ -2030,7 +2030,7 @@ void bnx2x_init_vlan_obj(struct bnx2x *bp,
 
        if (CHIP_IS_E1x(bp)) {
                BNX2X_ERR("Do not support chips others than E2 and newer\n");
-               BUG();
+               panic("BUG");
        } else {
                vlan_obj->set_one_rule      = bnx2x_set_one_vlan_e2;
                vlan_obj->check_del         = bnx2x_check_vlan_del;
@@ -2964,8 +2964,8 @@ static int bnx2x_mcast_setup_e2(struct bnx2x *bp,
        o->total_pending_num -= cnt;
 
        /* send a ramrod */
-       WARN_ON(o->total_pending_num < 0);
-       WARN_ON(cnt > o->max_cmd_len);
+       warn_on(o->total_pending_num < 0);
+       warn_on(cnt > o->max_cmd_len);
 
        bnx2x_mcast_set_rdata_hdr_e2(bp, p, (uint8_t)cnt);
 
@@ -3456,7 +3456,7 @@ static int bnx2x_mcast_setup_e1(struct bnx2x *bp,
 
        /* send a ramrod */
 
-       WARN_ON(cnt > o->max_cmd_len);
+       warn_on(cnt > o->max_cmd_len);
 
        /* Set ramrod header (in particular, a number of entries to update) */
        bnx2x_mcast_set_rdata_hdr_e1(bp, p, (uint8_t)cnt);
@@ -5217,7 +5217,7 @@ void bnx2x_init_queue_obj(struct bnx2x *bp,
        memset(obj, 0, sizeof(*obj));
 
        /* We support only BNX2X_MULTI_TX_COS Tx CoS at the moment */
-       BUG_ON(BNX2X_MULTI_TX_COS < cid_cnt);
+       assert(!(BNX2X_MULTI_TX_COS < cid_cnt));
 
        memcpy(obj->cids, cids, sizeof(obj->cids[0]) * cid_cnt);
        obj->max_cos = cid_cnt;
index 8a8fd42..0d5c2f1 100644 (file)
@@ -2344,7 +2344,7 @@ int bnx2x_vf_release(struct bnx2x *bp, struct bnx2x_virtf *vf)
 
        rc = bnx2x_vf_free(bp, vf);
        if (rc)
-               WARN(rc,
+               warn(rc,
                     "VF[%d] Failed to allocate resources for release op- rc=%d\n",
                     vf->abs_vfid, rc);
        bnx2x_unlock_vf_pf_channel(bp, vf, CHANNEL_TLV_PF_RELEASE_VF);
@@ -2387,7 +2387,7 @@ void bnx2x_unlock_vf_pf_channel(struct bnx2x *bp, struct bnx2x_virtf *vf,
        if (!bnx2x_tlv_supported(expected_tlv))
                return;
 
-       WARN(expected_tlv != vf->op_current,
+       warn(expected_tlv != vf->op_current,
             "lock mismatch: expected %d found %d", expected_tlv,
             vf->op_current);
 
index 2912f7b..1979139 100644 (file)
@@ -71,7 +71,7 @@ static inline uint16_t bnx2x_get_port_stats_dma_len(struct bnx2x *bp)
 
        res >>= 2;
 
-       WARN_ON(res > 2 * DMAE_LEN32_RD_MAX);
+       warn_on(res > 2 * DMAE_LEN32_RD_MAX);
        return res;
 }
 
index 84e4dd8..d06383b 100644 (file)
@@ -109,7 +109,7 @@ static void bnx2x_dp_tlv_list(struct bnx2x *bp, void *tlvs_list)
 
                /* break condition for this loop */
                if (i > MAX_TLVS_IN_LIST) {
-                       WARN(true, "corrupt tlvs");
+                       warn(true, "corrupt tlvs");
                        return;
                }
        }
@@ -146,7 +146,7 @@ static int bnx2x_send_msg2pf(struct bnx2x *bp, uint8_t *done,
 
        if (*done) {
                BNX2X_ERR("done was non zero before message to pf was sent\n");
-               WARN_ON(true);
+               warn_on(true);
                return -EINVAL;
        }
 
index bc76fd7..fe1aeee 100644 (file)
@@ -255,10 +255,40 @@ expression UP;
 -roundup(VAL, UP)
 +ROUNDUP(VAL, UP)
 
-
 @@
 expression VAL;
 expression DOWN;
 @@
 -rounddown(VAL, DOWN)
 +ROUNDDOWN(VAL, DOWN)
+
+@@
+expression STMT;
+@@
+-BUG_ON(STMT)
++assert(!(STMT))
+
+@@
+@@
+-BUG()
++panic("BUG")
+
+@@
+@@
+-WARN
++warn
+
+@@
+@@
+-WARN_ONCE
++warn_once
+
+@@
+@@
+-WARN_ON
++warn_on
+
+@@
+@@
+-WARN_ON_ONCE
++warn_on-once