PHAL: Add new service file to indicate guard actions.
- Currently, the host is in the infinite loop to boot if the host
firmware trying to recover resources and informs that to the BMC by
the graceful boot request.
- The PHAL will try to apply guard records in all types of boots.
- The host firmware will try to recover resources if that's are
guarded and did not meet the minimum hardware check to boot
the host and initiate a graceful boot to adjust boot params
(HWAS_STATE).
- When the BMC handles the host graceful boot request, PHAL will
apply the guard records and informs self boot engine about
the bad resources but, the host firmware did not apply the guard
records in the previous boot so when comparing the resources
state that's informed by the self boot engine are mismatching
and entering into an infinite loop to boot.
- So, the guard records actions changed in the BMC to supports
resource recovery feature.
- PowerOn / TI (terminate immediately) / Checkstop / Watchdog timeout:
- Clear ephemeral type records.
- Apply persistent type records.
- MPIPL:
- Apply persistent type records of the Core and FC.
- Graceful reboot from hostboot / Reboot from UI user or PHYP:
- No guard actions in the PHAL.
- To support the above guard actions in the BMC for the different boots,
BMC will create the "/tmp/phal/boottime_guard_indicator" file by using
the added service file that will get triggered as part the
obmc-host-start@0.target (PowerOn) and obmc-host-quiesce@0.target (TI,
Checkstop, and Watchdog timeout), PHAL need to take appropriate guard
actions for the same types of boot and remove that indication so that
no guard action can be handled during graceful reboot request from
hostboot and Reboot from UI or PHYP as well. MPIPL can be handled by
the existing IPL_TYPE value provided by the BMC to PHAL as part of
the MPIPL boot request.
- Added the above support in this patch for PHAL.
Tested:
- Pre-request: Created the "MC" of guard records to hit the minimum
hardware check.
- Verified by PowerOn (aka cold boot).
- Verified TI and Checkstop by injecting clock error at the runtime.
(i2cset -y 8 0x6a 0xb6 0x1a)
- Verified TI and Checkstop by injecting runtime "Fata" guard.
(putscom pu.c 20028440 0000000000000800 -n0 -p00 -c1)
- Verified MPIPL by using the PHYP macro.
(altermem c00 -t p 00000000)
- Verified Graceful request from hostboot as part boot param adjust
and SBE image update request.
- Verified Reboot, GracefulWarmReboot, ForceWarmReboot from the BMC.
Signed-off-by: Ramesh Iyyar <rameshi1@in.ibm.com>
Change-Id: I6422a8fb68559d7b02677a2f018f0d726ddd8952
diff --git a/meson.build b/meson.build
index fddea45..ff5c0f7 100644
--- a/meson.build
+++ b/meson.build
@@ -128,6 +128,7 @@
'service_files/op-reset-host-clear.service',
'service_files/phal-import-devtree@.service',
'service_files/phal-export-devtree@.service',
+ 'service_files/phal-create-boottime-guard-indicator.service',
]
unit_subs.set('ENABLE_PHAL_TRUE', '')
endif