LCOV - code coverage report
Current view: top level - legacy/ascend950/unified_platform/ccu/ccu_device/ccu_component/ccu_channel - ccu_jetty_ctx_mgr_legacy.h (source / functions) Coverage Total Hit
Test: coverage.info Lines: 100.0 % 18 18
Test Date: 2026-08-18 17:47:01 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_legacy.h"
      19              : #include "ccu_wqebb_mgr_legacy.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()
      82           28 :         : pfeIdx(0),
      83           28 :           ioDieId{0},
      84           28 :           doorbellAddrType{0},
      85           28 :           tokenValueIsValid{0},
      86           28 :           cqeErrValue{0},
      87           28 :           tokenIdLow{0},
      88           28 :           tokenIdHigh{0},
      89           28 :           tokenValueLow(0),
      90           28 :           tokenValueHigh{0},
      91           28 :           sqeBasicBlockLeftShifts{0},
      92           28 :           oooCqeCnt{0},
      93           28 :           startWqeBasicBlockIdxLow{0},
      94           28 :           startWqeBasicBlockIdxHigh{0},
      95           28 :           doorbellSendState{0},
      96           28 :           rsvSixBits{0}
      97           28 :     {}
      98              : };
      99              : #pragma pack(pop)
     100              : 
     101              : LocalJettyCtxData
     102              : BuildJettyCtxData(const uint8_t dieId, const uint32_t pfeId, const JettyInfo& jettyInfo, const JettyCfg& jettyCfg);
     103              : 
     104              : void ConfigJettyCtxData(
     105              :     const int32_t devLogicId, const uint8_t dieId, const uint16_t startJettyCtxId,
     106              :     std::vector<LocalJettyCtxData>& jettyCtxData);
     107              : 
     108              : void DumpJettyCtxData(const LocalJettyCtxData& tmp);
     109              : 
     110              : class CcuJettyCtxMgr {
     111              : public:
     112              :     CcuJettyCtxMgr(const int32_t devLogicId, const uint8_t dieId, const uint32_t devPhyId);
     113              :     CcuJettyCtxMgr() = default;
     114           24 :     virtual ~CcuJettyCtxMgr() = default;
     115              : 
     116              :     virtual HcclResult
     117              :     Alloc(const uint32_t feId, const uint32_t jettyNum, const uint32_t sqSize, std::vector<JettyInfo>& jettyInfos)
     118              :         = 0;
     119              :     virtual HcclResult
     120              :     Config(const uint32_t feId, const std::vector<JettyInfo>& jettyInfos, const std::vector<JettyCfg>& jettyCfgs)
     121              :         = 0;
     122              :     virtual HcclResult Release(const uint32_t feId, const std::vector<JettyInfo>& jettyInfos) = 0;
     123              : 
     124              : protected:
     125              :     int32_t devLogicId{0};
     126              :     uint8_t dieId{0};
     127              :     uint32_t devPhyId{0};
     128              : 
     129              :     uint32_t jettySpecNum{0};
     130              :     uint64_t ccuResBaseVa{0};
     131              : 
     132              :     CcuWqeBBMgr wqeBBMgr{};
     133              :     CcuPfeMgr pfeMgr{};
     134              : 
     135              :     HcclResult TryAllocWqeBBResource(
     136              :         const uint32_t sqSize, const uint32_t jettyCtxStartId, const uint32_t taJettyStartId,
     137              :         const CcuJettyType jettyType, std::vector<JettyInfo>& jettyInfos);
     138              :     HcclResult ReleaseWqeBBResource(const std::vector<JettyInfo>& jettyInfos);
     139              :     HcclResult
     140              :     CheckIfJettyCfgsValid(const std::vector<JettyInfo>& jettyInfos, const std::vector<JettyCfg>& jettyCfgs) const;
     141              : };
     142              : 
     143              : }; // namespace Hccl
     144              : 
     145              : #endif
        

Generated by: LCOV version 2.0-1