configurations: yosemite4: Adjust Fantable of On-board Ambient Sensor

# Description:
Adjusted fan table to prevent triggering failsafe mode when the
On-board Ambient Sensor missing or hitting UCR.

# Motivation:
System should not trigger failsafe mode no matter sensor missing
or hitting UCR.

# Test Plan:
Hit the UCR and check the fan speed.

# Test result:
```
// Set UCR
root@bmc:~# busctl set-property xyz.openbmc_project.PLDM /xyz/openbmc_project/sensors/temperature/SENTINEL_DOME_SLOT_1_MB_INLET_TEMP_C xyz.openbmc_project.Sensor.Threshold.Critical CriticalHigh d 10.0
root@bmc:~# busctl set-property xyz.openbmc_project.PLDM /xyz/openbmc_project/sensors/temperature/WAILUA_FALLS_SLOT_3_WF_INLET_TEMP_C xyz.openbmc_project.Sensor.Threshold.Critical CriticalHigh d 10.0
root@bmc:~# busctl set-property xyz.openbmc_project.PLDM /xyz/openbmc_project/sensors/temperature/SENTINEL_DOME_SLOT_8_MB_OUTLET_TEMP_C xyz.openbmc_project.Sensor.Threshold.Critical CriticalHigh d 10.0
root@bmc:~# busctl set-property xyz.openbmc_project.HwmonTempSensor  /xyz/openbmc_project/sensors/temperature/MGNT_TEMP_C xyz.openbmc_project.Sensor.Threshold.Critical CriticalHigh d 10.0
root@bmc:~# busctl set-property xyz.openbmc_project.HwmonTempSensor  /xyz/openbmc_project/sensors/temperature/SPIDER0_TEMP_C xyz.openbmc_project.Sensor.Threshold.Critical CriticalHigh d 10.0
root@bmc:~# busctl set-property xyz.openbmc_project.HwmonTempSensor  /xyz/openbmc_project/sensors/temperature/SPIDER1_TEMP_C xyz.openbmc_project.Sensor.Threshold.Critical CriticalHigh d 10.0
root@bmc:~# busctl set-property xyz.openbmc_project.HwmonTempSensor  /xyz/openbmc_project/sensors/temperature/MEDUSA0_TEMP_C xyz.openbmc_project.Sensor.Threshold.Critical CriticalHigh d 10.0
root@bmc:~# busctl set-property xyz.openbmc_project.HwmonTempSensor  /xyz/openbmc_project/sensors/temperature/MEDUSA1_TEMP_C xyz.openbmc_project.Sensor.Threshold.Critical CriticalHigh d 10.0

// Check UCR is set
root@bmc:~# mfg-tool sensor-display 2>/dev/null | table-sensor-display | egrep -i critical
MEDUSA0_TEMP_C                                          critical        49.125          DegreesC        N/A     N/A             N/A             N/A             10              N/A
MEDUSA1_TEMP_C                                          critical        41.187          DegreesC        N/A     N/A             N/A             N/A             10              N/A
MGNT_TEMP_C                                             critical        30.625          DegreesC        N/A     N/A             N/A             N/A             10              N/A
SENTINEL_DOME_SLOT_1_MB_INLET_TEMP_C                    critical        37              DegreesC        N/A     N/A             N/A             N/A             10              N/A
SENTINEL_DOME_SLOT_8_MB_OUTLET_TEMP_C                   critical        51              DegreesC        N/A     N/A             N/A             N/A             10              N/A
SPIDER0_TEMP_C                                          critical        41.375          DegreesC        N/A     N/A             N/A             N/A             10              150
SPIDER1_TEMP_C                                          critical        40.625          DegreesC        N/A     N/A             N/A             N/A             10              150
WAILUA_FALLS_SLOT_3_WF_INLET_TEMP_C                     critical        37              DegreesC        N/A     N/A             N/A             N/A             10              N/A

// Check pwm
root@bmc:~# mfg-tool sensor-display 2>/dev/null | table-sensor-display | egrep -i pwm
FANBOARD0_FAN0_PWM_PCT                                  ok              16.8627         Percent         N/A     N/A             N/A             N/A             N/A             N/A
FANBOARD0_FAN1_PWM_PCT                                  ok              16.8627         Percent         N/A     N/A             N/A             N/A             N/A             N/A
FANBOARD0_FAN4_PWM_PCT                                  ok              16.8627         Percent         N/A     N/A             N/A             N/A             N/A             N/A
FANBOARD0_FAN5_PWM_PCT                                  ok              16.8627         Percent         N/A     N/A             N/A             N/A             N/A             N/A
FANBOARD0_FAN8_PWM_PCT                                  ok              16.8627         Percent         N/A     N/A             N/A             N/A             N/A             N/A
FANBOARD0_FAN9_PWM_PCT                                  ok              16.8627         Percent         N/A     N/A             N/A             N/A             N/A             N/A
FANBOARD1_FAN10_PWM_PCT                                 ok              16.8627         Percent         N/A     N/A             N/A             N/A             N/A             N/A
FANBOARD1_FAN11_PWM_PCT                                 ok              16.8627         Percent         N/A     N/A             N/A             N/A             N/A             N/A
FANBOARD1_FAN2_PWM_PCT                                  ok              16.8627         Percent         N/A     N/A             N/A             N/A             N/A             N/A
FANBOARD1_FAN3_PWM_PCT                                  ok              16.8627         Percent         N/A     N/A             N/A             N/A             N/A             N/A
FANBOARD1_FAN6_PWM_PCT                                  ok              16.8627         Percent         N/A     N/A             N/A             N/A             N/A             N/A
FANBOARD1_FAN7_PWM_PCT                                  ok              16.8627         Percent         N/A     N/A             N/A             N/A             N/A             N/A

// Check pid-control does not been trigger
root@bmc:~# journalctl -u phosphor-pid-control -n 10
Apr 11 16:07:29 bmc swampd[8181]: inputs: WAILUA_FALLS_SLOT_6_WF_VR_ASIC1_P0V8_TEMP_C, WAILUA_FALLS_SLOT_6_WF_VR_ASIC1_PVDDQ_CD_TEMP_C, WAILUA_FALLS_SLOT_6_WF_VR_ASIC1_P0V85_TEMP_C, WAILUA_FALLS_SLOT_6_WF_VR_ASIC1_PVDDQ_AB_TEMP_C, WAILUA_FALLS_SLOT_6_WF_VR_ASIC2_P0V8_TEMP_C, WAILUA_FALLS_SLOT_6_WF_VR_ASIC2_PVDDQ_CD_TEMP_C, WAILUA_FALLS_SLOT_6_WF_VR_ASIC2_P0V85_TEMP_C, WAILUA_FALLS_SLOT_6_WF_VR_ASIC2_PVDDQ_AB_TEMP_C,
Apr 11 16:07:29 bmc swampd[8181]: PID name: Stepwise_WF_VR_Slot_7
Apr 11 16:07:29 bmc swampd[8181]: inputs: WAILUA_FALLS_SLOT_7_WF_VR_ASIC1_P0V8_TEMP_C, WAILUA_FALLS_SLOT_7_WF_VR_ASIC1_PVDDQ_CD_TEMP_C, WAILUA_FALLS_SLOT_7_WF_VR_ASIC1_P0V85_TEMP_C, WAILUA_FALLS_SLOT_7_WF_VR_ASIC1_PVDDQ_AB_TEMP_C, WAILUA_FALLS_SLOT_7_WF_VR_ASIC2_P0V8_TEMP_C, WAILUA_FALLS_SLOT_7_WF_VR_ASIC2_PVDDQ_CD_TEMP_C, WAILUA_FALLS_SLOT_7_WF_VR_ASIC2_P0V85_TEMP_C, WAILUA_FALLS_SLOT_7_WF_VR_ASIC2_PVDDQ_AB_TEMP_C,
Apr 11 16:07:29 bmc swampd[8181]: PID name: Stepwise_WF_VR_Slot_8
Apr 11 16:07:29 bmc swampd[8181]: inputs: WAILUA_FALLS_SLOT_8_WF_VR_ASIC1_P0V8_TEMP_C, WAILUA_FALLS_SLOT_8_WF_VR_ASIC1_PVDDQ_CD_TEMP_C, WAILUA_FALLS_SLOT_8_WF_VR_ASIC1_P0V85_TEMP_C, WAILUA_FALLS_SLOT_8_WF_VR_ASIC1_PVDDQ_AB_TEMP_C, WAILUA_FALLS_SLOT_8_WF_VR_ASIC2_P0V8_TEMP_C, WAILUA_FALLS_SLOT_8_WF_VR_ASIC2_PVDDQ_CD_TEMP_C, WAILUA_FALLS_SLOT_8_WF_VR_ASIC2_P0V85_TEMP_C, WAILUA_FALLS_SLOT_8_WF_VR_ASIC2_PVDDQ_AB_TEMP_C,
Apr 11 16:07:29 bmc swampd[8181]: Build failsafe logger for Zone 0 with initial failsafe mode: 0
Apr 11 16:07:29 bmc swampd[8181]: pushing zone 0
Apr 11 16:07:29 bmc swampd[8181]: PID Zone 0 max SetPoint 17 requested by Stepwise_CALIBRATED_MB_FIO_Slot_8 FANBOARD0_FAN0_TACH_INLET_SPEED_RPMFANBOARD0_FAN0_PWM_PCT FANBOARD0_FAN0_TACH_OUTLET_SPEED_RPMFANBOARD0_FAN0_PWM_PCT FANBOARD0_FAN1_TACH_INLET_SPEED_RPMFANBOARD0_FAN1_PWM_PCT FANBOARD0_FAN1_TACH_OUTLET_SPEED_RPMFANBOARD0_FAN1_PWM_PCT FANBOARD0_FAN4_TACH_INLET_SPEED_RPMFANBOARD0_FAN4_PWM_PCT FANBOARD0_FAN4_TACH_OUTLET_SPEED_RPMFANBOARD0_FAN4_PWM_PCT FANBOARD0_FAN5_TACH_INLET_SPEED_RPMFANBOARD0_FAN5_PWM_PCT FANBOARD0_FAN5_TACH_OUTLET_SPEED_RPMFANBOARD0_FAN5_PWM_PCT FANBOARD0_FAN8_TACH_INLET_SPEED_RPMFANBOARD0_FAN8_PWM_PCT FANBOARD0_FAN8_TACH_OUTLET_SPEED_RPMFANBOARD0_FAN8_PWM_PCT FANBOARD0_FAN9_TACH_INLET_SPEED_RPMFANBOARD0_FAN9_PWM_PCT FANBOARD0_FAN9_TACH_OUTLET_SPEED_RPMFANBOARD0_FAN9_PWM_PCT FANBOARD1_FAN10_TACH_INLET_SPEED_RPMFANBOARD1_FAN10_PWM_PCT FANBOARD1_FAN10_TACH_OUTLET_SPEED_RPMFANBOARD1_FAN10_PWM_PCT FANBOARD1_FAN11_TACH_INLET_SPEED_RPMFANBOARD1_FAN11_PWM_PCT FANBOARD1_FAN11_TACH_OUTLET_SPEED_RPMFANBOARD1_FAN11_PWM_PCT FANBOARD1_FAN2_TACH_INLET_SPEED_RPMFANBOARD1_FAN2_PWM_PCT FANBOARD1_FAN2_TACH_OUTLET_SPEED_RPMFANBOARD1_FAN2_PWM_PCT FANBOARD1_FAN3_TACH_INLET_SPEED_RPMFANBOARD1_FAN3_PWM_PCT FANBOARD1_FAN3_TACH_OUTLET_SPEED_RPMFANBOARD1_FAN3_PWM_PCT FANBOARD1_FAN6_TACH_INLET_SPEED_RPMFANBOARD1_FAN6_PWM_PCT FANBOARD1_FAN6_TACH_OUTLET_SPEED_RPMFANBOARD1_FAN6_PWM_PCT FANBOARD1_FAN7_TACH_INLET_SPEED_RPMFANBOARD1_FAN7_PWM_PCT FANBOARD1_FAN7_TACH_OUTLET_SPEED_RPMFANBOARD1_FAN7_PWM_PCT
Apr 11 16:07:30 bmc swampd[8181]: Zone 0 fans, returning to normal mode, output pwm: 17
Apr 11 16:07:50 bmc swampd[8181]: PID Zone 0 max SetPoint 17 requested by Stepwise_CALIBRATED_MB_FIO_Slot_7
```

Change-Id: I4736ffe0d8300095a0a016280f02cc29d21bbdba
Signed-off-by: Patrick NC Lin <patrick.nc.lin.wiwynn@gmail.com>
22 files changed
tree: 210d83696014c506c5e80a9c0940eb30fef8a82c
  1. configurations/
  2. docs/
  3. schemas/
  4. scripts/
  5. service_files/
  6. src/
  7. subprojects/
  8. test/
  9. .clang-format
  10. .clang-tidy
  11. .gitignore
  12. .markdownlint.yaml
  13. .prettierignore
  14. .prettierrc.yaml
  15. .shellcheck
  16. blacklist.json
  17. CONFIG_FORMAT.md
  18. Doxyfile
  19. format-code
  20. LICENCE
  21. meson.build
  22. meson.options
  23. OWNERS
  24. README.md
README.md

Entity Manager

Entity manager is a design for managing physical system components, and mapping them to software resources within the BMC. Said resources are designed to allow the flexible adjustment of the system at runtime, as well as the reduction in the number of independent system configurations one needs to create.

Definitions

Entity

A server component that is physically separate, detectable through some means, and can be added or removed from a given OpenBMC system. Said component can, and likely does contain multiple sub-components, but the component itself as a whole is referred to as an entity.

Note, this term is needed because most other terms that could've been used (Component, Field Replaceable Unit, or Assembly) are already overloaded in the industry, and have a distinct definition already, which is a subset of what an entity encompasses.

Exposes

A particular feature of an Entity. An Entity generally will have multiple Exposes records for the various features that component supports. Some examples of features include, LM75 sensors, PID control parameters, or CPU information.

Probe

A set of rules for detecting a given entity. Said rules generally take the form of a D-Bus interface definition.

Goals

Entity manager has the following goals (unless you can think of better ones):

  1. Minimize the time and debugging required to "port" OpenBMC to new systems
  2. Reduce the amount of code that is different between platforms
  3. Create system level maintainability in the long term, across hundreds of platforms and components, such that components interoperate as much as physically possible.

Implementation

A full BMC setup using Entity Manager consists of a few parts:

  1. A detection daemon This is something that can be used to detect components at runtime. The most common of these, fru-device, is included in the Entity-Manager repo, and scans all available I2C buses for IPMI FRU EEPROM devices. Other examples of detection daemons include: peci-pcie: A daemon that utilizes the CPU bus to read in a list of PCIe devices from the processor. smbios-mdr: A daemon that utilizes the x86 SMBIOS table specification to detect the available systems dependencies from BIOS.

    In many cases, the existing detection daemons are sufficient for a single system, but in cases where there is a superseding inventory control system in place (such as in a large datacenter) they can be replaced with application specific daemons that speak the protocol information of their controller, and expose the inventory information, such that failing devices can be detected more readily, and system configurations can be "verified" rather than detected.

  2. An entity manager configuration file Entity manager configuration files are located in the ./configurations directory in the entity manager repository, and include one file per device supported. Entities are detected based on the "Probe" key in the json file. The intention is that this folder contains all hardware configurations that OpenBMC supports, to allows an easy answer to "Is X device supported". An EM configuration contains a number of Exposes records that specify the specific features that this Entity supports. Once a component is detected, entity manager will publish these Exposes records to D-Bus.

  3. A reactor The reactors are things that take the entity manager configurations, and use them to execute and enable the features that they describe. One example of this is dbus-sensors, which contains a suite of applications that input the Exposes records for sensor devices, then connect to the filesystem to create the sensors and scan loops to scan sensors for those devices. Other examples of reactors could include: CPU management daemons and Hot swap backplane management daemons, or drive daemons.

note: In some cases, a given daemon could be both a detection daemon and a reactor when architectures are multi-tiered. An example of this might include a hot swap backplane daemon, which both reacts to the hot swap being detected, and also creates detection records of what drives are present.

Associations

Entity Manager will automatically create associations between its entities in certain cases. For details see here.

Requirements

  1. Entity manager shall support the dynamic discovery of hardware at runtime, using inventory interfaces. The types of devices include, but are not limited to hard drives, hot swap backplanes, baseboards, power supplies, CPUs, and PCIe Add-in-cards.

  2. Entity manager shall support the ability to add or remove support for particular devices in a given binary image. By default, entity manager will support all available and known working devices for all platforms.

  3. Entity manager shall provide data to D-Bus about a particular device such that other daemons can create instances of the features being exposed.

  4. Entity manager shall support multiple detection runs, and shall do the minimal number of changes necessary when new components are detected or no longer detected. Some examples of re-detection events might include host power on, drive plug/unplug, PSU plug/unplug.

  5. Entity manager shall have exactly one configuration file per supported device model. In some cases this will cause duplicated information between files, but the ability to list and see all supported device models in a single place, as well as maintenance when devices do differ in the future is determined to be more important than duplication of configuration files.

Explicitly out of scope

  1. Entity manager shall not directly participate in the detection of devices, and instead will rely on other D-Bus applications to publish interfaces that can be detected.
  2. Entity manager shall not directly participate in management of any specific device. This is requirement is intended to intentionally limit the size and feature set of entity manager, to ensure it remains small, and effective to all users.

Entity Manager Compatible Software

bmcweb A webserver implementation that uses the inventory information from entity-manager to produce a Redfish compliant REST API. intel-ipmi-oem An implementation of the IPMI SDR, FRU, and Storage commands that utilize Entity Manager as the source of information.

Additional Documentation

  1. Entity Manager DBus API
  2. My First Sensor Example
  3. Configuration File Schema
  4. EEPROM address size detection modes