LCOV - code coverage report
Current view: top level - drivers/common/cnxk - roc_platform.c (source / functions) Hit Total Coverage
Test: Code coverage Lines: 18 44 40.9 %
Date: 2025-03-01 20:23:48 Functions: 15 18 83.3 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 15 52 28.8 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: BSD-3-Clause
       2                 :            :  * Copyright(C) 2021 Marvell.
       3                 :            :  */
       4                 :            : 
       5                 :            : #include <rte_log.h>
       6                 :            : 
       7                 :            : #include "roc_api.h"
       8                 :            : 
       9                 :            : #define PLT_INIT_CB_MAX 8
      10                 :            : 
      11                 :            : static int plt_init_cb_num;
      12                 :            : static roc_plt_init_cb_t plt_init_cbs[PLT_INIT_CB_MAX];
      13                 :            : 
      14                 :            : int
      15                 :        504 : roc_plt_init_cb_register(roc_plt_init_cb_t cb)
      16                 :            : {
      17         [ +  - ]:        504 :         if (plt_init_cb_num >= PLT_INIT_CB_MAX)
      18                 :            :                 return -ERANGE;
      19                 :            : 
      20                 :        504 :         plt_init_cbs[plt_init_cb_num++] = cb;
      21                 :        504 :         return 0;
      22                 :            : }
      23                 :            : 
      24                 :            : uint16_t
      25         [ #  # ]:          0 : roc_plt_control_lmt_id_get(void)
      26                 :            : {
      27                 :            :         uint32_t lcore_id = plt_lcore_id();
      28         [ #  # ]:          0 :         if (lcore_id != LCORE_ID_ANY)
      29                 :          0 :                 return lcore_id << ROC_LMT_LINES_PER_CORE_LOG2;
      30                 :            :         else
      31                 :            :                 /* Return Last LMT ID to be use in control path functionality */
      32                 :            :                 return ROC_NUM_LMT_LINES - 1;
      33                 :            : }
      34                 :            : 
      35                 :            : uint16_t
      36         [ #  # ]:          0 : roc_plt_lmt_validate(void)
      37                 :            : {
      38         [ #  # ]:          0 :         if (!roc_model_is_cn9k()) {
      39                 :            :                 /* Last LMT line is reserved for control specific operation and can be
      40                 :            :                  * use from any EAL or non EAL cores.
      41                 :            :                  */
      42                 :            :                 if ((RTE_MAX_LCORE << ROC_LMT_LINES_PER_CORE_LOG2) >
      43                 :            :                     (ROC_NUM_LMT_LINES - 1))
      44                 :          0 :                         return 0;
      45                 :            :         }
      46                 :            :         return 1;
      47                 :            : }
      48                 :            : 
      49                 :            : int
      50                 :          0 : roc_plt_init(void)
      51                 :            : {
      52                 :            :         const struct rte_memzone *mz;
      53                 :            :         int i, rc;
      54                 :            : 
      55                 :          0 :         mz = rte_memzone_lookup(PLT_MODEL_MZ_NAME);
      56         [ #  # ]:          0 :         if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
      57         [ #  # ]:          0 :                 if (mz == NULL) {
      58                 :          0 :                         mz = rte_memzone_reserve(PLT_MODEL_MZ_NAME,
      59                 :            :                                                  sizeof(struct roc_model),
      60                 :            :                                                  SOCKET_ID_ANY, 0);
      61         [ #  # ]:          0 :                         if (mz == NULL) {
      62                 :          0 :                                 plt_err("Failed to reserve mem for roc_model");
      63                 :          0 :                                 return -ENOMEM;
      64                 :            :                         }
      65         [ #  # ]:          0 :                         if (roc_model_init(mz->addr)) {
      66                 :          0 :                                 plt_err("Failed to init roc_model");
      67                 :          0 :                                 rte_memzone_free(mz);
      68                 :          0 :                                 return -EINVAL;
      69                 :            :                         }
      70                 :            :                 }
      71                 :            :         } else {
      72         [ #  # ]:          0 :                 if (mz == NULL) {
      73                 :          0 :                         plt_err("Failed to lookup mem for roc_model");
      74                 :          0 :                         return -ENOMEM;
      75                 :            :                 }
      76                 :          0 :                 roc_model = mz->addr;
      77                 :            :         }
      78                 :            : 
      79         [ #  # ]:          0 :         for (i = 0; i < plt_init_cb_num; i++) {
      80                 :          0 :                 rc = (*plt_init_cbs[i])();
      81         [ #  # ]:          0 :                 if (rc)
      82                 :          0 :                         return rc;
      83                 :            :         }
      84                 :            : 
      85                 :            :         return 0;
      86                 :            : }
      87                 :            : 
      88         [ -  + ]:        252 : RTE_LOG_REGISTER_SUFFIX(cnxk_logtype_base, base, INFO);
      89         [ -  + ]:        252 : RTE_LOG_REGISTER_SUFFIX(cnxk_logtype_mbox, mbox, NOTICE);
      90         [ -  + ]:        252 : RTE_LOG_REGISTER_SUFFIX(cnxk_logtype_cpt, crypto, NOTICE);
      91         [ -  + ]:        252 : RTE_LOG_REGISTER_SUFFIX(cnxk_logtype_ml, ml, NOTICE);
      92         [ -  + ]:        252 : RTE_LOG_REGISTER_SUFFIX(cnxk_logtype_npa, mempool, NOTICE);
      93         [ -  + ]:        252 : RTE_LOG_REGISTER_SUFFIX(cnxk_logtype_nix, nix, NOTICE);
      94         [ -  + ]:        252 : RTE_LOG_REGISTER_SUFFIX(cnxk_logtype_npc, flow, NOTICE);
      95         [ -  + ]:        252 : RTE_LOG_REGISTER_SUFFIX(cnxk_logtype_sso, event, NOTICE);
      96         [ -  + ]:        252 : RTE_LOG_REGISTER_SUFFIX(cnxk_logtype_tim, timer, NOTICE);
      97         [ -  + ]:        252 : RTE_LOG_REGISTER_SUFFIX(cnxk_logtype_tm, tm, NOTICE);
      98         [ -  + ]:        252 : RTE_LOG_REGISTER_SUFFIX(cnxk_logtype_dpi, dpi, NOTICE);
      99         [ -  + ]:        252 : RTE_LOG_REGISTER_SUFFIX(cnxk_logtype_rep, rep, NOTICE);
     100         [ -  + ]:        252 : RTE_LOG_REGISTER_SUFFIX(cnxk_logtype_esw, esw, NOTICE);
     101         [ -  + ]:        252 : RTE_LOG_REGISTER_SUFFIX(cnxk_logtype_ree, ree, NOTICE);

Generated by: LCOV version 1.14