summaryrefslogtreecommitdiffstats
path: root/occ_status.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'occ_status.cpp')
-rw-r--r--occ_status.cpp32
1 files changed, 30 insertions, 2 deletions
diff --git a/occ_status.cpp b/occ_status.cpp
index f740dc7..7eafb66 100644
--- a/occ_status.cpp
+++ b/occ_status.cpp
@@ -7,6 +7,11 @@ namespace open_power
namespace occ
{
+bool Status::hubFsiScanDone = false;
+
+// To initiate a FSI rescan
+constexpr auto fsiReScan = "1";
+
// Handles updates to occActive property
bool Status::occActive(bool value)
{
@@ -14,16 +19,26 @@ bool Status::occActive(bool value)
{
if (value)
{
+ if (!hubFsiScanDone)
+ {
+ // Need to do hub scan before we bind
+ this->scanHubFSI();
+ }
+
// Bind the device
device.bind();
// And watch for errors
- device.addErrorWatch();
+ // Commenting until we solve the occ error monitoring issue
+ // TODO: openbmc/openbmc#2126
+ // device.addErrorWatch();
}
else
{
// Stop watching for errors
- device.removeErrorWatch();
+ // Commenting until we solve the occ error monitoring issue
+ // TODO: openbmc/openbmc#2126
+ // device.removeErrorWatch();
// Do the unbind.
device.unBind();
@@ -97,5 +112,18 @@ void Status::hostControlEvent(sdbusplus::message::message& msg)
return;
}
+// Scans the secondary FSI hub to make sure /dev/occ files are populated
+// Write "1" to achieve that
+void Status::scanHubFSI()
+{
+ std::ofstream file(FSI_SCAN_FILE, std::ios::out);
+ file << fsiReScan;
+ file.close();
+
+ // Hub FSI scan has been done. No need to do this for all the OCCs
+ hubFsiScanDone = true;
+ return;
+}
+
} // namespace occ
} // namespace open_power
OpenPOWER on IntegriCloud