PLDM: System specific BIOS attributes
This commit adds code to populate BIOS attributes
based on the system type that is the platform.
The BIOS Jsons are installed based on the platform/
system type. The system type is populated by entity
manager.
TESTED on hardware across different platform/system type.
On systems where the compatible system interface is not
implemented or entity manager not running, then the BIOS
Jsons with default values are installed.
Signed-off-by: Sagar Srinivas <sagar.srinivas@ibm.com>
Change-Id: I179dad34537ed0d1fb263584d687a1b8cb64c335
diff --git a/pldmd/pldmd.cpp b/pldmd/pldmd.cpp
index 4df9f02..11c4ec2 100644
--- a/pldmd/pldmd.cpp
+++ b/pldmd/pldmd.cpp
@@ -57,6 +57,7 @@
#endif
#ifdef OEM_IBM
+#include "libpldmresponder/bios_oem_ibm.hpp"
#include "libpldmresponder/file_io.hpp"
#include "libpldmresponder/oem_ibm_handler.hpp"
#endif
@@ -256,6 +257,7 @@
sockfd, hostEID, instanceIdDb, &reqHandler);
}
std::unique_ptr<oem_platform::Handler> oemPlatformHandler{};
+ std::unique_ptr<oem_bios::Handler> oemBiosHandler{};
#ifdef OEM_IBM
std::unique_ptr<pldm::responder::CodeUpdate> codeUpdate =
@@ -268,10 +270,11 @@
invoker.registerHandler(PLDM_OEM, std::make_unique<oem_ibm::Handler>(
oemPlatformHandler.get(), sockfd,
hostEID, &instanceIdDb, &reqHandler));
+ oemBiosHandler = std::make_unique<oem::ibm::bios::Handler>(&dbusHandler);
#endif
- invoker.registerHandler(
- PLDM_BIOS, std::make_unique<bios::Handler>(sockfd, hostEID,
- &instanceIdDb, &reqHandler));
+
+ auto biosHandler = std::make_unique<bios::Handler>(
+ sockfd, hostEID, &instanceIdDb, &reqHandler, oemBiosHandler.get());
auto fruHandler = std::make_unique<fru::Handler>(
FRU_JSONS_DIR, FRU_MASTER_JSON, pdrRepo.get(), entityTree.get(),
bmcEntityTree.get());
@@ -287,8 +290,10 @@
dynamic_cast<pldm::responder::oem_ibm_platform::Handler*>(
oemPlatformHandler.get());
oemIbmPlatformHandler->setPlatformHandler(platformHandler.get());
+
#endif
+ invoker.registerHandler(PLDM_BIOS, std::move(biosHandler));
invoker.registerHandler(PLDM_PLATFORM, std::move(platformHandler));
invoker.registerHandler(
PLDM_BASE,