summaryrefslogtreecommitdiffstats
path: root/sbe/sbefw/sbecmdcntlinst.C
diff options
context:
space:
mode:
Diffstat (limited to 'sbe/sbefw/sbecmdcntlinst.C')
-rw-r--r--sbe/sbefw/sbecmdcntlinst.C204
1 files changed, 0 insertions, 204 deletions
diff --git a/sbe/sbefw/sbecmdcntlinst.C b/sbe/sbefw/sbecmdcntlinst.C
deleted file mode 100644
index ab138f69..00000000
--- a/sbe/sbefw/sbecmdcntlinst.C
+++ /dev/null
@@ -1,204 +0,0 @@
-/* IBM_PROLOG_BEGIN_TAG */
-/* This is an automatically generated prolog. */
-/* */
-/* $Source: sbe/sbefw/sbecmdcntlinst.C $ */
-/* */
-/* OpenPOWER sbe Project */
-/* */
-/* Contributors Listed Below - COPYRIGHT 2016 */
-/* [+] International Business Machines Corp. */
-/* */
-/* */
-/* Licensed under the Apache License, Version 2.0 (the "License"); */
-/* you may not use this file except in compliance with the License. */
-/* You may obtain a copy of the License at */
-/* */
-/* http://www.apache.org/licenses/LICENSE-2.0 */
-/* */
-/* Unless required by applicable law or agreed to in writing, software */
-/* distributed under the License is distributed on an "AS IS" BASIS, */
-/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
-/* implied. See the License for the specific language governing */
-/* permissions and limitations under the License. */
-/* */
-/* IBM_PROLOG_END_TAG */
-/*
- * @file: ppe/sbe/sbefw/sbecmdcntlinst.C
- *
- * @brief This file contains the SBE Control Instruction chipOps
- *
- */
-
-#include "sbecmdcntlinst.H"
-#include "sbefifo.H"
-#include "sbe_sp_intf.H"
-#include "sbetrace.H"
-#include "sbeFifoMsgUtils.H"
-
-#include "fapi2.H"
-#include "p9_thread_control.H"
-
-using namespace fapi2;
-
-// This is used to find out the array index in g_control_reg_map in
-// p9_thread_control.C
-static const uint8_t SINGLE_THREAD_BIT_MASK = 0x08;
-// TODO via RTC 152424
-// Currently all proecdures in core directory are in seeprom.
-// So we have to use function pointer to force a long call.
-p9_thread_control_FP_t threadCntlhwp = &p9_thread_control;
-
-/* @brief Map User Thread Command to Hwp ThreadCommands Enum */
-ThreadCommands getThreadCommand(const sbeCntlInstRegMsgHdr_t & i_req)
-{
- ThreadCommands l_cmd = PTC_CMD_START;
- switch(i_req.threadOps)
- {
- case THREAD_START_INS: l_cmd = PTC_CMD_START; break;
- case THREAD_STOP_INS: l_cmd = PTC_CMD_STOP; break;
- case THREAD_STEP_INS: l_cmd = PTC_CMD_STEP; break;
- case THREAD_SRESET_INS: l_cmd = PTC_CMD_SRESET; break;
- }
- return l_cmd;
-}
-
-/* @brief Map User Mode Command to Hwp Warn Check flag */
-inline bool getWarnCheckFlag(const sbeCntlInstRegMsgHdr_t & i_req)
-{
- bool l_warnCheck = false;
- if( EXIT_ON_FIRST_ERROR != i_req.mode )
- {
- l_warnCheck = true;
- }
- return l_warnCheck;
-}
-
-///////////////////////////////////////////////////////////////////////
-// @brief sbeCntlInst Sbe control instructions function
-//
-// @return RC from the underlying FIFO utility
-///////////////////////////////////////////////////////////////////////
-uint32_t sbeCntlInst(uint8_t *i_pArg)
-{
- #define SBE_FUNC " sbeCntlInst "
- SBE_ENTER(SBE_FUNC);
-
- uint32_t l_rc = SBE_SEC_OPERATION_SUCCESSFUL;
- ReturnCode l_fapiRc = FAPI2_RC_SUCCESS;
- sbeRespGenHdr_t l_respHdr;
- l_respHdr.init();
- sbeResponseFfdc_t l_ffdc;
-
- // Create the req struct for Control Instructions Chip-op
- sbeCntlInstRegMsgHdr_t l_req = {0};
-
- do
- {
- // Get the Req Struct Data sbeCntlInstRegMsgHdr_t from upstream Fifo
- uint32_t l_len2dequeue = sizeof(l_req) / sizeof(uint32_t);
- l_rc = sbeUpFifoDeq_mult (l_len2dequeue, (uint32_t *)&l_req, true);
-
- // If FIFO failure
- if ( SBE_SEC_OPERATION_SUCCESSFUL != l_rc )
- {
- // Let command processor routine to handle the RC.
- break;
- }
-
- SBE_INFO("mode[0x%04X] coreChipletId[0x%08X] threadNum[0x%04X] "
- "threadOps[0x%04X] ", l_req.mode, l_req.coreChipletId,
- l_req.threadNum, l_req.threadOps);
-
- // Validate Input Args
- if( false == l_req.validateInputArgs())
- {
- SBE_ERROR(SBE_FUNC "ValidateAndMapInputArgs failed");
- l_respHdr.setStatus( SBE_PRI_INVALID_DATA,
- SBE_SEC_GENERIC_FAILURE_IN_EXECUTION );
- break;
- }
-
- // Fetch HWP mapped values
- bool l_warnCheck = getWarnCheckFlag(l_req);
- ThreadCommands l_cmd = getThreadCommand(l_req);
-
- // Default assignment not required since it is assigned below
- uint8_t l_core, l_coreCntMax;
- uint8_t l_threadCnt, l_threadCntMax;
-
- l_req.processInputDataToIterate(l_core, l_coreCntMax,
- l_threadCnt, l_threadCntMax);
- fapi2::buffer<uint64_t> l_data64;
- uint64_t l_state;
- do
- {
- fapi2::Target<fapi2::TARGET_TYPE_CORE>
- l_coreTgt(plat_getTargetHandleByChipletNumber
- <fapi2::TARGET_TYPE_CORE>(l_core));
- if(!l_coreTgt.isFunctional())
- {
- continue;
- }
-
- uint8_t l_thread = l_threadCnt;
- do
- {
- // Call the Procedure
- l_fapiRc = threadCntlhwp(
- l_coreTgt,
- (SINGLE_THREAD_BIT_MASK >> l_thread),
- l_cmd, l_warnCheck,
- l_data64, l_state);
-
- if(l_fapiRc != FAPI2_RC_SUCCESS)
- {
- SBE_ERROR(SBE_FUNC "Failed for Core[%d] Thread [%d] "
- "Cmd[%d] Mode[%d]", l_core, l_thread, l_req.threadOps,
- l_req.mode);
- if(IGNORE_HW_ERRORS == l_req.mode)
- {
- // No need to delete the l_fapiRc handle,it will get
- // over-written
- SBE_INFO(SBE_FUNC "Continuing in case of HW Errors"
- " As user has passed to ignore errors.");
- continue;
- }
- else
- {
- SBE_ERROR(SBE_FUNC "Breaking out, since User has "
- "Selected the mode to exit on first error.");
- l_respHdr.setStatus(SBE_PRI_GENERIC_EXECUTION_FAILURE,
- SBE_SEC_GENERIC_FAILURE_IN_EXECUTION);
- l_ffdc.setRc(l_fapiRc);
- break;
- }
- }
- }while(++l_thread < l_threadCntMax);
-
- // If FapiRc from the inner loop (thread loop), just break here
- if ( l_fapiRc )
- {
- break; // From core while loop
- }
- }while(++l_core < l_coreCntMax);
-
- }while(0);
-
- // Create the Response to caller
- do
- {
- // If there was a FIFO error, will skip sending the response,
- // instead give the control back to the command processor thread
- if ( SBE_SEC_OPERATION_SUCCESSFUL != l_rc)
- {
- break;
- }
-
- l_rc = sbeDsSendRespHdr(l_respHdr, l_ffdc);
- }while(0);
-
- SBE_EXIT(SBE_FUNC);
- return l_rc;
- #undef SBE_FUNC
-}
-
OpenPOWER on IntegriCloud