Rescan the root bus when a new mux is added
FRU devices can be incorrectly associated with rootbus after BMC reset
if a MUX was left open during shutdown. This prevents the scanning of
the same addresses on other legs of the MUX and few FRU devices are
missing under FRU list. Rescan the rootbus before scanning the mux
channel removes these devices from the rootbus. Next scan on the mux
channel will find these devices on the correct logic bus.
Without Fix, when 5 HSBPs connected to system:
before cold reset:
|-/xyz/openbmc_project/FruDevice/BHS2U8X4U2HSBP
|-/xyz/openbmc_project/FruDevice/BHS2U8X4U2HSBP_0
|-/xyz/openbmc_project/FruDevice/BHS2U8X4U2HSBP_1
|-/xyz/openbmc_project/FruDevice/BHS2U8X4U2HSBP_2
|-/xyz/openbmc_project/FruDevice/BHS2U8X4U2HSBP_3
after cold reset:
|-/xyz/openbmc_project/FruDevice/BHS2U8X4U2HSBP
|-/xyz/openbmc_project/FruDevice/BHS2U8X4U2HSBP_0
|-/xyz/openbmc_project/FruDevice/BHS2U8X4U2HSBP_1
Tested: Tested and verified that all FRU devices are scanning properly.
Change-Id: I470fe49084697a179d8f7b5241d342ef02964e39
Signed-off-by: PavanKumarIntel <pavanx.kumar.martha@intel.com>
diff --git a/src/fru_device.cpp b/src/fru_device.cpp
index 9cd46b2..e7d4a15 100644
--- a/src/fru_device.cpp
+++ b/src/fru_device.cpp
@@ -1316,6 +1316,15 @@
<< "\n";
continue;
}
+ int rootBus = getRootBus(bus);
+ if (rootBus >= 0)
+ {
+ rescanOneBus(busMap,
+ static_cast<uint16_t>(rootBus),
+ dbusInterfaceMap, false,
+ unknownBusObjectCount, powerIsOn,
+ objServer, systemBus);
+ }
rescanOneBus(busMap, static_cast<uint16_t>(bus),
dbusInterfaceMap, false,
unknownBusObjectCount, powerIsOn,