#tlbmc Record BootTimeMonitor checkpoints during root Chassis.Reset
Add BootTimeMonito checkpoint support to tlBMC when triggering a root
Chassis.Reset (`PowerCycle`) via Redfish:
1. Add `IsBootTimeMonitorEnabled()`, `SetBootTimeNodeCheckpoint()`, and
`SetBootTimePsuCheckpoint()` to `Store`, `StoreImpl`, and `MockStore`.
When enabled, `StoreImpl::Create` registers the `"bmc"` node (`kBootTimeTagBMC`)
and `"host0" .. "host{N-1}"` nodes (`kBootTimeTagHost`) with `BoottimeApi`.
2. Update `TriggerDefaultRootChassisReset` in `chassis.cc` to record the
`"RebootStart"` checkpoint for `"bmc"` at the start of root `PowerCycle` and
broadcast the `"TrayPowercycle"` PSU checkpoint prior to asserting the
hotswap GPIO.
Tested:
```
{
"@odata.id": "/redfish/v1/Managers/bmc/Oem/Google/BootTime",
"@odata.type": "#GoogleBootTime.v1_0_0.GoogleBootTime",
"Breakdown": [],
"Durations": [
{ "Duration": 0.0, "Name": "Firmware" },
{ "Duration": 0.0, "Name": "Loader" },
{ "Duration": 7.715, "Name": "Kernel" },
{ "Duration": 0.0, "Name": "InitRD" },
{ "Duration": 155.288, "Name": "Userspace" }
],
"Id": "BootTimeData",
"Name": "Boot time data",
"RebootFlow": [
{
"MonotonicStartTime": 93374180,
"Stage": "RebootStart",
"StartTime": "2026-09-22T08:20:03.379+00:00"
},
{
"MonotonicStartTime": 93374240,
"Stage": "TrayPowercycle",
"StartTime": "2026-09-22T08:20:03.436+00:00"
},
{
"MonotonicStartTime": 167210,
"Stage": "UserspaceEnd",
"StartTime": "2026-09-22T08:23:19.710+00:00"
},
{
"MonotonicStartTime": 167210,
"Stage": "RebootEnd",
"StartTime": "2026-09-22T08:23:19.711+00:00"
}
],
"Stat": {
"IsRebooting": false,
"LoaderReadyTimestamp": null,
"PowerSource": "AC",
"UpTime": 38970,
"UpTimestamp": 1790065399711
},
"Status": {
"Health": "Ok",
"State": "Enabled"
},
"Total": 196.332
}
```
Google-Bug-Id:395219125
PiperOrigin-RevId: 992087795
Change-Id: I1fcfdc3a594845ee30a2ed211d2f978e6941f3cf
1 file changed