From f46a51570e9fb256e7a6c9e70d4e23790199d555 Mon Sep 17 00:00:00 2001 From: Benjamin Weisenbeck Date: Fri, 26 Jan 2018 10:36:27 -0600 Subject: [PATCH] PRD: Power Management Recovery Change-Id: I10b1fc4898b6a72331b27aedb8f80544e8a8c4fb RTC: 145749 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/52757 Tested-by: Jenkins Server Reviewed-by: Caleb N. Palmer Reviewed-by: Zane C. Shelley Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/52998 Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Tested-by: FSP CI Jenkins --- .../usr/diag/prdf/common/prdf_service_codes.H | 6 +- .../diag/prdf/common/plat/p9/p9_cumulus.rule | 2 +- .../diag/prdf/common/plat/p9/p9_nimbus.rule | 2 +- .../plat/p9/p9_proc_common_actions.rule | 5 + src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C | 38 +++++ src/usr/diag/prdf/plat/p9/prdfP9PmRecovery.C | 153 ++++++++++++++++++ src/usr/diag/prdf/plat/p9/prdfP9PmRecovery.H | 50 ++++++ .../diag/prdf/plat/p9/prdf_plat_p9_hb_only.mk | 64 ++++++++ src/usr/diag/prdf/plat/prdfPlatServices_rt.C | 36 ++++- src/usr/diag/prdf/plat/prdfPlatServices_rt.H | 18 ++- src/usr/diag/prdf/prdf_hb_only.mk | 6 +- src/usr/diag/prdf/runtime/makefile | 3 +- src/usr/diag/prdf/test/prdf_hb_common_test.mk | 4 +- 13 files changed, 379 insertions(+), 8 deletions(-) create mode 100644 src/usr/diag/prdf/plat/p9/prdfP9PmRecovery.C create mode 100644 src/usr/diag/prdf/plat/p9/prdfP9PmRecovery.H create mode 100644 src/usr/diag/prdf/plat/p9/prdf_plat_p9_hb_only.mk diff --git a/src/include/usr/diag/prdf/common/prdf_service_codes.H b/src/include/usr/diag/prdf/common/prdf_service_codes.H index 1db5f69ec88..b3d6c8e98f7 100755 --- a/src/include/usr/diag/prdf/common/prdf_service_codes.H +++ b/src/include/usr/diag/prdf/common/prdf_service_codes.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2012,2015 */ +/* Contributors Listed Below - COPYRIGHT 2012,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -67,6 +67,7 @@ enum ModuleId PRDF_SYNC_SVC = 0x0F, PRDF_CS_FIRDATA_READ = 0x10, PRDF_CS_FIRDATA_WRITE = 0x11, + PRDF_PM_RECOVERY_FFDC = 0x12, }; /******************************************************************************/ @@ -124,6 +125,9 @@ enum ReasonCode PRDF_INVALID_CONFIG = PRDF_COMP_ID | 0x82, PRDF_NULL_VALUE_RETURNED = PRDF_COMP_ID | 0x83, + // Extra FFDC errorlog linked to a PRD log + PRDF_EXTRA_FFDC = PRDF_COMP_ID | 0x90, + PRDF_LAST_REASONCODE = PRDF_COMP_ID | 0xFF, }; diff --git a/src/usr/diag/prdf/common/plat/p9/p9_cumulus.rule b/src/usr/diag/prdf/common/plat/p9/p9_cumulus.rule index 99421142aa7..f824df8b51c 100644 --- a/src/usr/diag/prdf/common/plat/p9/p9_cumulus.rule +++ b/src/usr/diag/prdf/common/plat/p9/p9_cumulus.rule @@ -2283,7 +2283,7 @@ group gOCCFIR filter singlebit, cs_root_cause /** OCCFIR[3] * STOP_RECOVERY_NOTIFY_PRD */ - (rOCCFIR, bit(3)) ? threshold_and_mask_self; + (rOCCFIR, bit(3)) ? pmRecovery; /** OCCFIR[4] * OCC_HB_ERROR diff --git a/src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule b/src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule index 8b610cb31dc..b76e4bbb504 100644 --- a/src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule +++ b/src/usr/diag/prdf/common/plat/p9/p9_nimbus.rule @@ -2342,7 +2342,7 @@ group gOCCFIR filter singlebit, cs_root_cause /** OCCFIR[3] * STOP_RECOVERY_NOTIFY_PRD */ - (rOCCFIR, bit(3)) ? threshold_and_mask_self; + (rOCCFIR, bit(3)) ? pmRecovery; /** OCCFIR[4] * OCC_HB_ERROR diff --git a/src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule b/src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule index 7a6359900d1..b31aa68a3a6 100644 --- a/src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule +++ b/src/usr/diag/prdf/common/plat/p9/p9_proc_common_actions.rule @@ -109,3 +109,8 @@ actionclass sbe_vital_attn funccall("handleSbeVital"); }; +actionclass pmRecovery +{ + funccall("PmRecovery"); + threshold1; +}; diff --git a/src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C b/src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C index c85a01cfb43..98c33238e46 100644 --- a/src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C +++ b/src/usr/diag/prdf/common/plat/p9/prdfP9Proc.C @@ -40,6 +40,10 @@ #include #endif +#ifdef __HOSTBOOT_RUNTIME +#include +#endif + // Platform includes using namespace TARGETING; @@ -439,6 +443,40 @@ PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, CheckForUnitCs ); //------------------------------------------------------------------------------ +/** + * @brief Recovery actions for a power management STOP failure. Collects FFDC, + * runtime deconfigures lost cores, and makes appropriate callouts as + * determined by the p9_pm_callout procedure. + * @param i_chip A P9 chip. + * @param io_sc step code data struct + * @return SUCCESS + */ +int32_t PmRecovery( ExtensibleChip * i_chip, + STEP_CODE_DATA_STRUCT & io_sc ) +{ + +#ifdef __HOSTBOOT_RUNTIME + + if ( pmRecovery(i_chip, io_sc) != SUCCESS ) + { + PRDF_ERR("[PmRecovery] failed for 0x%08x", i_chip->GetId()); + } + +#else + + PRDF_ERR( "[PmRecovery] not expected outside of HB runtime" ); + io_sc.service_data->SetCallout(LEVEL2_SUPPORT, MRU_HIGH); + io_sc.service_data->SetCallout(i_chip->getTrgt()); + +#endif + + return SUCCESS; +} +PRDF_PLUGIN_DEFINE_NS( p9_nimbus, Proc, PmRecovery ); +PRDF_PLUGIN_DEFINE_NS( p9_cumulus, Proc, PmRecovery ); + +//------------------------------------------------------------------------------ + } // end namespace Proc } // end namespace PRDF diff --git a/src/usr/diag/prdf/plat/p9/prdfP9PmRecovery.C b/src/usr/diag/prdf/plat/p9/prdfP9PmRecovery.C new file mode 100644 index 00000000000..0877f296852 --- /dev/null +++ b/src/usr/diag/prdf/plat/p9/prdfP9PmRecovery.C @@ -0,0 +1,153 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/diag/prdf/plat/p9/prdfP9PmRecovery.C $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2018 */ +/* [+] 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 */ + +#include +#include +#include +#include + +#include +#include + + +using namespace TARGETING; + +namespace PRDF +{ + +using namespace PlatServices; + +int32_t pmRecovery( ExtensibleChip * i_chip, STEP_CODE_DATA_STRUCT & io_sc ) +{ + #define PRDF_FUNC "[pmRecovery] " + int32_t o_rc = SUCCESS; + TargetHandle_t target = i_chip->getTrgt(); + + // p9_pm_callout HWP parameters + RasAction ra = PROC_CHIP_CALLOUT; + uint32_t deadCores = 0; + std::vector < StopErrLogSectn > ffdcList; + + do { + + o_rc = pmCallout( target, ra, deadCores, ffdcList ); + + if (o_rc != SUCCESS) + { + PRDF_ERR(PRDF_FUNC "pmCallout failed huid %x", getHuid(target)); + io_sc.service_data->SetCallout(LEVEL2_SUPPORT, MRU_HIGH); + io_sc.service_data->SetCallout(target); + break; + } + + PRDF_TRAC(PRDF_FUNC "lost cores vector %x", deadCores); + + // Get the Global Errorlog PLID and EID + errlHndl_t globalErrl = + ServiceGeneratorClass::ThisServiceGenerator().getErrl(); + uint32_t eid = globalErrl->eid(); + uint32_t plid = globalErrl->plid(); + + // Runtime deconfig lost cores + for ( uint32_t pos = 0; pos < MAX_EC_PER_PROC; ++pos ) + { + if ( deadCores & (0x80000000 >> pos) ) + { + // Get the core + TargetHandle_t coreTgt = getConnectedChild( target, TYPE_CORE, pos); + if (coreTgt == nullptr) + { + PRDF_ERR(PRDF_FUNC "Failed to get child core for huid %x " + "core pos %d", getHuid(target), pos); + continue; + } + + // Call Deconfig + errlHndl_t errl = nullptr; + errl = HWAS::theDeconfigGard().deconfigureTarget( *coreTgt, eid, + NULL, HWAS::DeconfigGard::FULLY_AT_RUNTIME ); + + if (errl) + { + PRDF_ERR( PRDF_FUNC "Deconfig failed on core %x", + getHuid(coreTgt)); + PRDF_COMMIT_ERRL( errl, ERRL_ACTION_REPORT ); + } + } + } + + // Make callout indicated by p9_pm_callout + switch (ra) { + case PROC_CHIP_CALLOUT: + PRDF_TRAC(PRDF_FUNC "HUID 0x%08x PROC_CHIP_CALLOUT", + getHuid(target)); + io_sc.service_data->SetCallout(target); + break; + default: + PRDF_TRAC(PRDF_FUNC "HUID 0x%08x Unexpected callout enum", + getHuid(target)); + io_sc.service_data->SetCallout(LEVEL2_SUPPORT, MRU_HIGH); + io_sc.service_data->SetCallout(target); + break; + } + + // Create errorlog to contain HWP FFDC + /*@ + * @errortype + * @reasoncode PRDF_EXTRA_FFDC + * @severity ERRL_SEV_INFORMATIONAL + * @moduleid PRDF_PM_RECOVERY_FFDC + * @userdata1 Proc HUID + * @userdata2 deadCores bit vector + * @devdesc An errorlog containing extra FFDC collected by the HWP + */ + errlHndl_t ffdcErrl = new ERRORLOG::ErrlEntry( + ERRORLOG::ERRL_SEV_INFORMATIONAL, + PRDF_PM_RECOVERY_FFDC, + PRDF_EXTRA_FFDC, + getHuid(target), + deadCores ); + + // Add FFDC sections + for ( auto & ffdcSctn : ffdcList ) + { + ffdcErrl->addFFDC(PRDF_COMP_ID, ffdcSctn.iv_pBufPtr, + ffdcSctn.iv_bufSize, 0, 0); + } + + // Commit + ffdcErrl->plid(plid); + ERRORLOG::errlCommit(ffdcErrl, PRDF_COMP_ID); + + } while (0); + + return o_rc; + + #undef PRDF_FUNC +} + + +} // end namespace PRDF + diff --git a/src/usr/diag/prdf/plat/p9/prdfP9PmRecovery.H b/src/usr/diag/prdf/plat/p9/prdfP9PmRecovery.H new file mode 100644 index 00000000000..a557a073398 --- /dev/null +++ b/src/usr/diag/prdf/plat/p9/prdfP9PmRecovery.H @@ -0,0 +1,50 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/diag/prdf/plat/p9/prdfP9PmRecovery.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2018 */ +/* [+] 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 prdfP9PmRecovery.H + * @brief Power management STOP failure recovery actions + */ + +#ifndef __prdfP9PmRecovery_H +#define __prdfP9PmRecovery_H + +// Framework includes +#include +#include +#include + +namespace PRDF +{ + +/** + * @brief Power management STOP failure recovery actions + * @param i_chip P9 extensible chip + * @param io_sc Step code data structure + * @param return SUCCESS/FAIL + */ +int32_t pmRecovery( ExtensibleChip * i_chip, STEP_CODE_DATA_STRUCT & io_sc ); + +} // end namespace PRDF + +#endif // __prdfP9PmRecovery_H diff --git a/src/usr/diag/prdf/plat/p9/prdf_plat_p9_hb_only.mk b/src/usr/diag/prdf/plat/p9/prdf_plat_p9_hb_only.mk new file mode 100644 index 00000000000..61d1fff9756 --- /dev/null +++ b/src/usr/diag/prdf/plat/p9/prdf_plat_p9_hb_only.mk @@ -0,0 +1,64 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/usr/diag/prdf/plat/p9/prdf_plat_p9_hb_only.mk $ +# +# OpenPOWER HostBoot Project +# +# Contributors Listed Below - COPYRIGHT 2016,2018 +# [+] 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 + +# NOTE: PRD_SRC_PATH and PRD_INC_PATH must be defined before including this file + +################################################################################ +# Paths common to both IPL and runtime +################################################################################ + +prd_vpath += ${PRD_SRC_PATH}/plat/p9 + +prd_incpath += ${PRD_SRC_PATH}/plat/p9 + +################################################################################ +# Hostboot only object files common to both IPL and runtime +################################################################################ + +# plat/p9/ (non-rule plugin related) + +# plat/p9/ (rule plugin related) + +################################################################################ +# Hostboot only object files (IPL only) +################################################################################ + +ifneq (${HOSTBOOT_RUNTIME},1) + +# plat/p9/ (non-rule plugin related) + +endif + +################################################################################ +# Hostboot only object files (runtime only) +################################################################################ + +ifeq (${HOSTBOOT_RUNTIME},1) + +# plat/p9/ (non-rule plugin related) +prd_obj += prdfP9PmRecovery.o + +endif + diff --git a/src/usr/diag/prdf/plat/prdfPlatServices_rt.C b/src/usr/diag/prdf/plat/prdfPlatServices_rt.C index b5d8636e7fe..6fb865a5706 100644 --- a/src/usr/diag/prdf/plat/prdfPlatServices_rt.C +++ b/src/usr/diag/prdf/plat/prdfPlatServices_rt.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016,2017 */ +/* Contributors Listed Below - COPYRIGHT 2016,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -521,6 +521,40 @@ int32_t l2LineDelete(TargetHandle_t i_exTgt, } +int32_t pmCallout( TargetHandle_t i_tgt, + RasAction& o_ra, + uint32_t o_deadCores, + std::vector < StopErrLogSectn >& o_ffdcList ) +{ + errlHndl_t err = nullptr; + fapi2::buffer deadCores; + + //Get homer image buffer + uint64_t l_homerPhysAddr = 0x0; + l_homerPhysAddr = i_tgt->getAttr(); + void* l_homerVAddr = HBPM::convertHomerPhysToVirt(i_tgt,l_homerPhysAddr); + + fapi2::Target fapiTrgt (i_tgt); + + FAPI_INVOKE_HWP( err, + p9_pm_callout, + l_homerVAddr, + fapiTrgt, + deadCores, + o_ffdcList, + o_ra ); + + if(nullptr != err) + { + PRDF_ERR( "[PlatServices::pmCallout] HUID: 0x%08x failed", + getHuid(i_tgt)); + PRDF_COMMIT_ERRL( err, ERRL_ACTION_REPORT ); + return FAIL; + } + + o_deadCores = (uint32_t) deadCores; + return SUCCESS; +} //------------------------------------------------------------------------------ } // end namespace PlatServices diff --git a/src/usr/diag/prdf/plat/prdfPlatServices_rt.H b/src/usr/diag/prdf/plat/prdfPlatServices_rt.H index 48b28e60d8a..2e811344bed 100644 --- a/src/usr/diag/prdf/plat/prdfPlatServices_rt.H +++ b/src/usr/diag/prdf/plat/prdfPlatServices_rt.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016,2017 */ +/* Contributors Listed Below - COPYRIGHT 2016,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -28,6 +28,7 @@ #include #include +#include namespace PRDF { @@ -136,6 +137,21 @@ int32_t l2LineDelete(TARGETING::TargetHandle_t i_exTgt, const p9_l2err_extract_err_data& i_l2_err_data); +/** + * @brief Calls p9_pm_callout HWP to collect FFDC and determine appropriate + * callouts for a STOP recovery malfunction alert. + * @param i_tgt P9 chip target + * @param o_ra enum indicating which type of callout should be made + * @param o_deadCores bit vector of dead cores + * @param o_ffdcList points to a list of STOP FFDC summary sub-sections + * @return non-SUCCESS for failure, SUCCESS otherwise + */ +int32_t pmCallout( TARGETING::TargetHandle_t i_tgt, + RasAction& o_ra, + uint32_t o_deadCores, + std::vector < StopErrLogSectn >& o_ffdcList ); + + } // end namespace PlatServices } // end namespace PRDF diff --git a/src/usr/diag/prdf/prdf_hb_only.mk b/src/usr/diag/prdf/prdf_hb_only.mk index e804d5e3a38..7926b8ece4f 100644 --- a/src/usr/diag/prdf/prdf_hb_only.mk +++ b/src/usr/diag/prdf/prdf_hb_only.mk @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2013,2017 +# Contributors Listed Below - COPYRIGHT 2013,2018 # [+] International Business Machines Corp. # # @@ -69,6 +69,8 @@ prd_incpath += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/cache/ prd_incpath += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/perv/ prd_incpath += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/nest/ prd_incpath += ${ROOTPATH}/src/import/chips/p9/procedures/utils/stopreg/ +prd_incpath += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/pm/ +prd_incpath += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/lib/ prd_incpath += ${ROOTPATH}/src/import/generic/memory/lib/utils/ prd_incpath += ${ROOTPATH}/src/import/chips/p9/utils/imageProcs/ prd_incpath += ${ROOTPATH}/src/import/chips/common/utils/imageProcs/ @@ -176,6 +178,7 @@ prd_obj_no_sim += p9_io_xbus_pdwn_lanes.o ifeq (${HOSTBOOT_RUNTIME},1) prd_vpath += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/cache/ prd_vpath += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/nest/ +prd_vpath += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/pm/ # This is really the only file we need, but all of the other files below are # required because of dependencies. prd_obj_no_sim += memdiags.o @@ -184,6 +187,7 @@ prd_obj_no_sim += p9_l2err_extract.o prd_obj_no_sim += p9_l3err_linedelete.o prd_obj_no_sim += p9_l3err_extract.o prd_obj_no_sim += p9_l2_flush.o +prd_obj_no_sim += p9_pm_callout.o prd_vpath += ${ROOTPATH}/src/import/chips/centaur/procedures/hwp/memory prd_obj_no_sim += p9c_mss_maint_cmds.o diff --git a/src/usr/diag/prdf/runtime/makefile b/src/usr/diag/prdf/runtime/makefile index dae903c214b..494d052bb33 100644 --- a/src/usr/diag/prdf/runtime/makefile +++ b/src/usr/diag/prdf/runtime/makefile @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2014,2016 +# Contributors Listed Below - COPYRIGHT 2014,2018 # [+] International Business Machines Corp. # # @@ -41,6 +41,7 @@ include ../common/plat/p9/prdf_plat_p9.mk include ../common/plat/cen/prdf_plat_cen.mk include ../common/plat/mem/prdf_plat_mem.mk include ../plat/mem/prdf_plat_mem_hb_only.mk +include ../plat/p9/prdf_plat_p9_hb_only.mk VPATH += ${prd_vpath} diff --git a/src/usr/diag/prdf/test/prdf_hb_common_test.mk b/src/usr/diag/prdf/test/prdf_hb_common_test.mk index 06b6ea14acb..d04755c3c8e 100755 --- a/src/usr/diag/prdf/test/prdf_hb_common_test.mk +++ b/src/usr/diag/prdf/test/prdf_hb_common_test.mk @@ -5,7 +5,7 @@ # # OpenPOWER HostBoot Project # -# Contributors Listed Below - COPYRIGHT 2012,2017 +# Contributors Listed Below - COPYRIGHT 2012,2018 # [+] International Business Machines Corp. # # @@ -64,6 +64,8 @@ EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/common/include/ EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/ffdc/ EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/memory EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/cache/ +EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/pm/ +EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/procedures/hwp/lib/ EXTRAINCDIR += ${ROOTPATH}/src/import/chips/p9/utils/imageProcs EXTRAINCDIR += ${ROOTPATH}/src/import/chips/common/utils/imageProcs EXTRAINCDIR += ${ROOTPATH}/src/import/hwpf/fapi2/include