summaryrefslogtreecommitdiff
path: root/meta-openbmc-mods/meta-common/recipes-phosphor/flash
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openbmc-mods/meta-common/recipes-phosphor/flash')
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0018-Fix-delete-image-by-ID-and-inhibit-removal-of-bmc_ac.patch (renamed from meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0015-Fix-delete-image-by-ID-and-inhibit-removal-of-bmc_ac.patch)98
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager_%.bbappend1
2 files changed, 61 insertions, 38 deletions
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0015-Fix-delete-image-by-ID-and-inhibit-removal-of-bmc_ac.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0018-Fix-delete-image-by-ID-and-inhibit-removal-of-bmc_ac.patch
index 54efbee8c..587421044 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0015-Fix-delete-image-by-ID-and-inhibit-removal-of-bmc_ac.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0018-Fix-delete-image-by-ID-and-inhibit-removal-of-bmc_ac.patch
@@ -1,13 +1,13 @@
-From f2dd5e13a0774d8683542798dd96979f9d7a6691 Mon Sep 17 00:00:00 2001
-From: Vernon Mauery <vernon.mauery@intel.com>
-Date: Tue, 29 Sep 2020 13:38:35 -0700
-Subject: [PATCH] Fix delete image by ID and inhibit removal of bmc_active
+From 19661c1173d9d82dfbb879f8cc89c05a0883dffa Mon Sep 17 00:00:00 2001
+From: AppaRao Puli <apparao.puli@linux.intel.com>
+Date: Wed, 21 Apr 2021 21:16:47 +0000
+Subject: [PATCH] Fix delete image by ID and inhibit removal of bmc_active
Delete image by ID was broken because when hitting the delete dbus
interface, it recalculated the ID from the parent version, which then
-does not match because of the random number addition that was added to
-the ID when the parent interface was created. This saves away the parent
-interface ID and recalls it rather than recalculating it.
+does not match because of the random number addition that was added
+to the ID when the parent interface was created. This saves away the
+parent interface ID and recalls it rather than recalculating it.
Also, there was a logic error in deleting images that would delete the
active BMC image. This fixes up that error.
@@ -17,36 +17,51 @@ Tested: run multiple back-to back updates and see that when the fwupd
deleted and that the bmc_active interface is not deleted.
Signed-off-by: Vernon Mauery <vernon.mauery@intel.com>
+Signed-off-by: AppaRao Puli <apparao.puli@linux.intel.com>
---
- item_updater.cpp | 17 +++++++++++------
+ image_manager.cpp | 2 +-
+ item_updater.cpp | 20 +++++++++++++-------
pfr_image_manager.cpp | 2 +-
version.cpp | 2 +-
version.hpp | 19 +++++++++++++++----
- 4 files changed, 28 insertions(+), 12 deletions(-)
+ 5 files changed, 31 insertions(+), 14 deletions(-)
+diff --git a/image_manager.cpp b/image_manager.cpp
+index 4be357f..311a63f 100644
+--- a/image_manager.cpp
++++ b/image_manager.cpp
+@@ -219,7 +219,7 @@ int Manager::processImage(const std::string& tarFilePath)
+ {
+ // Create Version object
+ auto versionPtr = std::make_unique<Version>(
+- bus, objPath, version, purpose, extendedVersion,
++ bus, objPath, id, version, purpose, extendedVersion,
+ imageDirPath.string(),
+ std::bind(&Manager::erase, this, std::placeholders::_1));
+ versionPtr->deleteObject =
diff --git a/item_updater.cpp b/item_updater.cpp
-index db255d6..90970d3 100644
+index 6efd519..6685bf5 100644
--- a/item_updater.cpp
+++ b/item_updater.cpp
-@@ -133,7 +133,7 @@ void ItemUpdater::createActivation(sdbusplus::message::message& msg)
+@@ -145,7 +145,7 @@ void ItemUpdater::createActivation(sdbusplus::message::message& msg)
activationState, associations)));
auto versionPtr = std::make_unique<VersionClass>(
-- bus, path, version, purpose, filePath,
-+ bus, path, versionId, version, purpose, filePath,
+- bus, path, version, purpose, extendedVersion, filePath,
++ bus, path, versionId, version, purpose, extendedVersion, filePath,
std::bind(&ItemUpdater::erase, this, std::placeholders::_1));
versionPtr->deleteObject =
std::make_unique<phosphor::software::manager::Delete>(bus, path,
-@@ -247,7 +247,7 @@ void ItemUpdater::processBMCImage()
+@@ -263,7 +263,7 @@ void ItemUpdater::processBMCImage()
// Create Version instance for this version.
auto versionPtr = std::make_unique<VersionClass>(
-- bus, path, version, purpose, "",
-+ bus, path, id, version, purpose, "",
+- bus, path, version, purpose, extendedVersion, "",
++ bus, path, id, version, purpose, extendedVersion, "",
std::bind(&ItemUpdater::erase, this, std::placeholders::_1));
auto isVersionFunctional = versionPtr->isFunctional();
if (!isVersionFunctional)
-@@ -322,11 +322,11 @@ void ItemUpdater::erase(std::string entryId)
+@@ -338,11 +338,11 @@ void ItemUpdater::erase(std::string entryId)
auto it = versions.find(entryId);
if (it != versions.end())
{
@@ -62,7 +77,7 @@ index db255d6..90970d3 100644
return;
}
}
-@@ -669,6 +669,11 @@ void ItemUpdater::freeSpace(Activation& caller)
+@@ -681,6 +681,12 @@ void ItemUpdater::freeSpace(Activation& caller)
std::size_t count = 0;
for (const auto& iter : activations)
{
@@ -71,27 +86,37 @@ index db255d6..90970d3 100644
+ // don't bother with function versions
+ continue;
+ }
++
if ((iter.second.get()->activation() ==
server::Activation::Activations::Active) ||
(iter.second.get()->activation() ==
+@@ -775,7 +781,7 @@ void ItemUpdater::createBIOSObject()
+ // Do nothing;
+ };
+ biosVersion = std::make_unique<VersionClass>(
+- bus, path, version, VersionPurpose::Host, "", "",
++ bus, path, versionId, version, VersionPurpose::Host, "", "",
+ std::bind(dummyErase, std::placeholders::_1));
+ biosVersion->deleteObject =
+ std::make_unique<phosphor::software::manager::Delete>(bus, path,
diff --git a/pfr_image_manager.cpp b/pfr_image_manager.cpp
-index 145237e..0c6c3d8 100644
+index 55ad21f..e2dcc80 100644
--- a/pfr_image_manager.cpp
+++ b/pfr_image_manager.cpp
-@@ -308,7 +308,7 @@ int Manager::processImage(const std::string& imgFilePath)
+@@ -399,7 +399,7 @@ int Manager::processImage(const std::string& imgFilePath)
std::string objPath = std::string{SOFTWARE_OBJPATH} + '/' + id;
auto versionPtr = std::make_unique<Version>(
-- bus, objPath, ver, purpose, imageDirPath.string(),
-+ bus, objPath, id, ver, purpose, imageDirPath.string(),
+- bus, objPath, ver, purpose, extVer, imageDirPath.string(),
++ bus, objPath, id, ver, purpose, extVer, imageDirPath.string(),
std::bind(&Manager::erase, this, std::placeholders::_1));
versionPtr->deleteObject =
std::make_unique<phosphor::software::manager::Delete>(bus, objPath,
diff --git a/version.cpp b/version.cpp
-index 18f3f4f..e6fd481 100644
+index 04f40c4..44ef571 100644
--- a/version.cpp
+++ b/version.cpp
-@@ -182,7 +182,7 @@ void Delete::delete_()
+@@ -206,7 +206,7 @@ void Delete::delete_()
{
if (parent.eraseCallback)
{
@@ -101,30 +126,26 @@ index 18f3f4f..e6fd481 100644
}
diff --git a/version.hpp b/version.hpp
-index 9cf76da..ae70ea8 100644
+index 8a68cb5..afc589c 100644
--- a/version.hpp
+++ b/version.hpp
-@@ -74,14 +74,15 @@ class Version : public VersionInherit
+@@ -77,11 +77,11 @@ class Version : public VersionInherit
* @param[in] callback - The eraseFunc callback
*/
Version(sdbusplus::bus::bus& bus, const std::string& objPath,
- const std::string& versionString, VersionPurpose versionPurpose,
-- const std::string& filePath, eraseFunc callback) :
+- const std::string& extVersion, const std::string& filePath,
+- eraseFunc callback) :
+ const std::string& extId, const std::string& versionString,
-+ VersionPurpose versionPurpose, const std::string& filePath,
-+ eraseFunc callback) :
++ VersionPurpose versionPurpose, const std::string& extVersion,
++ const std::string& filePath, eraseFunc callback) :
VersionInherit(bus, (objPath).c_str(), true),
- eraseCallback(callback), versionStr(versionString)
-+ eraseCallback(callback), extId(extId), versionStr(versionString)
++ eraseCallback(callback), versionStr(versionString), extId(extId)
{
// Set properties.
- purpose(versionPurpose);
-- version(versionString);
-+ version(extId);
- path(filePath);
- // Emit deferred signal.
- emit_object_added();
-@@ -134,6 +135,15 @@ class Version : public VersionInherit
+ extendedVersion(extVersion);
+@@ -150,6 +150,15 @@ class Version : public VersionInherit
*/
bool isFunctional();
@@ -140,10 +161,11 @@ index 9cf76da..ae70ea8 100644
/** @brief Persistent Delete D-Bus object */
std::unique_ptr<Delete> deleteObject;
-@@ -143,6 +153,7 @@ class Version : public VersionInherit
+@@ -159,6 +168,8 @@ class Version : public VersionInherit
private:
/** @brief This Version's version string */
const std::string versionStr;
++ /** @brief This is extended version string */
+ const std::string extId;
};
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager_%.bbappend
index c71beebad..63e0aff25 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager_%.bbappend
@@ -24,6 +24,7 @@ SRC_URI_PFR = " \
file://0014-PFR-image-verification.patch \
file://0016-Process-PLDM-image-type.patch \
file://0017-Fix-build-error.patch \
+ file://0018-Fix-delete-image-by-ID-and-inhibit-removal-of-bmc_ac.patch \
"
SRC_URI += "${@bb.utils.contains('IMAGE_FSTYPES', 'intel-pfr', SRC_URI_PFR, '', d)}"