From b08159eb20f2a0ccfe2d654f56a6fe2079bec98e Mon Sep 17 00:00:00 2001 From: Nick Bofferding Date: Thu, 8 Sep 2011 00:06:56 -0500 Subject: Implement support for generating the PNOR targeting image - Generate PNOR targeting image as part of the build process - Load it into SIMICS physical memory - Access image from targeting service at correct virtual address - Bridge fapi attributes to host boot attributes using direct macro - Support multidimensional arrays for simple attributes - Removed support for fake PNOR image Change-Id: I45d986d69397940a165c850d0db0fdeccd137d4d Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/341 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell Reviewed-by: A. Patrick Williams III Reviewed-by: CAMVAN T. NGUYEN Reviewed-by: Nicholas E. Bofferding --- src/usr/hwpf/plat/fapiPlatAttributeService.C | 100 +++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 src/usr/hwpf/plat/fapiPlatAttributeService.C (limited to 'src/usr/hwpf/plat/fapiPlatAttributeService.C') diff --git a/src/usr/hwpf/plat/fapiPlatAttributeService.C b/src/usr/hwpf/plat/fapiPlatAttributeService.C new file mode 100644 index 000000000..e72e637f5 --- /dev/null +++ b/src/usr/hwpf/plat/fapiPlatAttributeService.C @@ -0,0 +1,100 @@ +// IBM_PROLOG_BEGIN_TAG +// This is an automatically generated prolog. +// +// $Source: src/usr/hwpf/plat/fapiPlatAttributeService.C $ +// +// IBM CONFIDENTIAL +// +// COPYRIGHT International Business Machines Corp. 2011 +// +// p1 +// +// Object Code Only (OCO) source materials +// Licensed Internal Code Source Materials +// IBM HostBoot Licensed Internal Code +// +// The source code for this program is not published or other- +// wise divested of its trade secrets, irrespective of what has +// been deposited with the U.S. Copyright Office. +// +// Origin: 30 +// +// IBM_PROLOG_END + +/** + * @file fapiPlatAttributeService.C + * + * @brief Implements HWP attribute -> HB attribute bridging functions + * + * Note that platform code must provide the implementation. + */ + +//****************************************************************************** +// Includes +//****************************************************************************** + +#include +#include +#include +#include +#include + +//****************************************************************************** +// Implementation +//****************************************************************************** + +namespace fapi +{ + +namespace platAttrSvc +{ + +//****************************************************************************** +// fapi::platAttrSvc::getSystemTarget +//****************************************************************************** + +TARGETING::Target* getSystemTarget() +{ + TARGETING::Target* l_pTarget = NULL; + TARGETING::targetService().getTopLevelTarget(l_pTarget); + assert(l_pTarget); + return l_pTarget; +} + +//****************************************************************************** +// fapi::platAttrSvc::createAttrAccessError +//****************************************************************************** + +fapi::ReturnCode createAttrAccessError( + const TARGETING::ATTRIBUTE_ID i_targAttrId, + const fapi::AttributeId i_fapiAttrId, + const fapi::Target* const i_pFapiTarget) +{ + /* + * @errortype + * @moduleid fapi::MOD_PLAT_ATTR_SVC_CREATE_ATTR_ACCESS_ERROR + * @reasoncode fapi::RC_FAILED_TO_ACCESS_ATTRIBUTE + * @userdata1 Top 32 bits = platform attribute ID, lower 32 bits = + * FAPI attribute ID + * @userdata2 FAPI target type, or NULL if system target + * @devdesc Failed to get requested attribute. + * Possible causes: Invalid target, attribute not implemented, + * attribute not present on given target, target service not + * initialized + */ + errlHndl_t l_pError = new ERRORLOG::ErrlEntry( + ERRORLOG::ERRL_SEV_INFORMATIONAL, + fapi::MOD_PLAT_ATTR_SVC_CREATE_ATTR_ACCESS_ERROR, + fapi::RC_FAILED_TO_ACCESS_ATTRIBUTE, + (static_cast(i_targAttrId) << 32) + | (static_cast(i_fapiAttrId)), + i_pFapiTarget ? i_pFapiTarget->getType(): NULL); + + fapi::ReturnCode l_rc = fapi::FAPI_RC_PLAT_ERR_SEE_DATA; + l_rc.setPlatData(reinterpret_cast(l_pError)); + return l_rc; +} + +} // End platAttrSvc namespace + +} // End fapi namespace -- cgit v1.2.1