summaryrefslogtreecommitdiffstats
path: root/src/usr/targeting/fakepnordata.H
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/targeting/fakepnordata.H')
-rw-r--r--src/usr/targeting/fakepnordata.H693
1 files changed, 0 insertions, 693 deletions
diff --git a/src/usr/targeting/fakepnordata.H b/src/usr/targeting/fakepnordata.H
deleted file mode 100644
index 4389cc105..000000000
--- a/src/usr/targeting/fakepnordata.H
+++ /dev/null
@@ -1,693 +0,0 @@
-// IBM_PROLOG_BEGIN_TAG
-// This is an automatically generated prolog.
-//
-// $Source: src/usr/targeting/fakepnordata.H $
-//
-// 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
-
-#ifndef TARG_FAKEPNORDATA_H
-#define TARG_FAKEPNORDATA_H
-
-/**
- * @file fakepnordata.H
- *
- * @brief Interface to generate targets/attributes and fake out PNOR
- */
-
-//******************************************************************************
-// Includes
-//******************************************************************************
-
-// STD
-#include <stdint.h>
-#include <stdlib.h>
-#include <vector>
-
-namespace TARGETING
-{
-
-/**
- * @brief Enum which describes where an attribute resides
- */
-enum LOCATION
-{
- PNOR, ///< Attribute resides in PNOR
- HEAP, ///< Attribute resides in heap memory, not backed to PNOR
-};
-
-/**
- * @brief Structure which holds attribute information for the PNOR targeting
- * image generator
- */
-struct AttrInfo
-{
- uint32_t size; ///< Size of attribute
- ATTRIBUTE_ID attrId; ///< Attribute ID
- LOCATION location; ///< Location where attribute resides
- const void* pData; ///< Address of attribute
-};
-
-/**
- * @brief Property class which maintains info about a property to serialize
- */
-template<ATTRIBUTE_ID A,LOCATION L>
-class Property
-{
- public:
-
- /**
- * @brief Map the attribute's type to something more intuitive
- */
- typedef typename AttributeTraits<A>::Type _Type;
-
- /**
- * @brief Build a property
- */
- Property()
- {
- info.size = sizeof(_Type);
- info.attrId = A;
- info.location = L;
- info.pData = &iv_data;
- iv_initialized = false;
- memset(&iv_data,0x00,sizeof(iv_data));
- }
-
- /**
- * @brief Push attribute info to the attribute array
- *
- * @param[out] o_info Array of attribute structures
- */
- void addAttrInfo(
- std::vector<AttrInfo>& o_info) const
- {
- if(info.location == PNOR)
- {
- assert(iv_initialized);
- }
- o_info.push_back(info);
- }
-
- /**
- * @brief Sets the attribute value
- *
- * @param[in] i_value Value of the attribute to set
- */
- void set(
- _Type const& i_value)
- {
- iv_data = i_value;
- iv_initialized = true;
- }
-
- /**
- * @brief Return size of the attribute
- *
- * @return uint32_t giving the size of the attribute in bytes
- */
- uint32_t size() const
- {
- return sizeof(iv_data);
- }
-
- /**
- * @brief Return attribute's corresponding attribute ID
- *
- * @return Attribute ID of the attribute
- */
- ATTRIBUTE_ID id() const
- {
- return info.attrId;
- }
-
- /**
- * @brief Return address of the attribute data
- *
- * @return Address of the attribute data
- */
- const _Type* data() const
- {
- return &iv_data;
- }
-
- /**
- * @brief Return location where attribute resides
- *
- * @return Location specifier
- */
- LOCATION location() const
- {
- return info.location;
- }
-
- public:
-
- AttrInfo info; ///< Attribute information
- _Type iv_data; ///< Attribute data
- bool iv_initialized; ///< Whether attribute was set or not
-};
-
-/**
- * @brief Base class describing attributes that all targets have.
- *
- * Note: will not repeat documentation for subclasses, since they act the same
- */
-class Base
-{
- public:
-
- /**
- * @brief Build the base object for attributes
- */
- Base()
- {
- }
-
- /**
- * @brief Populate the list with information on all the attributes
- *
- * @param[out] o_info List containing all the attribute information
- */
- void getAttrInfo(
- std::vector<AttrInfo>& o_info) const
- {
- iv_class.addAttrInfo(o_info);
- iv_type.addAttrInfo(o_info);
- iv_model.addAttrInfo(o_info);
- iv_physicalPath.addAttrInfo(o_info);
- iv_affinityPath.addAttrInfo(o_info);
- iv_interfaces.addAttrInfo(o_info);
- }
-
- public:
-
- Property<ATTR_CLASS,PNOR> iv_class;
- Property<ATTR_TYPE,PNOR> iv_type;
- Property<ATTR_MODEL,PNOR> iv_model;
- Property<ATTR_PHYS_PATH,PNOR> iv_physicalPath;
- Property<ATTR_AFFINITY_PATH,PNOR> iv_affinityPath;
- Property<ATTR_PRIMARY_CAPABILITIES,PNOR> iv_interfaces;
-};
-
-/**
- * @brief Class describing the data for all cards
- */
-class Card : public Base
-{
- public:
-
- Card()
- {
- iv_class.set(CLASS_CARD);
-
- PrimaryCapabilities l_capabilities = {0};
- iv_interfaces.set(l_capabilities);
- }
-
- void getAttrInfo(
- std::vector<AttrInfo>& o_info) const
- {
- Base::getAttrInfo(o_info);
- }
-};
-
-/**
- * @brief Class describing the data for all DCM cards
- */
-class CardScmPower8 : public Card
-{
- public:
-
- CardScmPower8()
- {
- iv_type.set(TYPE_SCM);
- iv_model.set(MODEL_POWER8);
- }
-
- void getAttrInfo(std::vector<AttrInfo>& o_info) const
- {
- Card::getAttrInfo(o_info);
- }
-};
-
-/**
- * @brief Class describing the data for the top level system
- */
-class SysSysPower8 : public Base
-{
- public:
-
- SysSysPower8()
- {
- iv_class.set(CLASS_SYS);
- iv_type.set(TYPE_SYS);
- iv_model.set(MODEL_POWER8);
-
- PrimaryCapabilities l_capabilities = {0};
- iv_interfaces.set(l_capabilities);
- }
-
- void getAttrInfo(std::vector<AttrInfo>& o_info) const
- {
- Base::getAttrInfo(o_info);
-
- iv_xscomBaseAddr.addAttrInfo(o_info);
- }
-
- Property<ATTR_XSCOM_BASE_ADDRESS,PNOR> iv_xscomBaseAddr;
-};
-
-/**
- * @brief Class describing the data for a chip
- */
-class Chip : public Base
-{
- public:
-
- Chip()
- {
- iv_class.set(CLASS_CHIP);
- }
-
- void getAttrInfo(std::vector<AttrInfo>& o_info) const
- {
- Base::getAttrInfo(o_info);
- }
-};
-
-/**
- * @brief Class describing the data for a node
- */
-class EncNodePower8 : public Base
-{
- public:
-
- EncNodePower8()
- {
- iv_class.set(CLASS_ENC);
- iv_type.set(TYPE_NODE);
- iv_model.set(MODEL_POWER8);
-
- PrimaryCapabilities l_capabilities = {0};
- iv_interfaces.set(l_capabilities);
- }
-
- void getAttrInfo(std::vector<AttrInfo>& o_info) const
- {
- Base::getAttrInfo(o_info);
- }
-};
-
-/**
- * @brief Class describing the data for the Salerno chip
- */
-class ProcChipSalerno : public Chip
-{
- public:
-
- ProcChipSalerno()
- {
- iv_type.set(TYPE_PROC);
- iv_model.set(MODEL_SALERNO);
-
- TARGETING::PrimaryCapabilities l_capabilities = {0};
- l_capabilities.supportsFsiScom = true;
- l_capabilities.supportsXscom = true;
- iv_interfaces.set(l_capabilities);
-
- ScomSwitches l_switches = {0};
- l_switches.useXscom = 1;
- iv_scomSwitches.set(l_switches);
-
- iv_dummyRw.set(0);
- }
-
- void getAttrInfo(std::vector<AttrInfo>& o_info) const
- {
- Chip::getAttrInfo(o_info);
-
- iv_dummyRw.addAttrInfo(o_info);
- iv_scomSwitches.addAttrInfo(o_info);
- iv_xscomChipInfo.addAttrInfo(o_info);
- }
-
- Property<ATTR_DUMMY_RW,PNOR> iv_dummyRw;
- Property<ATTR_SCOM_SWITCHES,HEAP> iv_scomSwitches;
- Property<ATTR_XSCOM_CHIP_INFO,PNOR> iv_xscomChipInfo;
-
-};
-
-/**
- * @brief Class describing the data for a logical entity
- */
-class Logical : public Base
-{
- public:
-
- Logical()
- {
- iv_class.set(CLASS_UNIT);
- }
-
- void getAttrInfo(std::vector<AttrInfo>& o_info) const
- {
- Base::getAttrInfo(o_info);
- }
-};
-
-/**
- * @brief Class describing the data for an EX unit
- */
-class UnitExSalerno : public Logical
-{
- public:
-
- UnitExSalerno()
- {
- iv_type.set(TYPE_EX);
- iv_model.set(MODEL_SALERNO);
-
- TARGETING::PrimaryCapabilities l_capabilities = {0};
- iv_interfaces.set(l_capabilities);
- }
-
- void getAttrInfo(std::vector<AttrInfo>& o_info) const
- {
- Logical::getAttrInfo(o_info);
- }
-};
-
-/**
- * @brief Class describing the data for a core unit
- */
-class UnitCoreSalerno : public Logical
-{
- public:
-
- UnitCoreSalerno()
- {
- iv_type.set(TYPE_CORE);
- iv_model.set(MODEL_SALERNO);
-
- TARGETING::PrimaryCapabilities l_capabilities = {0};
- iv_interfaces.set(l_capabilities);
- }
-
- void getAttrInfo(std::vector<AttrInfo>& o_info) const
- {
- Logical::getAttrInfo(o_info);
- }
-};
-
-/**
- * @brief Class describing the data for an L3 unit
- */
-class UnitL3Salerno : public Logical
-{
- public:
-
- UnitL3Salerno()
- {
- iv_type.set(TYPE_L3);
- iv_model.set(MODEL_SALERNO);
-
- TARGETING::PrimaryCapabilities l_capabilities = {0};
- iv_interfaces.set(l_capabilities);
- }
-
- void getAttrInfo(std::vector<AttrInfo>& o_info) const
- {
- Logical::getAttrInfo(o_info);
- }
-
-};
-
-/**
- * @brief Class describing the data for an L2 unit
- */
-class UnitL2Salerno : public Logical
-{
- public:
-
- UnitL2Salerno()
- {
- iv_type.set(TYPE_L2);
- iv_model.set(MODEL_SALERNO);
-
- TARGETING::PrimaryCapabilities l_capabilities = {0};
- iv_interfaces.set(l_capabilities);
- }
-
- void getAttrInfo(std::vector<AttrInfo>& o_info) const
- {
- Logical::getAttrInfo(o_info);
- }
-};
-
-/**
- * @brief Class describing the data for an MCA unit
- */
-class UnitMcsSalerno : public Logical
-{
- public:
-
- UnitMcsSalerno()
- {
- iv_type.set(TYPE_MCS);
- iv_model.set(MODEL_SALERNO);
-
- TARGETING::PrimaryCapabilities l_capabilities = {0};
- iv_interfaces.set(l_capabilities);
- }
-
- void getAttrInfo(std::vector<AttrInfo>& o_info) const
- {
- Logical::getAttrInfo(o_info);
- }
-
- Property<ATTR_SCOM_SWITCHES,HEAP> iv_scomSwitches;
-};
-
-/**
- * @brief Class describing the data for an MCA unit
- */
-class UnitMbaSalerno : public Logical
-{
- public:
-
- UnitMbaSalerno()
- {
- iv_type.set(TYPE_MBA);
- iv_model.set(MODEL_SALERNO);
-
- TARGETING::PrimaryCapabilities l_capabilities = {0};
- iv_interfaces.set(l_capabilities);
- }
-
- void getAttrInfo(std::vector<AttrInfo>& o_info) const
- {
- Logical::getAttrInfo(o_info);
- }
-};
-
-/**
- * @brief Class describing the data for the pervasive unit
- */
-class UnitPervasiveSalerno : public Logical
-{
- public:
-
- UnitPervasiveSalerno()
- {
- iv_type.set(TYPE_PERVASIVE);
- iv_model.set(MODEL_SALERNO);
-
- TARGETING::PrimaryCapabilities l_capabilities = {0};
- iv_interfaces.set(l_capabilities);
- }
-
- void getAttrInfo(std::vector<AttrInfo>& o_info) const
- {
- Logical::getAttrInfo(o_info);
- }
-
-};
-
-class UnitPciSalerno : public Logical
-{
- public:
-
- UnitPciSalerno()
- {
- iv_type.set(TYPE_PCI);
- iv_model.set(MODEL_SALERNO);
-
- TARGETING::PrimaryCapabilities l_capabilities = {0};
- iv_interfaces.set(l_capabilities);
- }
-
- void getAttrInfo(std::vector<AttrInfo>& o_info) const
- {
- Logical::getAttrInfo(o_info);
- }
-};
-
-class UnitPowerbusSalerno : public Logical
-{
- public:
-
- UnitPowerbusSalerno()
- {
- iv_type.set(TYPE_POWERBUS);
- iv_model.set(MODEL_SALERNO);
-
- TARGETING::PrimaryCapabilities l_capabilities = {0};
- iv_interfaces.set(l_capabilities);
- }
-
- void getAttrInfo(std::vector<AttrInfo>& o_info) const
- {
- Logical::getAttrInfo(o_info);
- }
-};
-
-class UnitMemPortSalerno : public Logical
-{
- public:
-
- UnitMemPortSalerno()
- {
- iv_type.set(TYPE_MEM_PORT);
- iv_model.set(MODEL_SALERNO);
-
- TARGETING::PrimaryCapabilities l_capabilities = {0};
- iv_interfaces.set(l_capabilities);
- }
-
- void getAttrInfo(std::vector<AttrInfo>& o_info) const
- {
- Logical::getAttrInfo(o_info);
- }
-};
-
-//******************************************************************************
-// PNOR Builder Service
-//******************************************************************************
-
-/**
- * @brief Class which builds fake PNOR image for bringup
- */
-class PnorBuilderService
-{
- public:
-
- /**
- * @brief Initial PNOR sizes
- */
- static const uint32_t PNOR_SIZE = 8000;
- static const uint32_t HEAP_SIZE = 8000;
-
- /**
- * @brief Constructs the PnorBuilderService
- */
- PnorBuilderService();
-
- /**
- * @brief Destructs the PnorBuilderService
- */
- ~PnorBuilderService();
-
- /**
- * @brief Returns pointer to the start of the heap section
- */
- uint8_t* heapBase() const;
-
- /**
- * @brief Returns pointer to the start of the PNOR section
- */
- uint8_t* pnorBase() const;
-
- /**
- * @brief Clears the PNOR section
- */
- void clearPnorSection();
-
- /**
- * @brief Clears the PNOR section
- */
- void clearHeapSection();
-
- /**
- * @brief Populates attributes valid attributes for a class/type/model
- * into the targeting image
- *
- * @param[in] i_pPnor On input and output, pointer to next valid
- * location to write to in PNOR
- * @param[in] i_attrInfo List of attributes to process
- * @param[in] o_pAttrNames Pointer to where the list was stored
- */
- void populateValidAttrIds(
- uint8_t*& io_pPnor,
- const std::vector<AttrInfo>& i_attrInfo,
- ATTRIBUTE_ID*& o_pAttrNames);
-
- /**
- * @brief Populates attributes into the targeting image
- *
- * @param[in] i_pAttrNames Pointer to array of valid attributes for
- * the class/type/model in question
- * @param[in/out] io_pPnor On both input and output, a pointer to the
- * next free position in PNOR to populate.
- * @param[in/out] io_pHeap On both input and output, a pointer to the
- * next free position on the heap to populate.
- * @param[out] o_targets List of targets to serialize
- * @param[in] i_attrInfo List of attribute infor structures
- */
- void populateAttrs(
- const ATTRIBUTE_ID* i_pAttrNames,
- uint8_t*& io_pPnor,
- uint8_t*& io_pHeap,
- std::vector< Target* >& o_targets,
- const std::vector<AttrInfo>& i_attrInfo);
-
- /**
- * @brief Builds the targeting image
- */
- void buildTargetingImage();
-
- /**
- * @brief Updates caller's pointer with the address of the targeting
- * layout
- *
- * @param[out] o_pTargetsArea Pointer to the address of the targeting
- * layout
- */
- void getTargetingImageBaseAddress(
- const void*& o_pTargetsArea);
-
- uint8_t* iv_pPnor;
- uint8_t* iv_pHeap;
-
-} PACKED;
-
-typedef Singleton<PnorBuilderService> thePnorBuilderService;
-
-} // End namespace TARGETING
-
-#endif // TARG_FAKEPNORDATA_H
OpenPOWER on IntegriCloud