xref: /openbmc/phosphor-dbus-interfaces/yaml/xyz/openbmc_project/Control/README.msl.md (revision a1347418307d31a94bd21f22897aa508df938dcf)
1b1b4d261SWilliam A. Kennington III# Minimum Ship Level (MSL)
2b1b4d261SWilliam A. Kennington III
3b1b4d261SWilliam A. Kennington III## Overview
4b1b4d261SWilliam A. Kennington III
5b1b4d261SWilliam A. Kennington IIIThe OpenBMC API provides a global setting for enforcement of minimum ship level.
6b1b4d261SWilliam A. Kennington IIITypically a setting like this would be used to enable the use of hardware
7*a1347418SPatrick Williamsconfigurations in platform development that may not necessarily be supported in
8*a1347418SPatrick Williamsa manufacturing or field environment.
9b1b4d261SWilliam A. Kennington III
10*a1347418SPatrick WilliamsIf an OpenBMC implementation provides MinimumShipLevelRequired, it must be on
11*a1347418SPatrick Williams`/xyz/openbmc_project/control/minimum_ship_level_required`. There are **no**
12*a1347418SPatrick Williamsrequirements on how the setting is used; implementations are free to react to
13*a1347418SPatrick Williamsthe value of the setting however they choose.
14b1b4d261SWilliam A. Kennington III
15b1b4d261SWilliam A. Kennington IIIIn anticipation of a common use case of examining hardware assets, determining
16b1b4d261SWilliam A. Kennington IIIif they are of a certain revision or part, and taking some action if they are
17b1b4d261SWilliam A. Kennington IIInot, the OpenBMC API also provides an inventory decorator called
18b1b4d261SWilliam A. Kennington IIIMeetsMinimumShipLevel.
19b1b4d261SWilliam A. Kennington III
20b1b4d261SWilliam A. Kennington IIIMeetsMinimumShipLevel can be implemented on any object in the inventory
21*a1347418SPatrick Williamsnamespace. Again, there are no requirements on what an implementation does when
22*a1347418SPatrick Williamsa particular inventory object does or does not meet the minimum ship level.
23b1b4d261SWilliam A. Kennington III
24b1b4d261SWilliam A. Kennington III## Implementation Notes
25b1b4d261SWilliam A. Kennington III
26*a1347418SPatrick WilliamsConsider a server platform with an MSL requirement that a fan control card is a
27*a1347418SPatrick Williamscertain revision, and if it is not, the server must not be allowed to boot,
28*a1347418SPatrick Williamsunless a user explicitly specifies otherwise.
29b1b4d261SWilliam A. Kennington III
30*a1347418SPatrick WilliamsPhosphor OpenBMC provides a basic implementation of MinimumShipLevelRequired. It
31*a1347418SPatrick Williamsmaintains a setting store and interface for the setting value. This
32b1b4d261SWilliam A. Kennington IIIimplementation is suitable for the hypothetical platform implementation
33b1b4d261SWilliam A. Kennington IIIrequirements, allowing a user to toggle the setting back and forth.
34b1b4d261SWilliam A. Kennington III
35b1b4d261SWilliam A. Kennington IIITo enable verification that MSL has been satisfied, the hypothetical platform
36b1b4d261SWilliam A. Kennington IIIimplementation would need to write an application that implements
37b1b4d261SWilliam A. Kennington IIIMeetsMinimumShipLevel on the inventory assets to be verified. At present
38b1b4d261SWilliam A. Kennington IIIPhosphor OpenBMC does not provide any applications that do this. If your
39b1b4d261SWilliam A. Kennington IIIapplication is general purpose and could meet the needs of others, consider
40b1b4d261SWilliam A. Kennington IIIcontributing it to Phosphor OpenBMC. A possible implementation for the
41*a1347418SPatrick Williamshypothetical fan control card might be an application that validates a number of
42*a1347418SPatrick Williamshwmon sensors exist and then sets the MinimumShipLevelRequired on the fan
43*a1347418SPatrick Williamsinventory object accordingly.
44b1b4d261SWilliam A. Kennington III
45b1b4d261SWilliam A. Kennington IIIFinally, the setting and the inventory assets must be compared and the server
46b1b4d261SWilliam A. Kennington IIIprevented from powering on. This could be accomplished with a custom application
47b1b4d261SWilliam A. Kennington IIIor for simple logic, with
48b1b4d261SWilliam A. Kennington III[PDM](https://github.com/openbmc/phosphor-dbus-monitor) rules.
49