diff options
Diffstat (limited to 'meta-openbmc-mods/meta-common/recipes-core/ipmi/intel-ipmi-oem/0006-Update-Product-ID-for-EEPROM-FRU-platforms.patch')
-rw-r--r-- | meta-openbmc-mods/meta-common/recipes-core/ipmi/intel-ipmi-oem/0006-Update-Product-ID-for-EEPROM-FRU-platforms.patch | 104 |
1 files changed, 57 insertions, 47 deletions
diff --git a/meta-openbmc-mods/meta-common/recipes-core/ipmi/intel-ipmi-oem/0006-Update-Product-ID-for-EEPROM-FRU-platforms.patch b/meta-openbmc-mods/meta-common/recipes-core/ipmi/intel-ipmi-oem/0006-Update-Product-ID-for-EEPROM-FRU-platforms.patch index 93dcc1c33..28b8f8a4e 100644 --- a/meta-openbmc-mods/meta-common/recipes-core/ipmi/intel-ipmi-oem/0006-Update-Product-ID-for-EEPROM-FRU-platforms.patch +++ b/meta-openbmc-mods/meta-common/recipes-core/ipmi/intel-ipmi-oem/0006-Update-Product-ID-for-EEPROM-FRU-platforms.patch @@ -1,4 +1,4 @@ -From a9899d878d49c5d37810f2d97a68ae9d1de1a390 Mon Sep 17 00:00:00 2001 +From e3324be962eae4f42d6262998b413e4b6e51991d Mon Sep 17 00:00:00 2001 From: Anoop S <anoopx.s@intel.com> Date: Fri, 2 Oct 2020 13:32:05 +0000 Subject: [PATCH] Update Product ID for EEPROM FRU platforms. @@ -32,12 +32,14 @@ Tested-by: Signed-off-by: Anoop S <anoopx.s@intel.com> Signed-off-by: Saravanan Palanisamy <saravanan.palanisamy@linux.intel.com> + +%% original patch: 0006-Update-Product-ID-for-EEPROM-FRU-platforms.patch --- - src/appcommands.cpp | 137 ++++++++++++++++++++++++++++++++++++++++++-- - 1 file changed, 131 insertions(+), 6 deletions(-) + src/appcommands.cpp | 142 ++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 136 insertions(+), 6 deletions(-) diff --git a/src/appcommands.cpp b/src/appcommands.cpp -index 10e3d13..d5b5c50 100644 +index 10e3d13..6e3df64 100644 --- a/src/appcommands.cpp +++ b/src/appcommands.cpp @@ -16,6 +16,7 @@ @@ -60,47 +62,8 @@ index 10e3d13..d5b5c50 100644 int initBMCDeviceState(ipmi::Context::ptr ctx) { -@@ -286,7 +292,6 @@ RspType<uint8_t, // Device ID - static bool devIdInitialized = false; - static bool bmcStateInitialized = false; - const char* filename = "/usr/share/ipmi-providers/dev_id.json"; -- const char* prodIdFilename = "/var/cache/private/prodID"; - if (!fwVerInitialized) - { - std::string versionString; -@@ -351,13 +356,13 @@ RspType<uint8_t, // Device ID - // boot time. Avoid using DBus to get the Product ID. The Product ID is - // stored in a non-volatile file now. The /usr/bin/checkFru.sh script, - // run during bootup, will populate the productIdFile. -- std::fstream prodIdFile(prodIdFilename); -+ std::fstream prodIdFile(prodIdFilename, std::ios::in); - if (prodIdFile.is_open()) - { -- std::string id = "0x00"; -- char* end; -- prodIdFile.getline(&id[0], id.size() + 1); -- devId.prodId = std::strtol(&id[0], &end, 0); -+ uint16_t id = 0x00; -+ // id will become 0xFFFF (Reserved) if prodIdFile has invalid data. -+ prodIdFile >> std::hex >> id; -+ devId.prodId = id; - devIdInitialized = true; - } - else -@@ -377,17 +382,137 @@ RspType<uint8_t, // Device ID - } - } - -+ // Update the productId, if required. -+ if (!devId.prodId && productId) -+ { -+ devId.prodId = productId; -+ baseBoardUpdatedSignal.reset(); -+ } - return ipmi::responseSuccess(devId.id, devId.revision, devId.fwMajor, - bmcDeviceBusy, devId.fwMinor, devId.ipmiVer, - devId.addnDevSupport, devId.manufId, - devId.prodId, devId.aux); +@@ -256,6 +262,118 @@ std::optional<MetaRevision> convertIntelVersion(std::string& s) + return std::nullopt; } +static void getProductId(const std::string& baseboardObjPath) @@ -215,8 +178,55 @@ index 10e3d13..d5b5c50 100644 + return; +} + - static void registerAPPFunctions(void) - { + RspType<uint8_t, // Device ID + uint8_t, // Device Revision + uint7_t, // Firmware Revision Major +@@ -286,7 +404,6 @@ RspType<uint8_t, // Device ID + static bool devIdInitialized = false; + static bool bmcStateInitialized = false; + const char* filename = "/usr/share/ipmi-providers/dev_id.json"; +- const char* prodIdFilename = "/var/cache/private/prodID"; + if (!fwVerInitialized) + { + std::string versionString; +@@ -351,13 +468,13 @@ RspType<uint8_t, // Device ID + // boot time. Avoid using DBus to get the Product ID. The Product ID is + // stored in a non-volatile file now. The /usr/bin/checkFru.sh script, + // run during bootup, will populate the productIdFile. +- std::fstream prodIdFile(prodIdFilename); ++ std::fstream prodIdFile(prodIdFilename, std::ios::in); + if (prodIdFile.is_open()) + { +- std::string id = "0x00"; +- char* end; +- prodIdFile.getline(&id[0], id.size() + 1); +- devId.prodId = std::strtol(&id[0], &end, 0); ++ uint16_t id = 0x00; ++ // id will become 0xFFFF (Reserved) if prodIdFile has invalid data. ++ prodIdFile >> std::hex >> id; ++ devId.prodId = id; + devIdInitialized = true; + } + else +@@ -377,6 +494,17 @@ RspType<uint8_t, // Device ID + } + } + ++ if (!devId.prodId) ++ { ++ baseBoardUpdatedSignal.reset(); ++ getProductIdFromBoard(); ++ } ++ // Update the productId, if required. ++ if (!devId.prodId && productId) ++ { ++ devId.prodId = productId; ++ baseBoardUpdatedSignal.reset(); ++ } + return ipmi::responseSuccess(devId.id, devId.revision, devId.fwMajor, + bmcDeviceBusy, devId.fwMinor, devId.ipmiVer, + devId.addnDevSupport, devId.manufId, +@@ -388,6 +516,8 @@ static void registerAPPFunctions(void) // <Get Device ID> registerHandler(prioOemBase, netFnApp, app::cmdGetDeviceId, Privilege::User, ipmiAppGetDeviceId); |