dbus-sensors: remove 0008-psusensor-avoid-crash patch
As per the author of the patch
0008-psusensor-avoid-crash-by-activate-sensor-twice, the patch will not
be maintained and merged upstream. Also few platforms faced coredump
because of the patch. The 0007 patch is partially covering this and the
rest of the part is not needed. Hence it is okay to remove this patch.
Tested: Tested on 3 different platforms and no coredump for psusensor
Fusion-Link:
Platform5: https://fusion2.corp.google.com/ce435e97-a36b-3022-a186-8f27b8186147
Platform11: https://fusion2.corp.google.com/6459491e-07f8-3093-9d88-33cfebf45692
Platform17: https://fusion2.corp.google.com/0b9b4201-1688-34f6-a534-290e52eb78aa
Platform15: Install passed but test failed due to verification - b/401268532
Google-Bug-Id: 388581787
Google-Bug-Id: 388847679
Google-Bug-Id: 397554608
Google-Bug-Id: 395728936
Change-Id: I9452f42b80b29ed82d8e0f74601142fa0196d128
Signed-off-by: Munawar Hussain <munawarhussain@google.com>
diff --git a/recipes-phosphor/sensors/dbus-sensors/0008-psusensor-avoid-crash-by-activate-sensor-twice.patch b/recipes-phosphor/sensors/dbus-sensors/0008-psusensor-avoid-crash-by-activate-sensor-twice.patch
deleted file mode 100644
index 502d35c..0000000
--- a/recipes-phosphor/sensors/dbus-sensors/0008-psusensor-avoid-crash-by-activate-sensor-twice.patch
+++ /dev/null
@@ -1,267 +0,0 @@
-From bb701ef466e3d618c60e7f193e94a539a7bb730b Mon Sep 17 00:00:00 2001
-From: Peter Yin <peter.yin@quantatw.com>
-Date: Tue, 25 Jun 2024 14:57:08 +0800
-Subject: [PATCH] psusensor: avoid crash by activate sensor twice
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Sensor should just only activate or deactivate when power state change.
-
-Simplify powerStateChanged(), just do "sensor->activate()" instead of
-calling "createSensors()".
-
-Also add check in activate(), just return if sensor already activated.
-
-Tested result:
-Do a host power cycle and wait until ostate change to "Standby",
-psusensor is not crushing and PID remain same.
-```
-root@harma:~# systemctl status xyz.openbmc_project.psusensor
-● xyz.openbmc_project.psusensor.service - PSU Sensor
- Loaded: loaded (/usr/lib/systemd/system/xyz.openbmc_project.psusensor.service; enabled; preset: enabled)
- Drop-In: /usr/lib/systemd/system/xyz.openbmc_project.psusensor.service.d
- └─psusensor-wait-host-state-ready.conf
- Active: active (running) since Mon 2024-02-26 21:42:47 PST; 1min 10s ago
- Main PID: 13355 (psusensor)
- CPU: 8.344s
- CGroup: /system.slice/xyz.openbmc_project.psusensor.service
- └─13355 /usr/bin/psusensor
-
-Feb 26 21:43:54 harma psusensor[13355]: PSUSubEvent asserted by /sys/class/hwmon/hwmon25/in2_alarm
-Feb 26 21:43:54 harma psusensor[13355]: Failure assert
-Feb 26 21:43:55 harma psusensor[13355]: MB_DIMM_A10_TEMP_C read failed
-Feb 26 21:43:55 harma psusensor[13355]: MB_DIMM_A10_PWR_W read failed
-Feb 26 21:43:55 harma psusensor[13355]: Failure deassert
-Feb 26 21:43:56 harma psusensor[13355]: MB_DIMM_A10_TEMP_C read failed
-Feb 26 21:43:56 harma psusensor[13355]: MB_DIMM_A10_PWR_W read failed
-Feb 26 21:43:56 harma psusensor[13355]: PSUSubEvent asserted by /sys/class/hwmon/hwmon26/in2_alarm
-Feb 26 21:43:56 harma psusensor[13355]: Failure assert
-Feb 26 21:43:57 harma psusensor[13355]: MB_DIMM_A10_TEMP_C read failed
-root@harma:~#
-root@harma:~# obmcutil poweroff
-root@harma:~# sleep 10
-root@harma:~# obmcutil poweron
-root@harma:~# sleep 60
-root@harma:~# obmcutil osstate
-OperatingSystemState: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.Standby
-root@harma:~#
-root@harma:~# systemctl status xyz.openbmc_project.psusensor
-● xyz.openbmc_project.psusensor.service - PSU Sensor
- Loaded: loaded (/usr/lib/systemd/system/xyz.openbmc_project.psusensor.service; enabled; preset: enabled)
- Drop-In: /usr/lib/systemd/system/xyz.openbmc_project.psusensor.service.d
- └─psusensor-wait-host-state-ready.conf
- Active: active (running) since Mon 2024-02-26 21:42:47 PST; 3min 41s ago
- Main PID: 13355 (psusensor)
- CPU: 22.802s
- CGroup: /system.slice/xyz.openbmc_project.psusensor.service
- └─13355 /usr/bin/psusensor
-
-Feb 26 21:46:25 harma psusensor[13355]: MB_DIMM_A10_PWR_W read failed
-Feb 26 21:46:26 harma psusensor[13355]: PSUSubEvent asserted by /sys/class/hwmon/hwmon34/in2_alarm
-Feb 26 21:46:26 harma psusensor[13355]: Failure assert
-Feb 26 21:46:26 harma psusensor[13355]: MB_DIMM_A10_TEMP_C read failed
-Feb 26 21:46:26 harma psusensor[13355]: MB_DIMM_A10_PWR_W read failed
-Feb 26 21:46:26 harma psusensor[13355]: Failure deassert
-Feb 26 21:46:27 harma psusensor[13355]: MB_DIMM_A10_TEMP_C read failed
-Feb 26 21:46:27 harma psusensor[13355]: MB_DIMM_A10_PWR_W read failed
-Feb 26 21:46:27 harma psusensor[13355]: PSUSubEvent asserted by /sys/class/hwmon/hwmon25/in2_alarm
-Feb 26 21:46:27 harma psusensor[13355]: Failure assert
-```
-
-Change-Id: I3fb55c0f10ad26472470bb783ea5df5498a4c1a8
-Signed-off-by: Potin Lai <potin.lai@quantatw.com>
-Signed-off-by: Peter Yin <peter.yin@quantatw.com>
-(cherry picked from commit 18e5cbdba545fbec50214f47c48c4c8da87dae45)
-Patch Tracking Bug: b/388581787
-Upstream info / review: https://gerrit.openbmc.org/c/openbmc/dbus-sensors/+/69162
-Upstream-Status: Submitted
-Justification: In review upstream
-Signed-off-by: Benjamin Fair <benjaminfair@google.com>
----
- src/PSUSensor.cpp | 8 ++----
- src/PSUSensor.hpp | 3 +--
- src/PSUSensorMain.cpp | 61 ++++++++++++++++++++-----------------------
- 3 files changed, 31 insertions(+), 41 deletions(-)
-
-diff --git a/src/PSUSensor.cpp b/src/PSUSensor.cpp
-index 50b8d42..c3ec8de 100644
---- a/src/PSUSensor.cpp
-+++ b/src/PSUSensor.cpp
-@@ -114,16 +114,14 @@ bool PSUSensor::isActive()
- return inputDev.is_open();
- }
-
--void PSUSensor::activate(const std::string& newPath,
-- const std::shared_ptr<I2CDevice>& newI2CDevice)
-+void PSUSensor::activate()
- {
- if (isActive())
- {
- // Avoid activating an active sensor
- return;
- }
-- path = newPath;
-- i2cDevice = newI2CDevice;
-+
- inputDev.open(path, boost::asio::random_access_file::read_only);
- markAvailable(true);
- setupRead();
-@@ -135,8 +133,6 @@ void PSUSensor::deactivate()
- // close the input dev to cancel async operations
- inputDev.close();
- waitTimer.cancel();
-- i2cDevice = nullptr;
-- path = "";
- }
-
- void PSUSensor::setupRead(void)
-diff --git a/src/PSUSensor.hpp b/src/PSUSensor.hpp
-index b49235f..5721ada 100644
---- a/src/PSUSensor.hpp
-+++ b/src/PSUSensor.hpp
-@@ -28,8 +28,7 @@ class PSUSensor : public Sensor, public std::enable_shared_from_this<PSUSensor>
- const std::shared_ptr<I2CDevice>& i2cDevice);
- ~PSUSensor() override;
- void setupRead(void);
-- void activate(const std::string& newPath,
-- const std::shared_ptr<I2CDevice>& newI2CDevice);
-+ void activate(void);
- void deactivate(void);
- bool isActive(void);
-
-diff --git a/src/PSUSensorMain.cpp b/src/PSUSensorMain.cpp
-index d6bc84c..243f27f 100644
---- a/src/PSUSensorMain.cpp
-+++ b/src/PSUSensorMain.cpp
-@@ -289,8 +289,7 @@ static void createSensorsCallback(
- std::shared_ptr<sdbusplus::asio::connection>& dbusConnection,
- const ManagedObjectType& sensorConfigs,
- const std::shared_ptr<boost::container::flat_set<std::string>>&
-- sensorsChanged,
-- bool activateOnly)
-+ sensorsChanged)
- {
- int numCreated = 0;
- bool firstScan = sensorsChanged == nullptr;
-@@ -441,10 +440,6 @@ static void createSensorsCallback(
- std::shared_ptr<I2CDevice> i2cDev;
- if (findI2CDev != devices.end())
- {
-- if (activateOnly && !findI2CDev->second.second)
-- {
-- continue;
-- }
- i2cDev = findI2CDev->second.first;
- }
-
-@@ -916,18 +911,16 @@ static void createSensorsCallback(
- << "\"\n";
- }
- // destruct existing one first if already created
--
-- auto& sensor = sensors[sensorName];
-- if (!activateOnly)
-- {
-- sensor = nullptr;
-- }
--
-- if (sensor != nullptr)
-- {
-- sensor->activate(sensorPathStr, i2cDev);
-- }
-- else
-+ sensors[sensorName] = std::make_shared<PSUSensor>(
-+ sensorPathStr, sensorType, objectServer, dbusConnection, io,
-+ sensorName, std::move(sensorThresholds), *interfacePath,
-+ readState, findSensorUnit->second, factor,
-+ psuProperty->maxReading, psuProperty->minReading,
-+ psuProperty->sensorOffset, labelHead, thresholdConfSize,
-+ pollRate, i2cDev);
-+ sensors[sensorName]->setupRead();
-+ ++numCreated;
-+ if constexpr (debug)
- {
- sensors[sensorName] = std::make_shared<PSUSensor>(
- sensorPathStr, sensorType, objectServer, dbusConnection, io,
-@@ -1035,14 +1028,13 @@ void createSensors(
- boost::asio::io_context& io, sdbusplus::asio::object_server& objectServer,
- std::shared_ptr<sdbusplus::asio::connection>& dbusConnection,
- const std::shared_ptr<boost::container::flat_set<std::string>>&
-- sensorsChanged,
-- bool activateOnly)
-+ sensorsChanged)
- {
- auto getter = std::make_shared<GetSensorConfiguration>(
-- dbusConnection, [&io, &objectServer, &dbusConnection, sensorsChanged,
-- activateOnly](const ManagedObjectType& sensorConfigs) {
-+ dbusConnection, [&io, &objectServer, &dbusConnection, sensorsChanged](
-+ const ManagedObjectType& sensorConfigs) {
- createSensorsCallback(io, objectServer, dbusConnection, sensorConfigs,
-- sensorsChanged, activateOnly);
-+ sensorsChanged);
- });
- std::vector<std::string> types(sensorTypes.size());
- for (const auto& [type, dt] : sensorTypes)
-@@ -1184,13 +1176,17 @@ void propertyInitialize(void)
- static void powerStateChanged(
- PowerState type, bool newState,
- boost::container::flat_map<std::string, std::shared_ptr<PSUSensor>>&
-- sensors,
-- boost::asio::io_context& io, sdbusplus::asio::object_server& objectServer,
-- std::shared_ptr<sdbusplus::asio::connection>& dbusConnection)
-+ sensors)
- {
- if (newState)
- {
-- createSensors(io, objectServer, dbusConnection, nullptr, true);
-+ for (auto& [path, sensor] : sensors)
-+ {
-+ if (sensor != nullptr && sensor->readState == type)
-+ {
-+ sensor->activate();
-+ }
-+ }
- }
- else
- {
-@@ -1218,15 +1214,14 @@ int main()
-
- propertyInitialize();
-
-- auto powerCallBack = [&io, &objectServer, &systemBus](PowerState type,
-- bool state) {
-- powerStateChanged(type, state, sensors, io, objectServer, systemBus);
-+ auto powerCallBack = [](PowerState type, bool state) {
-+ powerStateChanged(type, state, sensors);
- };
-
- setupPowerMatchCallback(systemBus, powerCallBack);
-
- boost::asio::post(io, [&]() {
-- createSensors(io, objectServer, systemBus, nullptr, false);
-+ createSensors(io, objectServer, systemBus, nullptr);
- });
- boost::asio::steady_timer filterTimer(io);
- std::function<void(sdbusplus::message_t&)> eventHandler =
-@@ -1247,7 +1242,7 @@ int main()
- {
- std::cerr << "timer error\n";
- }
-- createSensors(io, objectServer, systemBus, sensorsChanged, false);
-+ createSensors(io, objectServer, systemBus, sensorsChanged);
- });
- };
-
-@@ -1302,7 +1297,7 @@ int main()
- std::cerr << "timer error\n";
- return;
- }
-- createSensors(io, objectServer, systemBus, nullptr, false);
-+ createSensors(io, objectServer, systemBus, nullptr);
- });
- };
-
---
-2.47.1.613.gc27f4b7a9f-goog
-
diff --git a/recipes-phosphor/sensors/dbus-sensors_%.bbappend b/recipes-phosphor/sensors/dbus-sensors_%.bbappend
index e532158..e621d30 100644
--- a/recipes-phosphor/sensors/dbus-sensors_%.bbappend
+++ b/recipes-phosphor/sensors/dbus-sensors_%.bbappend
@@ -8,7 +8,6 @@
file://0005-dbus-sensors-Associate-CPU-inventory-with-CPU-sensor.patch \
file://0006-cpusensor-Associate-DIMM-inventory-with-sensors.patch \
file://0007-psusensor-Check-active-state-before-activation.patch \
- file://0008-psusensor-avoid-crash-by-activate-sensor-twice.patch \
file://0009-psusensor-DeviceMgmt-fix-device-not-found.patch \
file://0101-RedfishSensor-It-reads-Redfish-sensors-to-D-Bus.patch \
file://0102-RedfishSensor-Network-error-handling-teardown.patch \