LCOV - code coverage report
Current view: top level - legacy/ascend950/unified_platform/ccu/ccu_device/ccu_component/ccu_channel - ccu_jetty_ctx_mgr.h (source / functions) Coverage Total Hit
Test: coverage.info Lines: 100.0 % 6 6
Test Date: 2026-07-28 12:11:00 Functions: 66.7 % 3 2

            Line data    Source code
       1              : /**
       2              :  * Copyright (c) 2025 Huawei Technologies Co., Ltd.
       3              :  * This program is free software, you can redistribute it and/or modify it under the terms and conditions of
       4              :  * CANN Open Software License Agreement Version 2.0 (the "License").
       5              :  * Please refer to the License for details. You may not use this file except in compliance with the License.
       6              :  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
       7              :  * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
       8              :  * See LICENSE in the root of the software repository for the full text of the License.
       9              :  */
      10              : 
      11              : #ifndef HCCL_CCU_JETTY_CTX_MGR_H
      12              : #define HCCL_CCU_JETTY_CTX_MGR_H
      13              : 
      14              : #include <vector>
      15              : 
      16              : #include "hccl/hccl_types.h"
      17              : 
      18              : #include "ccu_pfe_mgr.h"
      19              : #include "ccu_wqebb_mgr.h"
      20              : #include "ccu_device_manager.h"
      21              : 
      22              : namespace Hccl {
      23              : 
      24              : constexpr uint8_t  DB_ADDR_TYPE = 1;
      25              : constexpr uint8_t  TOKEN_VALUE_IS_VALIDE = 1;
      26              : 
      27              : constexpr uint32_t MASK_TK_ID_LOW = 0x000000FF;
      28              : constexpr uint32_t MASK_TK_ID_HIGH = 0x00000FFF;
      29              : 
      30              : constexpr uint32_t MASK_TK_VALUE_LOW = 0x0000000F;
      31              : constexpr uint32_t MASK_TK_VALUE_MID = 0x0000FFFF;
      32              : constexpr uint32_t MASK_TK_VALUE_HIGH = 0x00000FFF;
      33              : 
      34              : constexpr uint32_t MASK_WQEBB_IDX_LOW = 0x0000000F;
      35              : constexpr uint32_t MASK_WQEBB_IDX_HIGH = 0x000000FF;
      36              : 
      37              : constexpr uint16_t CCU_HARDWARE_DEFAULT_VALUE = 0x0;
      38              : 
      39              : #pragma pack(push, 1)
      40              : struct LocalJettyCtxData {
      41              :     uint16_t doorbellAddr[4] = {0}; // jetty doorbell addr
      42              :     /********8 Bytes**********/
      43              : 
      44              :     uint16_t pfeIdx            : 4; // jetty relegation use PFE num.
      45              :     uint16_t ioDieId           : 1; // 0: locall jetty use IODIE0, 1: locall jetty use IODIE1.
      46              :     uint16_t doorbellAddrType  : 1; // doorbell addr type: 0:PA, 1:VA.
      47              :     uint16_t tokenValueIsValid : 1; // doorbell addr relate token value valid type: invalid(0), valid(1).
      48              :     uint16_t cqeErrValue       : 1; // v1 not used
      49              :     uint16_t tokenIdLow        : 8;
      50              :     /********10 Bytes**********/
      51              : 
      52              :     uint16_t tokenIdHigh   : 12;
      53              :     uint16_t tokenValueLow : 4;
      54              :     /********12 Bytes**********/
      55              : 
      56              :     uint16_t tokenValueMiddle{0};
      57              :     /********14 Bytes**********/
      58              : 
      59              :     uint16_t tokenValueHigh          : 12;
      60              :     // JFS/jetty SQE basic block  left shifts bit num, 1: SQBuffDepth = 2 ^ sqeBasicBlockLeftShifts, 4: SQ->16 WQEBB
      61              :     uint16_t sqeBasicBlockLeftShifts : 4;
      62              :     /********16 Bytes**********/
      63              : 
      64              :     uint16_t pi{0};    // ccu hardware maintain
      65              :     uint16_t ci{0};    // ccu hardware maintain
      66              :     uint16_t maxCi{0}; // ccu hardware maintain
      67              :     /********22 Bytes**********/
      68              : 
      69              :     uint16_t oooCqeCnt                : 12; // ccu hardware maintain
      70              :     uint16_t startWqeBasicBlockIdxLow : 4;
      71              :     /********24 Bytes**********/
      72              : 
      73              :     uint16_t startWqeBasicBlockIdxHigh : 8;
      74              :     uint16_t doorbellSendState         : 2; // ccu hardware maintain
      75              :     uint16_t rsvSixBits                : 6;
      76              :     /********26 Bytes**********/
      77              : 
      78              :     uint16_t rsvs[3]{0};
      79              :     /********32 Bytes**********/
      80              : 
      81           28 :     LocalJettyCtxData() : pfeIdx(0), ioDieId{0}, doorbellAddrType{0}, tokenValueIsValid{0},
      82           28 :         cqeErrValue{0}, tokenIdLow{0}, tokenIdHigh{0}, tokenValueLow(0), tokenValueHigh{0},
      83           28 :         sqeBasicBlockLeftShifts{0}, oooCqeCnt{0}, startWqeBasicBlockIdxLow{0}, startWqeBasicBlockIdxHigh{0},
      84           28 :         doorbellSendState{0}, rsvSixBits{0}
      85              :     {
      86           28 :     }
      87              : };
      88              : #pragma pack(pop)
      89              : 
      90              : LocalJettyCtxData BuildJettyCtxData(const uint8_t dieId, const uint32_t pfeId,
      91              :     const JettyInfo& jettyInfo, const JettyCfg& jettyCfg);
      92              : 
      93              : void ConfigJettyCtxData(const int32_t devLogicId, const uint8_t dieId,
      94              :     const uint16_t startJettyCtxId, std::vector<LocalJettyCtxData>& jettyCtxData);
      95              : 
      96              : void DumpJettyCtxData(const LocalJettyCtxData &tmp);
      97              : 
      98              : class CcuJettyCtxMgr {
      99              : public:
     100              :     CcuJettyCtxMgr(const int32_t devLogicId, const uint8_t dieId, const uint32_t devPhyId);
     101              :     CcuJettyCtxMgr() = default;
     102           24 :     virtual ~CcuJettyCtxMgr() = default;
     103              : 
     104              :     virtual HcclResult Alloc(const uint32_t feId, const uint32_t jettyNum, const uint32_t sqSize,
     105              :         std::vector<JettyInfo>& jettyInfos) = 0;
     106              :     virtual HcclResult Config(const uint32_t feId, const std::vector<JettyInfo> &jettyInfos,
     107              :         const std::vector<JettyCfg>& jettyCfgs) = 0;
     108              :     virtual HcclResult Release(const uint32_t feId, const std::vector<JettyInfo> &jettyInfos) = 0;
     109              : 
     110              : protected:
     111              :     int32_t  devLogicId{0};
     112              :     uint8_t  dieId{0};
     113              :     uint32_t devPhyId{0};
     114              : 
     115              :     uint32_t jettySpecNum{0};
     116              :     uint64_t ccuResBaseVa{0};
     117              : 
     118              :     CcuWqeBBMgr wqeBBMgr{};
     119              :     CcuPfeMgr   pfeMgr{};
     120              : 
     121              :     HcclResult TryAllocWqeBBResource(const uint32_t sqSize, const uint32_t jettyCtxStartId,
     122              :         const uint32_t taJettyStartId, const CcuJettyType jettyType,
     123              :         std::vector<JettyInfo> &jettyInfos);
     124              :     HcclResult ReleaseWqeBBResource(const std::vector<JettyInfo> &jettyInfos);
     125              :     HcclResult CheckIfJettyCfgsValid(const std::vector<JettyInfo> &jettyInfos,
     126              :     const std::vector<JettyCfg>& jettyCfgs) const;
     127              : };
     128              : 
     129              : }; // namespace Hccl
     130              : 
     131              : #endif
        

Generated by: LCOV version 2.0-1