bridgecommand: Set PreTimeoutInterruptOccurFlag
Issue: Clear Message Flags failed to clear Watchdog pre-timeout
interrupt flag.
Fix: Setting PreTimeoutInterruptOccurFlag, which can clear the message
flags.
Tested:
Verified with ipmitool raw commands
Step 1: Setting watchdog timer pre-timeout interrupt to enabled
command: ipmitool raw 0x06 0x24 0x5 0x30 0x1 0x3e 0x14 0x00
Response: // Success
Step 2: Reset the watchdog timer
command: ipmitool raw 0x06 0x22
Response: // Success
Step 3: Test whether the watchdog timer is finished
command: ipmitool raw 0x06 0x25 //get watchdog timer
Response: 05 30 00 20 14 00 00 00
Step 4:
command: ipmitool raw 0x06 0x31 // get message flags
Response: 0a
Step 5:
command: ipmitool raw 0x06 0x30 0x08 // clear message flags
Response: //Success
Step 6:
command: ipmitool raw 0x06 0x31 //get message flags
Response: 02
Signed-off-by: jayaprakash Mutyala <mutyalax.jayaprakash@intel.com>
Change-Id: I9327e8fd676b24adf54b75d26d92c223c3a2f24c
diff --git a/src/bridgingcommands.cpp b/src/bridgingcommands.cpp
index d788af1..6749b00 100644
--- a/src/bridgingcommands.cpp
+++ b/src/bridgingcommands.cpp
@@ -562,6 +562,20 @@
eventMessageBufferFlag = true;
}
+ try
+ {
+ std::shared_ptr<sdbusplus::asio::connection> dbus = getSdBus();
+ ipmi::setDbusProperty(*dbus, wdtService, wdtObjPath, wdtInterface,
+ wdtInterruptFlagProp, false);
+ }
+ catch (const sdbusplus::exception::SdBusError &e)
+ {
+ phosphor::logging::log<phosphor::logging::level::ERR>(
+ "ipmiAppClearMessageFlags: can't Clear/Set "
+ "PreTimeoutInterruptOccurFlag");
+ return ipmi::responseUnspecifiedError();
+ }
+
return ipmi::responseSuccess();
}