diff options
Diffstat (limited to 'services/smbios-mdrv2/src')
-rw-r--r-- | services/smbios-mdrv2/src/cpu.cpp | 44 | ||||
-rw-r--r-- | services/smbios-mdrv2/src/smbios_mdrv2_main.cpp | 3 | ||||
-rw-r--r-- | services/smbios-mdrv2/src/system.cpp | 1 |
3 files changed, 43 insertions, 5 deletions
diff --git a/services/smbios-mdrv2/src/cpu.cpp b/services/smbios-mdrv2/src/cpu.cpp index cda96da..f7681c9 100644 --- a/services/smbios-mdrv2/src/cpu.cpp +++ b/services/smbios-mdrv2/src/cpu.cpp @@ -16,6 +16,7 @@ #include "cpu.hpp" +#include <iostream> #include <map> namespace phosphor @@ -82,13 +83,13 @@ void Cpu::cpuManufacturer(const uint8_t positionNum, const uint8_t structLen, { std::string result = positionToString(positionNum, structLen, dataIn); - processorManufacturer(result); + manufacturer(result); } -std::string Cpu::processorManufacturer(std::string value) +std::string Cpu::manufacturer(std::string value) { - return sdbusplus::xyz::openbmc_project::Inventory::Item::server::Cpu:: - processorManufacturer(value); + return sdbusplus::xyz::openbmc_project::Inventory::Decorator::server:: + Asset::manufacturer(value); } uint32_t Cpu::processorId(uint32_t value) @@ -152,6 +153,39 @@ uint16_t Cpu::processorThreadCount(uint16_t value) processorThreadCount(value); } +static constexpr const uint8_t populateMask = 1 << 6; +static constexpr const uint8_t statusMask = 0x07; +void Cpu::cpuStatus(uint8_t value) +{ + if (!(value & populateMask)) + { + present(false); + functional(false); + return; + } + present(true); + if ((value & statusMask) == 1) + { + functional(true); + } + else + { + functional(false); + } +} + +bool Cpu::present(bool value) +{ + return sdbusplus::xyz::openbmc_project::Inventory::server::Item::present( + value); +} + +bool Cpu::functional(bool value) +{ + return sdbusplus::xyz::openbmc_project::State::Decorator::server:: + OperationalStatus::functional(value); +} + static constexpr uint8_t maxOldVersionCount = 0xff; void Cpu::processorInfoUpdate(void) { @@ -207,6 +241,8 @@ void Cpu::processorInfoUpdate(void) } cpuCharacteristics(cpuInfo->characteristics); // offset 26h + + cpuStatus(cpuInfo->status); } } // namespace smbios diff --git a/services/smbios-mdrv2/src/smbios_mdrv2_main.cpp b/services/smbios-mdrv2/src/smbios_mdrv2_main.cpp index 7e205ee..5688dfc 100644 --- a/services/smbios-mdrv2/src/smbios_mdrv2_main.cpp +++ b/services/smbios-mdrv2/src/smbios_mdrv2_main.cpp @@ -26,7 +26,8 @@ int main(void) sd_event *events = nullptr; sd_event_default(&events); sdbusplus::bus::bus bus = sdbusplus::bus::new_default(); - sdbusplus::server::manager::manager objManager(bus, "/xyz/openbmc_project"); + sdbusplus::server::manager::manager objManager( + bus, "/xyz/openbmc_project/inventory"); bus.attach_event(events, SD_EVENT_PRIORITY_NORMAL); bus.request_name("xyz.openbmc_project.Smbios.MDR_V2"); diff --git a/services/smbios-mdrv2/src/system.cpp b/services/smbios-mdrv2/src/system.cpp index 23f6f68..8cdcbe3 100644 --- a/services/smbios-mdrv2/src/system.cpp +++ b/services/smbios-mdrv2/src/system.cpp @@ -40,6 +40,7 @@ std::string System::uUID(std::string value) stream << std::setw(4) << systemInfo->uUID.timeMid; stream << "-"; stream << std::setw(4) << systemInfo->uUID.timeHiAndVer; + stream << "-"; stream << std::setw(2) << static_cast<int>(systemInfo->uUID.clockSeqHi); stream << std::setw(2) << static_cast<int>(systemInfo->uUID.clockSeqLow); |