net/mlx5: enable debug logs dynamically
authorThomas Monjalon <thomas@monjalon.net>
Tue, 9 Mar 2021 09:48:34 +0000 (10:48 +0100)
committerRaslan Darawsheh <rasland@nvidia.com>
Mon, 15 Mar 2021 13:30:55 +0000 (14:30 +0100)
Most debug logs are using DRV_LOG(DEBUG,)
but some were using DEBUG().
The macro DEBUG is doing nothing if not compiled with
RTE_LIBRTE_MLX5_DEBUG.

As it is not used in the data path, the macro DEBUG
can be replaced with DRV_LOG.
Then all debug logs can be enabled at runtime with:
--log-level pmd.net.mlx5:debug

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Matan Azrad <matan@nvidia.com>
drivers/common/mlx5/mlx5_common.h
drivers/common/mlx5/mlx5_common_mr.c
drivers/net/mlx5/linux/mlx5_verbs.c
drivers/net/mlx5/mlx5_mr.c
drivers/net/mlx5/mlx5_rxq.c

index 3855582..5028a05 100644 (file)
@@ -92,14 +92,12 @@ pmd_drv_log_basename(const char *s)
 /* claim_zero() does not perform any check when debugging is disabled. */
 #ifdef RTE_LIBRTE_MLX5_DEBUG
 
-#define DEBUG(...) DRV_LOG(DEBUG, __VA_ARGS__)
 #define MLX5_ASSERT(exp) RTE_VERIFY(exp)
 #define claim_zero(...) MLX5_ASSERT((__VA_ARGS__) == 0)
 #define claim_nonzero(...) MLX5_ASSERT((__VA_ARGS__) != 0)
 
 #else /* RTE_LIBRTE_MLX5_DEBUG */
 
-#define DEBUG(...) (void)0
 #define MLX5_ASSERT(exp) RTE_ASSERT(exp)
 #define claim_zero(...) (__VA_ARGS__)
 #define claim_nonzero(...) (__VA_ARGS__)
index 7c25541..e1ed0ca 100644 (file)
@@ -187,8 +187,9 @@ mlx5_mr_btree_init(struct mlx5_mr_btree *bt, int n, int socket)
                                0, socket);
        if (bt->table == NULL) {
                rte_errno = ENOMEM;
-               DEBUG("failed to allocate memory for btree cache on socket %d",
-                     socket);
+               DRV_LOG(DEBUG,
+                       "failed to allocate memory for btree cache on socket "
+                       "%d", socket);
                return -rte_errno;
        }
        bt->size = n;
@@ -196,7 +197,7 @@ mlx5_mr_btree_init(struct mlx5_mr_btree *bt, int n, int socket)
        (*bt->table)[bt->len++] = (struct mr_cache_entry) {
                .lkey = UINT32_MAX,
        };
-       DEBUG("initialized B-tree %p with table %p",
+       DRV_LOG(DEBUG, "initialized B-tree %p with table %p",
              (void *)bt, (void *)bt->table);
        return 0;
 }
@@ -212,7 +213,7 @@ mlx5_mr_btree_free(struct mlx5_mr_btree *bt)
 {
        if (bt == NULL)
                return;
-       DEBUG("freeing B-tree %p with table %p",
+       DRV_LOG(DEBUG, "freeing B-tree %p with table %p",
              (void *)bt, (void *)bt->table);
        mlx5_free(bt->table);
        memset(bt, 0, sizeof(*bt));
@@ -237,7 +238,7 @@ mlx5_mr_btree_dump(struct mlx5_mr_btree *bt __rte_unused)
        for (idx = 0; idx < bt->len; ++idx) {
                struct mr_cache_entry *entry = &lkp_tbl[idx];
 
-               DEBUG("B-tree(%p)[%u],"
+               DRV_LOG(DEBUG, "B-tree(%p)[%u],"
                      " [0x%" PRIxPTR ", 0x%" PRIxPTR ") lkey=0x%x",
                      (void *)bt, idx, entry->start, entry->end, entry->lkey);
        }
@@ -543,11 +544,11 @@ mlx5_mr_create_secondary(void *pd __rte_unused,
 {
        int ret;
 
-       DEBUG("port %u requesting MR creation for address (%p)",
+       DRV_LOG(DEBUG, "port %u requesting MR creation for address (%p)",
              mp_id->port_id, (void *)addr);
        ret = mlx5_mp_req_mr_create(mp_id, addr);
        if (ret) {
-               DEBUG("Fail to request MR creation for address (%p)",
+               DRV_LOG(DEBUG, "Fail to request MR creation for address (%p)",
                      (void *)addr);
                return UINT32_MAX;
        }
@@ -557,7 +558,7 @@ mlx5_mr_create_secondary(void *pd __rte_unused,
        /* Lookup can't fail. */
        MLX5_ASSERT(entry->lkey != UINT32_MAX);
        rte_rwlock_read_unlock(&share_cache->rwlock);
-       DEBUG("MR CREATED by primary process for %p:\n"
+       DRV_LOG(DEBUG, "MR CREATED by primary process for %p:\n"
              "  [0x%" PRIxPTR ", 0x%" PRIxPTR "), lkey=0x%x",
              (void *)addr, entry->start, entry->end, entry->lkey);
        return entry->lkey;
@@ -647,7 +648,7 @@ alloc_resources:
        MLX5_ASSERT(msl->page_sz == ms->hugepage_sz);
        /* Number of memsegs in the range. */
        ms_n = len / msl->page_sz;
-       DEBUG("Extending %p to [0x%" PRIxPTR ", 0x%" PRIxPTR "),"
+       DRV_LOG(DEBUG, "Extending %p to [0x%" PRIxPTR ", 0x%" PRIxPTR "),"
              " page_sz=0x%" PRIx64 ", ms_n=%u",
              (void *)addr, data.start, data.end, msl->page_sz, ms_n);
        /* Size of memory for bitmap. */
@@ -656,7 +657,7 @@ alloc_resources:
                         RTE_ALIGN_CEIL(sizeof(*mr), RTE_CACHE_LINE_SIZE) +
                         bmp_size, RTE_CACHE_LINE_SIZE, msl->socket_id);
        if (mr == NULL) {
-               DEBUG("Unable to allocate memory for a new MR of"
+               DRV_LOG(DEBUG, "Unable to allocate memory for a new MR of"
                      " address (%p).", (void *)addr);
                rte_errno = ENOMEM;
                goto err_nolock;
@@ -671,7 +672,7 @@ alloc_resources:
        bmp_mem = RTE_PTR_ALIGN_CEIL(mr + 1, RTE_CACHE_LINE_SIZE);
        mr->ms_bmp = rte_bitmap_init(ms_n, bmp_mem, bmp_size);
        if (mr->ms_bmp == NULL) {
-               DEBUG("Unable to initialize bitmap for a new MR of"
+               DRV_LOG(DEBUG, "Unable to initialize bitmap for a new MR of"
                      " address (%p).", (void *)addr);
                rte_errno = EINVAL;
                goto err_nolock;
@@ -688,9 +689,9 @@ alloc_resources:
        data_re = data;
        if (len > msl->page_sz &&
            !rte_memseg_contig_walk(mr_find_contig_memsegs_cb, &data_re)) {
-               DEBUG("Unable to find virtually contiguous"
-                     " chunk for address (%p)."
-                     " rte_memseg_contig_walk() failed.", (void *)addr);
+               DRV_LOG(DEBUG,
+                       "Unable to find virtually contiguous chunk for address "
+                       "(%p). rte_memseg_contig_walk() failed.", (void *)addr);
                rte_errno = ENXIO;
                goto err_memlock;
        }
@@ -718,7 +719,8 @@ alloc_resources:
                 * here again.
                 */
                mr_btree_insert(&share_cache->cache, entry);
-               DEBUG("Found MR for %p on final lookup, abort", (void *)addr);
+               DRV_LOG(DEBUG, "Found MR for %p on final lookup, abort",
+                       (void *)addr);
                rte_rwlock_write_unlock(&share_cache->rwlock);
                rte_mcfg_mem_read_unlock();
                /*
@@ -767,7 +769,7 @@ alloc_resources:
         */
        share_cache->reg_mr_cb(pd, (void *)data.start, len, &mr->pmd_mr);
        if (mr->pmd_mr.obj == NULL) {
-               DEBUG("Fail to create an MR for address (%p)",
+               DRV_LOG(DEBUG, "Fail to create an MR for address (%p)",
                      (void *)addr);
                rte_errno = EINVAL;
                goto err_mrlock;
@@ -775,7 +777,7 @@ alloc_resources:
        MLX5_ASSERT((uintptr_t)mr->pmd_mr.addr == data.start);
        MLX5_ASSERT(mr->pmd_mr.len);
        LIST_INSERT_HEAD(&share_cache->mr_list, mr, mr);
-       DEBUG("MR CREATED (%p) for %p:\n"
+       DRV_LOG(DEBUG, "MR CREATED (%p) for %p:\n"
              "  [0x%" PRIxPTR ", 0x%" PRIxPTR "),"
              " lkey=0x%x base_idx=%u ms_n=%u, ms_bmp_n=%u",
              (void *)mr, (void *)addr, data.start, data.end,
@@ -1079,7 +1081,7 @@ mlx5_mr_dump_cache(struct mlx5_mr_share_cache *share_cache __rte_unused)
        LIST_FOREACH(mr, &share_cache->mr_list, mr) {
                unsigned int n;
 
-               DEBUG("MR[%u], LKey = 0x%x, ms_n = %u, ms_bmp_n = %u",
+               DRV_LOG(DEBUG, "MR[%u], LKey = 0x%x, ms_n = %u, ms_bmp_n = %u",
                      mr_n++, rte_cpu_to_be_32(mr->pmd_mr.lkey),
                      mr->ms_n, mr->ms_bmp_n);
                if (mr->ms_n == 0)
@@ -1090,11 +1092,12 @@ mlx5_mr_dump_cache(struct mlx5_mr_share_cache *share_cache __rte_unused)
                        n = mr_find_next_chunk(mr, &ret, n);
                        if (!ret.end)
                                break;
-                       DEBUG("  chunk[%u], [0x%" PRIxPTR ", 0x%" PRIxPTR ")",
-                             chunk_n++, ret.start, ret.end);
+                       DRV_LOG(DEBUG,
+                               "  chunk[%u], [0x%" PRIxPTR ", 0x%" PRIxPTR ")",
+                               chunk_n++, ret.start, ret.end);
                }
        }
-       DEBUG("Dumping global cache %p", (void *)share_cache);
+       DRV_LOG(DEBUG, "Dumping global cache %p", (void *)share_cache);
        mlx5_mr_btree_dump(&share_cache->cache);
        rte_rwlock_read_unlock(&share_cache->rwlock);
 #endif
index ade241b..c7d4b17 100644 (file)
@@ -721,7 +721,7 @@ mlx5_rxq_ibv_obj_drop_create(struct rte_eth_dev *dev)
                return 0;
        rxq = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*rxq), 0, SOCKET_ID_ANY);
        if (!rxq) {
-               DEBUG("Port %u cannot allocate drop Rx queue memory.",
+               DRV_LOG(DEBUG, "Port %u cannot allocate drop Rx queue memory.",
                      dev->data->port_id);
                rte_errno = ENOMEM;
                return -rte_errno;
@@ -729,7 +729,7 @@ mlx5_rxq_ibv_obj_drop_create(struct rte_eth_dev *dev)
        priv->drop_queue.rxq = rxq;
        rxq->ibv_cq = mlx5_glue->create_cq(ctx, 1, NULL, NULL, 0);
        if (!rxq->ibv_cq) {
-               DEBUG("Port %u cannot allocate CQ for drop queue.",
+               DRV_LOG(DEBUG, "Port %u cannot allocate CQ for drop queue.",
                      dev->data->port_id);
                rte_errno = errno;
                goto error;
@@ -742,7 +742,7 @@ mlx5_rxq_ibv_obj_drop_create(struct rte_eth_dev *dev)
                                                    .cq = rxq->ibv_cq,
                                              });
        if (!rxq->wq) {
-               DEBUG("Port %u cannot allocate WQ for drop queue.",
+               DRV_LOG(DEBUG, "Port %u cannot allocate WQ for drop queue.",
                      dev->data->port_id);
                rte_errno = errno;
                goto error;
@@ -785,8 +785,9 @@ mlx5_ibv_drop_action_create(struct rte_eth_dev *dev)
                                        .comp_mask = 0,
                                 });
        if (!ind_tbl) {
-               DEBUG("Port %u cannot allocate indirection table for drop"
-                     " queue.", dev->data->port_id);
+               DRV_LOG(DEBUG, "Port %u"
+                       " cannot allocate indirection table for drop queue.",
+                       dev->data->port_id);
                rte_errno = errno;
                goto error;
        }
@@ -806,7 +807,7 @@ mlx5_ibv_drop_action_create(struct rte_eth_dev *dev)
                        .pd = priv->sh->pd
                 });
        if (!hrxq->qp) {
-               DEBUG("Port %u cannot allocate QP for drop queue.",
+               DRV_LOG(DEBUG, "Port %u cannot allocate QP for drop queue.",
                      dev->data->port_id);
                rte_errno = errno;
                goto error;
index da4e91f..3255393 100644 (file)
@@ -57,7 +57,7 @@ mlx5_mr_mem_event_free_cb(struct mlx5_dev_ctx_shared *sh,
        int i;
        int rebuild = 0;
 
-       DEBUG("device %s free callback: addr=%p, len=%zu",
+       DRV_LOG(DEBUG, "device %s free callback: addr=%p, len=%zu",
              sh->ibdev_name, addr, len);
        msl = rte_mem_virt2memseg_list(addr);
        /* addr and len must be page-aligned. */
@@ -87,13 +87,13 @@ mlx5_mr_mem_event_free_cb(struct mlx5_dev_ctx_shared *sh,
                pos = ms_idx - mr->ms_base_idx;
                MLX5_ASSERT(rte_bitmap_get(mr->ms_bmp, pos));
                MLX5_ASSERT(pos < mr->ms_bmp_n);
-               DEBUG("device %s MR(%p): clear bitmap[%u] for addr %p",
+               DRV_LOG(DEBUG, "device %s MR(%p): clear bitmap[%u] for addr %p",
                      sh->ibdev_name, (void *)mr, pos, (void *)start);
                rte_bitmap_clear(mr->ms_bmp, pos);
                if (--mr->ms_n == 0) {
                        LIST_REMOVE(mr, mr);
                        LIST_INSERT_HEAD(&sh->share_cache.mr_free_list, mr, mr);
-                       DEBUG("device %s remove MR(%p) from list",
+                       DRV_LOG(DEBUG, "device %s remove MR(%p) from list",
                              sh->ibdev_name, (void *)mr);
                }
                /*
@@ -114,7 +114,7 @@ mlx5_mr_mem_event_free_cb(struct mlx5_dev_ctx_shared *sh,
                 * before the core sees the newly allocated memory.
                 */
                ++sh->share_cache.dev_gen;
-               DEBUG("broadcasting local cache flush, gen=%d",
+               DRV_LOG(DEBUG, "broadcasting local cache flush, gen=%d",
                      sh->share_cache.dev_gen);
                rte_smp_wmb();
        }
@@ -405,7 +405,7 @@ mlx5_dma_unmap(struct rte_pci_device *pdev, void *addr,
        }
        LIST_REMOVE(mr, mr);
        mlx5_mr_free(mr, sh->share_cache.dereg_mr_cb);
-       DEBUG("port %u remove MR(%p) from list", dev->data->port_id,
+       DRV_LOG(DEBUG, "port %u remove MR(%p) from list", dev->data->port_id,
              (void *)mr);
        mlx5_mr_rebuild_cache(&sh->share_cache);
        /*
@@ -418,7 +418,7 @@ mlx5_dma_unmap(struct rte_pci_device *pdev, void *addr,
         * before the core sees the newly allocated memory.
         */
        ++sh->share_cache.dev_gen;
-       DEBUG("broadcasting local cache flush, gen=%d",
+       DRV_LOG(DEBUG, "broadcasting local cache flush, gen=%d",
              sh->share_cache.dev_gen);
        rte_smp_wmb();
        rte_rwlock_read_unlock(&sh->share_cache.rwlock);
index 8f9ee97..9009eb8 100644 (file)
@@ -1972,7 +1972,8 @@ error:
        for (j = 0; j < i; j++)
                mlx5_rxq_release(dev, ind_tbl->queues[j]);
        rte_errno = err;
-       DEBUG("Port %u cannot setup indirection table.", dev->data->port_id);
+       DRV_LOG(DEBUG, "Port %u cannot setup indirection table.",
+               dev->data->port_id);
        return ret;
 }
 
@@ -2056,8 +2057,9 @@ mlx5_ind_table_obj_modify(struct rte_eth_dev *dev,
                 * reference unsupported. Intended for standalone indirection
                 * tables only.
                 */
-               DEBUG("Port %u cannot modify indirection table (refcnt> 1).",
-                     dev->data->port_id);
+               DRV_LOG(DEBUG,
+                       "Port %u cannot modify indirection table (refcnt> 1).",
+                       dev->data->port_id);
                rte_errno = EINVAL;
                return -rte_errno;
        }
@@ -2081,7 +2083,8 @@ error:
        for (j = 0; j < i; j++)
                mlx5_rxq_release(dev, ind_tbl->queues[j]);
        rte_errno = err;
-       DEBUG("Port %u cannot setup indirection table.", dev->data->port_id);
+       DRV_LOG(DEBUG, "Port %u cannot setup indirection table.",
+               dev->data->port_id);
        return ret;
 }