Enhance sys_info and postcode for multi-host
This patch enhances multi-host platform support in the OCP debug card
display (sys_info and postcode pages) and OEM command modules.
It replaces hard-coded D-Bus paths and single-interface networkqueries
with dynamic lookups based on the current host selector position.
-Sys_Info page now retrieves the correct FRU path.
-POSTCODE page dynamically calls Boot.PostCode<N> service/object for
each host slot.
-Network information Network information now supports fetching from
eth1 when eth0 is unavailable, preventing missing data or crashes.
Motivation:
Original implementation used hardcoded D-Bus paths such as PostCode0
and only checked eth0 for network-related data. On multi-host platforms,
each host has a separate PostCode service, and FRU/FW data may differ
or be present in alternate paths. Moreover, some systems expose IP/MAC
data on eth1, causing failures when only eth0 is queried. These issue
led to incomplete data being shown or crashes in the sys_info display.
Design:
- Introduced logic to dynamically determine the current host position
and fetch the corresponding PostCode service (PostCode0 ~ PostCode7).
- Enhance `getNetworkData` to check both eth0 and eth1 for IP and MAC
addresses, and avoid crashes if a value is not found.
- Updated FRU retrieval to support multiple motherboard paths and
fallback paths, using filtered D-Bus object mapping
via interface matching and predicate.
- Ensured all std::string results are checked before accessing to
prevent null dereferencing and crashes.
Change-Id: I0c88eb58c3b416437a02994c4c202d5c2269d32a
Signed-off-by: Liora Guo <liora.guo.wiwynn@gmail.com>
3 files changed