summaryrefslogtreecommitdiff
path: root/services/smbios-mdrv2/src
diff options
context:
space:
mode:
Diffstat (limited to 'services/smbios-mdrv2/src')
-rw-r--r--services/smbios-mdrv2/src/cpu.cpp44
-rw-r--r--services/smbios-mdrv2/src/smbios_mdrv2_main.cpp3
-rw-r--r--services/smbios-mdrv2/src/system.cpp1
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);