xref: /openbmc/docs/host-management.md (revision f4febd002df578bad816239b70950f84ea4567e8)
1b41aff0fSXiaochao Ma# Host Management with OpenBMC
298100205SJeremy Kerr
398100205SJeremy KerrThis document describes the host-management interfaces of the OpenBMC object
498100205SJeremy Kerrstructure, accessible over REST.
598100205SJeremy Kerr
6b41aff0fSXiaochao MaNote: Authentication
7b41aff0fSXiaochao Ma
8*f4febd00SPatrick WilliamsSee the details on authentication at
9*f4febd00SPatrick Williams[REST-cheatsheet](https://github.com/openbmc/docs/blob/master/REST-cheatsheet.md#establish-rest-connection-session).
10b41aff0fSXiaochao Ma
11b41aff0fSXiaochao MaThis document uses token based authentication method:
12b41aff0fSXiaochao Ma
13b41aff0fSXiaochao Ma```
14b41aff0fSXiaochao Ma$ export bmc=xx.xx.xx.xx
15b41aff0fSXiaochao Ma$ export token=`curl -k -H "Content-Type: application/json" -X POST https://${bmc}/login -d '{"username" :  "root", "password" :  "0penBmc"}' | grep token | awk '{print $2;}' | tr -d '"'`
16b41aff0fSXiaochao Ma$ curl -k -H "X-Auth-Token: $token" https://${bmc}/xyz/openbmc_project/...
17b41aff0fSXiaochao Ma```
18b41aff0fSXiaochao Ma
19b41aff0fSXiaochao Ma## Inventory
2098100205SJeremy Kerr
21*f4febd00SPatrick WilliamsThe system inventory structure is under the `/xyz/openbmc_project/inventory`
22*f4febd00SPatrick Williamshierarchy.
2398100205SJeremy Kerr
2498100205SJeremy KerrIn OpenBMC the inventory is represented as a path which is hierarchical to the
2598100205SJeremy Kerrphysical system topology. Items in the inventory are referred to as inventory
266ba5cff0SGunnar Millsitems and are not necessarily FRUs (field-replaceable units). If the system
27*f4febd00SPatrick Williamscontains one chassis, a motherboard, and a CPU on the motherboard, then the path
28*f4febd00SPatrick Williamsto that inventory item would be:
2998100205SJeremy Kerr
30b41aff0fSXiaochao Ma`inventory/system/chassis0/motherboard0/cpu0`
3198100205SJeremy Kerr
32*f4febd00SPatrick WilliamsThe properties associated with an inventory item are specific to that item. Some
33*f4febd00SPatrick Williamscommon properties are:
3498100205SJeremy Kerr
35*f4febd00SPatrick Williams- `Version`: A code version associated with this item.
36*f4febd00SPatrick Williams- `Present`: Indicates whether this item is present in the system (True/False).
37*f4febd00SPatrick Williams- `Functional`: Indicates whether this item is functioning in the system
38*f4febd00SPatrick Williams  (True/False).
3998100205SJeremy Kerr
4098100205SJeremy KerrThe usual `list` and `enumerate` REST queries allow the system inventory
4198100205SJeremy Kerrstructure to be accessed. For example, to enumerate all inventory items and
4298100205SJeremy Kerrtheir properties:
4398100205SJeremy Kerr
44b41aff0fSXiaochao Ma    $ curl -k -H "X-Auth-Token: $token" https://${bmc}/xyz/openbmc_project/inventory/enumerate
4598100205SJeremy Kerr
4698100205SJeremy KerrTo list the properties of one item:
4798100205SJeremy Kerr
48b41aff0fSXiaochao Ma    $ curl -k -H "X-Auth-Token: $token" https://${bmc}/xyz/openbmc_project/inventory/system/chassis/motherboard
4998100205SJeremy Kerr
50b41aff0fSXiaochao Ma## Sensors
5198100205SJeremy Kerr
521781f86bSAndrew GeisslerThe system sensor structure is under the `/xyz/openbmc_project/sensors`
531781f86bSAndrew Geisslerhierarchy.
5498100205SJeremy Kerr
5598100205SJeremy KerrThis interface allows monitoring of system attributes like temperature or
5698100205SJeremy Kerraltitude, and are represented similar to the inventory, by object paths under
5798100205SJeremy Kerrthe top-level `sensors` object name. The path categorizes the sensor and shows
5898100205SJeremy Kerrwhat the sensor represents, but does not necessarily represent the physical
5998100205SJeremy Kerrtopology of the system.
6098100205SJeremy Kerr
6198100205SJeremy KerrFor example, all temperature sensors are under `sensors/temperature`. CPU
6298100205SJeremy Kerrtemperature sensors would be `sensors/temperature/cpu[n]`.
6398100205SJeremy Kerr
646ba5cff0SGunnar MillsThese are some common properties:
6598100205SJeremy Kerr
66*f4febd00SPatrick Williams- `Value`: Current value of the sensor
67*f4febd00SPatrick Williams- `Unit`: Unit of the value and "Critical" and "Warning" values
68*f4febd00SPatrick Williams- `Scale`: The scale of the value and "Critical" and "Warning" values
69*f4febd00SPatrick Williams- `CriticalHigh` & `CriticalLow`: Sensor device upper/lower critical threshold
701781f86bSAndrew Geissler  bound
71*f4febd00SPatrick Williams- `CriticalAlarmHigh` & `CriticalAlarmLow`: True if the sensor has exceeded the
726ba5cff0SGunnar Mills  critical threshold bound
73*f4febd00SPatrick Williams- `WarningHigh` & `WarningLow`: Sensor device upper/lower warning threshold
741781f86bSAndrew Geissler  bound
75*f4febd00SPatrick Williams- `WarningAlarmHigh` & `WarningAlarmLow`: True if the sensor has exceeded the
766ba5cff0SGunnar Mills  warning threshold bound
776ba5cff0SGunnar Mills
786ba5cff0SGunnar MillsA temperature sensor might look like:
796ba5cff0SGunnar Mills
80b41aff0fSXiaochao Ma    $ curl -k -H "X-Auth-Token: $token" https://${bmc}/xyz/openbmc_project/sensors/temperature/ocp_zone
816ba5cff0SGunnar Mills    {
826ba5cff0SGunnar Mills      "data": {
83b41aff0fSXiaochao Ma        "CriticalAlarmHigh": false,
84b41aff0fSXiaochao Ma        "CriticalAlarmLow": false,
85b41aff0fSXiaochao Ma        "CriticalHigh": 65000,
866ba5cff0SGunnar Mills        "CriticalLow": 0,
87b41aff0fSXiaochao Ma        "Functional": true,
88b41aff0fSXiaochao Ma        "MaxValue": 0,
89b41aff0fSXiaochao Ma        "MinValue": 0,
906ba5cff0SGunnar Mills        "Scale": -3,
916ba5cff0SGunnar Mills        "Unit": "xyz.openbmc_project.Sensor.Value.Unit.DegreesC",
92b41aff0fSXiaochao Ma        "Value": 34625,
93b41aff0fSXiaochao Ma        "WarningAlarmHigh": false,
94b41aff0fSXiaochao Ma        "WarningAlarmLow": false,
95b41aff0fSXiaochao Ma        "WarningHigh": 63000,
966ba5cff0SGunnar Mills        "WarningLow": 0
976ba5cff0SGunnar Mills      },
986ba5cff0SGunnar Mills      "message": "200 OK",
996ba5cff0SGunnar Mills      "status": "ok"
1006ba5cff0SGunnar Mills    }
1016ba5cff0SGunnar Mills
102*f4febd00SPatrick WilliamsNote the value of this sensor is 34.625C (34625 \* 10^-3).
10398100205SJeremy Kerr
10498100205SJeremy KerrUnlike IPMI, there are no "functional" sensors in OpenBMC; functional states are
10598100205SJeremy Kerrrepresented in the inventory.
10698100205SJeremy Kerr
10798100205SJeremy KerrTo enumerate all sensors in the system:
10898100205SJeremy Kerr
109b41aff0fSXiaochao Ma    $ curl -k -H "X-Auth-Token: $token" https://${bmc}/xyz/openbmc_project/sensors/enumerate
11098100205SJeremy Kerr
11198100205SJeremy KerrList properties of one inventory item:
11298100205SJeremy Kerr
113b41aff0fSXiaochao Ma    $ curl -k -H "X-Auth-Token: $token" https://${bmc}/xyz/openbmc_project/sensors/temperature/outlet
11498100205SJeremy Kerr
115b41aff0fSXiaochao Ma## Event Logs
11698100205SJeremy Kerr
1171781f86bSAndrew GeisslerThe event log structure is under the `/xyz/openbmc_project/logging/entry`
1181781f86bSAndrew Geisslerhierarchy. Each event is a separate object under this structure, referenced by
1191781f86bSAndrew Geisslernumber.
12098100205SJeremy Kerr
1216ba5cff0SGunnar MillsBMC and host firmware on POWER-based servers can report event logs to the BMC.
1221781f86bSAndrew GeisslerTypically, these event logs are reported in cases where host firmware cannot
1231781f86bSAndrew Geisslerstart the OS, or cannot reliably log to the OS.
12498100205SJeremy Kerr
1256ba5cff0SGunnar MillsThe properties associated with an event log are as follows:
12698100205SJeremy Kerr
127*f4febd00SPatrick Williams- `Message`: The type of event log (e.g.
128*f4febd00SPatrick Williams  "xyz.openbmc_project.Inventory.Error.NotPresent").
129*f4febd00SPatrick Williams- `Resolved` : Indicates whether the event has been resolved.
130*f4febd00SPatrick Williams- `Severity`: The level of problem ("Info", "Error", etc.).
131*f4febd00SPatrick Williams- `Timestamp`: The date of the event log in epoch time.
132*f4febd00SPatrick Williams- `Associations`: A URI to the failing inventory part.
13398100205SJeremy Kerr
1346ba5cff0SGunnar MillsTo list all reported event logs:
13598100205SJeremy Kerr
136b41aff0fSXiaochao Ma    $ curl -k -H "X-Auth-Token: $token" https://${bmc}/xyz/openbmc_project/logging/entry
13798100205SJeremy Kerr    {
13898100205SJeremy Kerr      "data": [
1396ba5cff0SGunnar Mills        "/xyz/openbmc_project/logging/entry/3",
1406ba5cff0SGunnar Mills        "/xyz/openbmc_project/logging/entry/2",
1416ba5cff0SGunnar Mills        "/xyz/openbmc_project/logging/entry/1",
1426ba5cff0SGunnar Mills        "/xyz/openbmc_project/logging/entry/7",
1436ba5cff0SGunnar Mills        "/xyz/openbmc_project/logging/entry/6",
1446ba5cff0SGunnar Mills        "/xyz/openbmc_project/logging/entry/5",
1456ba5cff0SGunnar Mills        "/xyz/openbmc_project/logging/entry/4"
14698100205SJeremy Kerr      ],
14798100205SJeremy Kerr      "message": "200 OK",
14898100205SJeremy Kerr      "status": "ok"
14998100205SJeremy Kerr    }
15098100205SJeremy Kerr
15198100205SJeremy KerrTo read a specific event log:
15298100205SJeremy Kerr
153b41aff0fSXiaochao Ma    $ curl -k -H "X-Auth-Token: $token" https://${bmc}/xyz/openbmc_project/logging/entry/1
15498100205SJeremy Kerr    {
15598100205SJeremy Kerr      "data": {
1566ba5cff0SGunnar Mills        "AdditionalData": [
157b41aff0fSXiaochao Ma          "_PID=183"
1586ba5cff0SGunnar Mills        ],
1596ba5cff0SGunnar Mills        "Id": 1,
160b41aff0fSXiaochao Ma        "Message": "xyz.openbmc_project.Common.Error.InternalFailure",
161b41aff0fSXiaochao Ma        "Purpose": "xyz.openbmc_project.Software.Version.VersionPurpose.BMC",
162b41aff0fSXiaochao Ma        "Resolved": false,
1636ba5cff0SGunnar Mills        "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
164b41aff0fSXiaochao Ma        "Timestamp": 1563191362822,
165b41aff0fSXiaochao Ma        "Version": "2.8.0-dev-132-gd1c1b74-dirty",
166b41aff0fSXiaochao Ma        "associations": []
16798100205SJeremy Kerr      },
16898100205SJeremy Kerr      "message": "200 OK",
16998100205SJeremy Kerr      "status": "ok"
17098100205SJeremy Kerr    }
17198100205SJeremy Kerr
172*f4febd00SPatrick WilliamsTo delete an event log (log 1 in this example), call the `Delete` method on the
173*f4febd00SPatrick Williamsevent:
17498100205SJeremy Kerr
175b41aff0fSXiaochao Ma    $ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X POST -d '{"data" : []}' https://${bmc}/xyz/openbmc_project/logging/entry/1/action/Delete
17698100205SJeremy Kerr
177c8529037SGunnar MillsTo clear all event logs, call the top-level `DeleteAll` method:
17898100205SJeremy Kerr
179b41aff0fSXiaochao Ma    $ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X POST -d '{"data" : []}' https://${bmc}/xyz/openbmc_project/logging/action/DeleteAll
18098100205SJeremy Kerr
181b41aff0fSXiaochao Ma## Host Boot Options
18298100205SJeremy Kerr
1836ba5cff0SGunnar MillsWith OpenBMC, the Host boot options are stored as D-Bus properties under the
184a6ea0d09SGunnar Mills`control/host0/boot` path. Properties include
185264d4e0fSKonstantin Aladyshev[`BootMode`](https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/yaml/xyz/openbmc_project/Control/Boot/Mode.interface.yaml),
186264d4e0fSKonstantin Aladyshev[`BootSource`](https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/yaml/xyz/openbmc_project/Control/Boot/Source.interface.yaml)
187*f4febd00SPatrick Williamsand if the host is based on x86 CPU also
188*f4febd00SPatrick Williams[`BootType`](https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/yaml/xyz/openbmc_project/Control/Boot/Type.interface.yaml).
18998100205SJeremy Kerr
190*f4febd00SPatrick Williams- Set boot mode:
1914cd993e2SJoel Stanley
192b41aff0fSXiaochao Ma  ```
193264d4e0fSKonstantin Aladyshev   $ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X PUT https://${bmc}/xyz/openbmc_project/control/host0/boot/attr/BootMode -d '{"data": "xyz.openbmc_project.Control.Boot.Mode.Modes.Regular"}'
194b41aff0fSXiaochao Ma  ```
195b41aff0fSXiaochao Ma
196*f4febd00SPatrick Williams- Set boot source:
197b41aff0fSXiaochao Ma
198b41aff0fSXiaochao Ma  ```
199264d4e0fSKonstantin Aladyshev  $ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X PUT https://${bmc}/xyz/openbmc_project/control/host0/boot/attr/BootSource -d '{"data": "xyz.openbmc_project.Control.Boot.Source.Sources.Default"}'
200264d4e0fSKonstantin Aladyshev  ```
201264d4e0fSKonstantin Aladyshev
202*f4febd00SPatrick Williams- Set boot type (valid only if host is based on the x86 CPU):
203264d4e0fSKonstantin Aladyshev
204264d4e0fSKonstantin Aladyshev  ```
205264d4e0fSKonstantin Aladyshev  $ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X PUT https://${bmc}/xyz/openbmc_project/control/host0/boot/attr/BootType -d '{"data": "xyz.openbmc_project.Control.Boot.Type.Types.EFI"}'
206264d4e0fSKonstantin Aladyshev  ```
207264d4e0fSKonstantin Aladyshev
208*f4febd00SPatrick WilliamsAlso there are boolean
209*f4febd00SPatrick Williams[`Enable`](https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/yaml/xyz/openbmc_project/Object/Enable.interface.yaml)
210*f4febd00SPatrick Williamsproperties that control if the boot source override is persistent or one-time,
211*f4febd00SPatrick Williamsand if the override is enabled or not.
212264d4e0fSKonstantin Aladyshev
213*f4febd00SPatrick Williams- Set boot override one-time flag:
214264d4e0fSKonstantin Aladyshev
215264d4e0fSKonstantin Aladyshev  ```
216264d4e0fSKonstantin Aladyshev  $ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X PUT https://${bmc}/xyz/openbmc_project/control/host0/boot/one_time/attr/Enabled -d '{"data": "true"}'
217264d4e0fSKonstantin Aladyshev  ```
218264d4e0fSKonstantin Aladyshev
219*f4febd00SPatrick Williams- Enable boot override:
220264d4e0fSKonstantin Aladyshev
221264d4e0fSKonstantin Aladyshev  ```
222264d4e0fSKonstantin Aladyshev  $ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X PUT https://${bmc}/xyz/openbmc_project/control/host0/boot/attr/Enabled -d '{"data": "true"}'
223b41aff0fSXiaochao Ma  ```
224b41aff0fSXiaochao Ma
225b41aff0fSXiaochao Ma## Host State Control
2264cd993e2SJoel Stanley
2271781f86bSAndrew GeisslerThe host can be controlled through the `host` object. The object implements a
2281781f86bSAndrew Geisslernumber of actions including power on and power off. These correspond to the IPMI
2296ba5cff0SGunnar Mills`power on` and `power off` commands.
2304cd993e2SJoel Stanley
2316ba5cff0SGunnar MillsAssuming you have logged in, the following will power on the host:
2324cd993e2SJoel Stanley
2334cd993e2SJoel Stanley```
234b41aff0fSXiaochao Ma$ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"data": "xyz.openbmc_project.State.Host.Transition.On"}' -X PUT https://${bmc}/xyz/openbmc_project/state/host0/attr/RequestedHostTransition
2354cd993e2SJoel Stanley```
2364cd993e2SJoel Stanley
2376ba5cff0SGunnar MillsTo power off the host:
2384cd993e2SJoel Stanley
2396ba5cff0SGunnar Mills```
240b41aff0fSXiaochao Ma$ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -d '{"data": "xyz.openbmc_project.State.Host.Transition.Off"}' -X PUT https://${bmc}/xyz/openbmc_project/state/host0/attr/RequestedHostTransition
2416ba5cff0SGunnar Mills```
2426ba5cff0SGunnar Mills
2436ba5cff0SGunnar MillsTo issue a hard power off (accomplished by powering off the chassis):
2446ba5cff0SGunnar Mills
2456ba5cff0SGunnar Mills```
246b41aff0fSXiaochao Ma$ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X PUT -d '{"data":"xyz.openbmc_project.State.Chassis.Transition.Off"}' https://${bmc}//xyz/openbmc_project/state/chassis0/attr/RequestedPowerTransition
2476ba5cff0SGunnar Mills```
2486ba5cff0SGunnar Mills
2496ba5cff0SGunnar MillsTo reboot the host:
2506ba5cff0SGunnar Mills
2516ba5cff0SGunnar Mills```
252b41aff0fSXiaochao Ma$ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X PUT -d '{"data":"xyz.openbmc_project.State.Host.Transition.Reboot"}' https://${bmc}/xyz/openbmc_project/state/host0/attr/RequestedHostTransition
2536ba5cff0SGunnar Mills```
2546ba5cff0SGunnar Mills
2556ba5cff0SGunnar MillsMore information about Host State Management can be found here:
2562bc8dac0SKonstantin Aladyshevhttps://github.com/openbmc/phosphor-dbus-interfaces/tree/master/yaml/xyz/openbmc_project/State
2577b31010eSMichael Tritz
258b41aff0fSXiaochao Ma## Host Clear GARD
2597b31010eSMichael Tritz
2607b31010eSMichael TritzOn OpenPOWER systems, the host maintains a record of bad or non-working
2617b31010eSMichael Tritzcomponents on the GARD partition. This record is referenced by the host on
2627b31010eSMichael Tritzsubsequent boots to determine which parts should be ignored.
2637b31010eSMichael Tritz
2647b31010eSMichael TritzThe BMC implements a function that simply clears this partition. This function
2657b31010eSMichael Tritzcan be called as follows:
2667b31010eSMichael Tritz
267*f4febd00SPatrick Williams- Method 1: From the BMC command line:
2687b31010eSMichael Tritz
2697b31010eSMichael Tritz  ```
2707b31010eSMichael Tritz  busctl call org.open_power.Software.Host.Updater \
2717b31010eSMichael Tritz    /org/open_power/control/gard \
2727b31010eSMichael Tritz    xyz.openbmc_project.Common.FactoryReset Reset
2737b31010eSMichael Tritz  ```
2747b31010eSMichael Tritz
275*f4febd00SPatrick Williams- Method 2: Using the REST API:
2767b31010eSMichael Tritz
2777b31010eSMichael Tritz  ```
278b41aff0fSXiaochao Ma  $ curl -k -H "X-Auth-Token: $token" -H "Content-Type: application/json" -X POST -d '{"data":[]}' https://${bmc}/org/open_power/control/gard/action/Reset
2797b31010eSMichael Tritz  ```
2807b31010eSMichael Tritz
2817b31010eSMichael TritzImplementation: https://github.com/openbmc/openpower-pnor-code-mgmt
28284c1704bSAndrew Geissler
283b41aff0fSXiaochao Ma## Host Watchdog
28484c1704bSAndrew Geissler
28584c1704bSAndrew GeisslerThe host watchdog service is responsible for ensuring the host starts and boots
28684c1704bSAndrew Geisslerwithin a reasonable time. On host start, the watchdog is started and it is
28784c1704bSAndrew Geisslerexpected that the host will ping the watchdog via the inband interface
28884c1704bSAndrew Geisslerperiodically as it boots. If the host fails to ping the watchdog within the
28984c1704bSAndrew Geisslertimeout then the host watchdog will start a systemd target to go to the quiesce
29084c1704bSAndrew Geisslertarget. System settings will then determine the recovery behavior from that
29184c1704bSAndrew Geisslerstate, for example, attempting to reboot the system.
29284c1704bSAndrew Geissler
29384c1704bSAndrew GeisslerThe host watchdog utilizes the generic [phosphor-watchdog][1] repository. The
29484c1704bSAndrew Geisslerhost watchdog service provides 2 files as configuration options into
29584c1704bSAndrew Geisslerphosphor-watchdog:
29684c1704bSAndrew Geissler
29784c1704bSAndrew Geissler    /lib/systemd/system/phosphor-watchdog@poweron.service.d/poweron.conf
29884c1704bSAndrew Geissler    /etc/default/obmc/watchdog/poweron
29984c1704bSAndrew Geissler
30084c1704bSAndrew Geissler`poweron.conf` contains the "Conflicts" relationships to ensure the watchdog
30184c1704bSAndrew Geisslerservice is stopped at the correct times. `poweron` contains the required
30284c1704bSAndrew Geisslerinformation for phosphor-watchdog (more information on these can be found in the
30384c1704bSAndrew Geissler[phosphor-watchdog][1] repository).
30484c1704bSAndrew Geissler
30584c1704bSAndrew GeisslerThe 2 service files involved with the host watchdog are:
30684c1704bSAndrew Geissler
30784c1704bSAndrew Geissler    phosphor-watchdog@poweron.service
30884c1704bSAndrew Geissler    obmc-enable-host-watchdog@0.service
30984c1704bSAndrew Geissler
31084c1704bSAndrew Geissler`phosphor-watchdog@poweron` starts the host watchdog service and
311*f4febd00SPatrick Williams`obmc-enable-host-watchdog` starts the watchdog timer. Both are run as a part of
312*f4febd00SPatrick Williamsthe `obmc-host-startmin@.target`. Service dependencies ensure the service is
31384c1704bSAndrew Geisslerstarted before the enable is called.
31484c1704bSAndrew Geissler
31584c1704bSAndrew GeisslerThe default watchdog timeout can be found within the [dbus interface
31684c1704bSAndrew Geisslerspecification][2] (Interval property).
31784c1704bSAndrew Geissler
31884c1704bSAndrew GeisslerThe host controls the watchdog timeout and enable/disable once it starts.
31984c1704bSAndrew Geissler
32084c1704bSAndrew Geissler[1]: https://github.com/openbmc/phosphor-watchdog
321*f4febd00SPatrick Williams[2]:
322*f4febd00SPatrick Williams  https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/yaml/xyz/openbmc_project/State/Watchdog.interface.yaml
323