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