summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason M. Bills <jason.m.bills@linux.intel.com>2021-06-24 01:22:00 +0300
committerJason M. Bills <jason.m.bills@linux.intel.com>2021-06-24 01:22:00 +0300
commit5565c9abcc817b88098b849b2de5c017a8fb559f (patch)
tree2d2a10f694c3793a003a3cb1e2f9db52173cd3cb
parent2a64b8ae9b952b18b4aef38cb7c41ce6dba16c50 (diff)
parent000fd965915b31e7e613f7e9dfe7042f76dcc951 (diff)
downloadopenbmc-5565c9abcc817b88098b849b2de5c017a8fb559f.tar.xz
Merge tag '0.57' of ssh://git-amr-1.devtools.intel.com:29418/openbmc-openbmc into update
-rw-r--r--meta-amd/meta-ethanolx/conf/machine/ethanolx.conf1
-rw-r--r--meta-amd/meta-ethanolx/recipes-phosphor/configuration/entity-manager/ethanolx-baseboard.json30
-rw-r--r--meta-amd/meta-ethanolx/recipes-phosphor/configuration/entity-manager/ethanolx-chassis.json210
-rw-r--r--meta-amd/meta-ethanolx/recipes-phosphor/configuration/ethanolx-yaml-config/ethanolx-ipmi-sensors.yaml126
-rw-r--r--meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@48.conf8
-rw-r--r--meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@49.conf8
-rw-r--r--meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4a.conf8
-rw-r--r--meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4b.conf8
-rw-r--r--meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4c.conf8
-rw-r--r--meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4d.conf8
-rw-r--r--meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4e.conf8
-rw-r--r--meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4f.conf8
-rw-r--r--meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/pwm-tacho-controller@1e786000.conf23
-rw-r--r--meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon_%.bbappend20
-rw-r--r--meta-amd/recipes-amd/amd-fpga/amd-fpga.bb2
-rw-r--r--meta-aspeed/MAINTAINERS8
-rw-r--r--meta-aspeed/README.md4
-rw-r--r--meta-aspeed/classes/socsec-sign.bbclass66
-rw-r--r--meta-aspeed/recipes-bsp/u-boot/files/rsa_oem_dss_key.pem59
-rw-r--r--meta-aspeed/recipes-bsp/u-boot/files/rsa_pub_oem_dss_key.pem18
-rw-r--r--meta-aspeed/recipes-bsp/u-boot/u-boot-aspeed-sdk_2019.04.bb5
-rw-r--r--meta-aspeed/recipes-bsp/u-boot/u-boot-aspeed.inc42
-rw-r--r--meta-aspeed/recipes-bsp/u-boot/u-boot-common-aspeed-sdk_2019.04.inc2
-rw-r--r--meta-aspeed/recipes-kernel/linux/linux-aspeed.inc6
-rw-r--r--meta-aspeed/recipes-kernel/linux/linux-aspeed/rsa_oem_fitimage_key.crt35
-rw-r--r--meta-aspeed/recipes-kernel/linux/linux-aspeed/rsa_oem_fitimage_key.key60
-rw-r--r--meta-aspeed/recipes-kernel/linux/linux-aspeed_git.bb4
-rw-r--r--meta-bytedance/meta-g220a/recipes-phosphor/chassis/x86-power-control/power-config-host0.json11
-rw-r--r--meta-bytedance/meta-g220a/recipes-phosphor/chassis/x86-power-control_%.bbappend11
-rw-r--r--meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-config.bbappend1
-rw-r--r--meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-config/channel_config.json69
-rw-r--r--meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-kcs/99-ipmi-kcs.rules3
-rw-r--r--meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-kcs_%.bbappend12
-rw-r--r--meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-net_%.bbappend5
-rwxr-xr-xmeta-facebook/recipes-phosphor/ipmi/phosphor-ipmi-ipmb/yosemitev2/ipmb-channels.json7
-rw-r--r--meta-fii/conf/layer.conf2
-rw-r--r--meta-fii/meta-kudo/conf/layer.conf2
-rw-r--r--meta-fii/meta-kudo/conf/machine/kudo.conf7
-rw-r--r--meta-fii/meta-kudo/recipes-kernel/linux/linux-nuvoton/kudo.cfg2
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/hotswap-power-cycle/files/hotswap-power-cycle.service15
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/hotswap-power-cycle/hotswap-power-cycle.bb21
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/ipmi/fii-ipmi-oem_git.bb26
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw.bb6
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh13
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-lib.sh19
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot.bb30
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/host-powerctrl.service12
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/init_once.sh27
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd.bb21
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo-ras.sh575
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo.sh276
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-system/kudo-entity-association-map.bb16
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-system/kudo-entity-association-map/kudo_entity_association_map.json35
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/packagegroups/packagegroup-kudo-apps.bb16
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/configuration/entity-manager/blacklist.json3
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/configuration/entity-manager/kudo.json1616
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/configuration/entity-manager_%.bbappend8
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/console/obmc-console/kudo_uart_mux_ctrl.sh48
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/console/obmc-console/obmc-console@.service18
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/console/obmc-console/server.ttyS1.conf2
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/console/obmc-console/server.ttyS3.conf3
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/console/obmc-console_%.bbappend41
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/image/obmc-phosphor-image.bbappend10
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/ipmi/phosphor-ipmi-blobs-binarystore/config.json5
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/ipmi/phosphor-ipmi-blobs-binarystore_%.bbappend8
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend8
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/tla2024-enable.service9
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/tla2024-enable.sh3
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config.json394
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor_%.bbappend21
-rw-r--r--meta-google/recipes-connectivity/avahi/files/avahi-daemon.conf2
-rw-r--r--meta-google/recipes-core/dropbear/dropbear_%.bbappend4
-rw-r--r--meta-google/recipes-extended/networking/sslh_git.bb2
-rw-r--r--meta-google/recipes-google/google-misc/google-misc.inc2
-rw-r--r--meta-google/recipes-google/ncsi/files/50-gbmc-ncsi.rules.in20
-rw-r--r--meta-google/recipes-google/ncsi/files/gbmc-ncsi-br-pub-addr.sh.in101
-rw-r--r--meta-google/recipes-google/ncsi/files/gbmc-ncsi-nft.sh.in101
-rw-r--r--meta-google/recipes-google/ncsi/gbmc-ncsi-config.bb21
-rwxr-xr-xmeta-google/recipes-google/networking/files/gbmc-ip-monitor.sh2
-rw-r--r--meta-google/recipes-google/networking/gbmc-bridge.bb105
-rw-r--r--meta-google/recipes-google/networking/gbmc-bridge/+-bmc-gbmcbrusb.network8
-rw-r--r--meta-google/recipes-google/networking/gbmc-bridge/-bmc-gbmcbr.netdev5
-rw-r--r--meta-google/recipes-google/networking/gbmc-bridge/-bmc-gbmcbr.network.in9
-rw-r--r--meta-google/recipes-google/networking/gbmc-bridge/-bmc-gbmcbrdummy.netdev3
-rw-r--r--meta-google/recipes-google/networking/gbmc-bridge/-bmc-gbmcbrdummy.network4
-rw-r--r--meta-google/recipes-google/networking/gbmc-bridge/50-gbmc-br.rules27
-rw-r--r--meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-ensure-ra.service5
-rw-r--r--meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-ensure-ra.sh27
-rw-r--r--meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-from-ra.sh96
-rw-r--r--meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-gw-src.sh74
-rw-r--r--meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-nft.sh76
-rw-r--r--meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-ula.sh71
-rw-r--r--meta-google/recipes-google/networking/gbmc-bridge/ipmi.service.in11
-rw-r--r--meta-google/recipes-google/networking/gbmc-iperf3.bb4
-rw-r--r--meta-google/recipes-google/networking/network-sh/lib.sh236
-rwxr-xr-xmeta-google/recipes-google/networking/network-sh/test.sh169
-rw-r--r--meta-google/recipes-google/systemd/files/40-gbmc-forward.conf5
-rw-r--r--meta-google/recipes-google/systemd/gbmc-systemd-config.bb29
-rw-r--r--meta-ibm/conf/machine/p10bmc.conf23
l---------meta-ibm/conf/machine/rainier.conf1
-rw-r--r--meta-ibm/conf/machine/witherspoon-tacoma.conf1
-rw-r--r--meta-ibm/recipes-core/systemd/systemd/journald-size-policy-16MB.conf8
-rw-r--r--meta-ibm/recipes-core/systemd/systemd/journald-size-policy-2MB.conf (renamed from meta-ibm/recipes-core/systemd/systemd/journald-size-policy.conf)0
-rw-r--r--meta-ibm/recipes-core/systemd/systemd_%.bbappend8
-rw-r--r--meta-ibm/recipes-extended/sudo/sudo_%.bbappend8
-rw-r--r--meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/everest/config.json24
-rw-r--r--meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/rainier-1s4u/config.json20
-rw-r--r--meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/rainier-2u/config.json84
-rw-r--r--meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/rainier-4u/config.json30
-rw-r--r--meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/everest/config.json8
-rw-r--r--meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/rainier-1s4u/config.json8
-rw-r--r--meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/rainier-2u/config.json12
-rw-r--r--meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/rainier-4u/config.json12
-rw-r--r--meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/witherspoon/config.json8
-rw-r--r--meta-ibm/recipes-phosphor/images/obmc-phosphor-image.bbappend58
-rw-r--r--meta-ibm/recipes-phosphor/inventory/phosphor-inventory-manager/p10bmc/ibm,everest_associations.json1085
-rw-r--r--meta-ibm/recipes-phosphor/inventory/phosphor-inventory-manager/p10bmc/ibm,rainier-2u_associations.json430
-rw-r--r--meta-ibm/recipes-phosphor/inventory/phosphor-inventory-manager/p10bmc/ibm,rainier-4u_associations.json507
-rw-r--r--meta-ibm/recipes-phosphor/network/phosphor-network_%.bbappend2
-rw-r--r--meta-ibm/recipes-phosphor/power/phosphor-power_%.bbappend4
-rwxr-xr-xmeta-intel-openbmc/meta-common/recipes-intel/ipmi/intel-ipmi-oem_git.bb2
-rw-r--r--meta-intel-openbmc/meta-common/recipes-phosphor/leds/intel-led-manager-config-native.bb2
-rw-r--r--meta-lenovo/meta-hr630/recipes-phosphor/network/phosphor-network_%.bbappend6
-rw-r--r--meta-lenovo/meta-hr855xg2/recipes-phosphor/network/phosphor-network_%.bbappend6
-rw-r--r--meta-nuvoton/MAINTAINERS5
-rw-r--r--meta-nuvoton/recipes-kernel/linux/linux-nuvoton_git.bb4
-rw-r--r--meta-openpower/classes/openpower-software-manager-virtual-pnor.bbclass4
-rw-r--r--meta-openpower/recipes-phosphor/flash/openpower-software-manager_git.bb2
-rw-r--r--meta-openpower/recipes-phosphor/host/op-proc-control_git.bb2
-rw-r--r--meta-openpower/recipes-phosphor/ipmi/openpower-host-ipmi-flash_git.bb2
-rw-r--r--meta-openpower/recipes-phosphor/logging/openpower-hw-diags_git.bb2
-rw-r--r--meta-openpower/recipes-phosphor/logging/openpower-libhei_git.bb4
-rw-r--r--meta-openpower/recipes-phosphor/occ/openpower-occ-control.inc2
-rw-r--r--meta-openpower/recipes-phosphor/vpd/openpower-fru-vpd.inc2
-rw-r--r--meta-phosphor/classes/phosphor-networkd-rev.bbclass2
-rw-r--r--meta-phosphor/recipes-extended/pam/pam-ipmi_git.bb2
-rw-r--r--meta-phosphor/recipes-extended/sdbusplus/sdbusplus-rev.inc2
-rw-r--r--meta-phosphor/recipes-extended/stdplus/stdplus_git.bb2
-rw-r--r--meta-phosphor/recipes-graphics/obmc-ikvm/obmc-ikvm_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/certificate/phosphor-certificate-manager_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/configuration/entity-manager_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/console/obmc-console_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/datetime/phosphor-time-manager/xyz.openbmc_project.Time.Manager.service16
-rw-r--r--meta-phosphor/recipes-phosphor/datetime/phosphor-time-manager_git.bb4
-rw-r--r--meta-phosphor/recipes-phosphor/dbus/phosphor-dbus-interfaces_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/dbus/phosphor-dbus-monitor_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector.inc2
-rw-r--r--meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector_git.bb1
-rw-r--r--meta-phosphor/recipes-phosphor/fans/phosphor-fan.inc2
-rw-r--r--meta-phosphor/recipes-phosphor/fans/phosphor-pid-control_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/flash/phosphor-software-manager.inc2
-rw-r--r--meta-phosphor/recipes-phosphor/initrdscripts/phosphor-mmc-init/mmc-init.sh5
-rw-r--r--meta-phosphor/recipes-phosphor/interfaces/bmcweb_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/inventory/phosphor-inventory-manager.inc2
-rw-r--r--meta-phosphor/recipes-phosphor/ipmi/ipmi-blob-tool_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-blobs_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-bt_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-flash_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-host.inc2
-rw-r--r--meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-host_git.bb3
-rw-r--r--meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-kcs_git.bb5
-rw-r--r--meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-net_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/leds/phosphor-led-manager.inc2
-rw-r--r--meta-phosphor/recipes-phosphor/leds/phosphor-led-sysfs_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/logging/phosphor-logging/xyz.openbmc_project.Logging.service12
-rw-r--r--meta-phosphor/recipes-phosphor/logging/phosphor-logging/xyz.openbmc_project.Syslog.Config.service12
-rw-r--r--meta-phosphor/recipes-phosphor/logging/phosphor-logging_git.bb25
-rw-r--r--meta-phosphor/recipes-phosphor/mboxd/mboxd_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/mctp/mctp_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/misc/phosphor-misc_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/network/phosphor-network_git.bb9
-rw-r--r--meta-phosphor/recipes-phosphor/network/phosphor-snmp_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/pldm/pldm.inc2
-rw-r--r--meta-phosphor/recipes-phosphor/power/phosphor-power.inc2
-rw-r--r--meta-phosphor/recipes-phosphor/power/phosphor-power_git.bb6
-rw-r--r--meta-phosphor/recipes-phosphor/sensors/dbus-sensors_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/70-hwmon.rules2
-rw-r--r--meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/70-iio.rules2
-rw-r--r--meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/phosphor-max31785-msl@.service12
-rwxr-xr-xmeta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/start_hwmon.sh24
-rw-r--r--meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/xyz.openbmc_project.Hwmon@.service10
-rw-r--r--meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon_git.bb65
-rw-r--r--meta-phosphor/recipes-phosphor/sensors/phosphor-nvme_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/sensors/phosphor-virtual-sensor_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/settings/phosphor-settings-manager.inc2
-rw-r--r--meta-phosphor/recipes-phosphor/settings/phosphor-settings-manager_git.bb1
-rw-r--r--meta-phosphor/recipes-phosphor/state/phosphor-state-manager_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/users/phosphor-user-manager_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/watchdog/phosphor-watchdog_git.bb2
-rw-r--r--meta-phosphor/recipes-phosphor/webui/webui-vue_git.bb2
-rwxr-xr-xmeta-phosphor/recipes-x86/chassis/x86-power-control_git.bb2
-rwxr-xr-xmeta-quanta/meta-common/recipes-phosphor/health/files/bmc_health_config.json15
-rwxr-xr-xmeta-quanta/meta-common/recipes-phosphor/health/phosphor-health-monitor_%.bbappend9
-rw-r--r--meta-quanta/meta-gbs/conf/machine/gbs.conf6
-rw-r--r--meta-quanta/meta-gbs/recipes-bsp/u-boot/u-boot-fw-utils-nuvoton/fw_env.config24
-rw-r--r--meta-quanta/meta-gbs/recipes-bsp/u-boot/u-boot-fw-utils-nuvoton_%.bbappend6
-rw-r--r--meta-quanta/meta-gbs/recipes-gbs/gbs-bios-update/gbs-bios-update.bb3
-rw-r--r--meta-quanta/meta-gbs/recipes-gbs/gbs-nvme-pwr-ctrl/gbs-nvme-pwr-ctrl.bb2
-rw-r--r--meta-quanta/meta-gbs/recipes-gbs/gbs-sysinit/gbs-sysinit.bb3
-rw-r--r--meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/gbs-hotswap-power-cycle.bb1
-rw-r--r--meta-quanta/meta-gbs/recipes-google/acpi-power-state/acpi-power-state-daemon/gbs-host-s0-set-failsafe.service4
-rw-r--r--meta-quanta/meta-gbs/recipes-kernel/linux/linux-nuvoton/0003-Add-basic-support-for-SB-TSI-sensors.patch327
-rw-r--r--meta-quanta/meta-gbs/recipes-kernel/linux/linux-nuvoton/gbs.cfg12
-rw-r--r--meta-quanta/meta-gbs/recipes-kernel/linux/linux-nuvoton_%.bbappend1
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/configuration/gbs-yaml-config.bb4
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/configuration/gbs-yaml-config/gbs-ipmi-inventory-sensors.yaml435
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/console/files/80-gbs-nuvoton-sol.rules1
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/console/obmc-console_%.bbappend13
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/dbus/phosphor-dbus-interfaces/0024-Add-the-pre-timeout-interrupt-defined-in-IPMI-spec.patch57
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/dbus/phosphor-dbus-interfaces/0025-Add-PreInterruptFlag-properity-in-DBUS.patch39
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend5
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/images/obmc-phosphor-image.bbappend1
-rwxr-xr-xmeta-quanta/meta-gbs/recipes-phosphor/interfaces/bmcweb_%.bbappend9
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-flash_%.bbappend2
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0001-Add-Chassis-State-Transition-interface.patch79
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0001-Fix-issues-and-support-signed-sensor-values.patch169
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0002-Update-Host-State-Transition-function.patch137
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0003-Update-IPMI-Chassis-Control-command-transition-reque.patch180
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0063-Save-the-pre-timeout-interrupt-in-dbus-property.patch138
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend15
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/leds/phosphor-led-manager_%.bbappend15
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/logging/phosphor-logging_%.bbappend1
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/network/phosphor-network_%.bbappend3
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/packagegroups/packagegroup-gbs-apps.bb2
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/packagegroups/packagegroup-obmc-apps%.bbappend4
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/sel-logger/phosphor-sel-logger_%.bbappend7
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon/0002-Add-power-on-monitor-mechanism.patch (renamed from meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon/0001-lev-add-poweron-monitor-feature.patch)144
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon/0002-lev-add-sensors-slow-readings.patch295
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/pwm-fan-controller@103000.conf10
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon_%.bbappend5
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-virtual-sensor/config-virtual-sensor.json12
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-virtual-sensor/phosphor-virtual-sensor.service.replace7
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-virtual-sensor_%.bbappend4
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/0001-Customize-phosphor-watchdog-for-Intel-platforms.patch313
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/obmc/watchdog/host08
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-host-watchdog-powercycle.service9
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-host-watchdog-poweroff.service8
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-host-watchdog-reset.service9
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog.service16
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog@.service17
-rw-r--r--meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog_%.bbappend14
-rw-r--r--meta-quanta/meta-gsj/recipes-gsj/mac-address/files/mac-address.service11
-rw-r--r--meta-quanta/meta-gsj/recipes-gsj/mac-address/mac-address.bb34
-rw-r--r--meta-quanta/meta-gsj/recipes-phosphor/network/phosphor-network_%.bbappend1
-rw-r--r--meta-quanta/meta-gsj/recipes-quanta/network/mac-address/mac-address/config.txt (renamed from meta-quanta/meta-gsj/recipes-gsj/mac-address/files/config.txt)0
-rw-r--r--meta-quanta/meta-gsj/recipes-quanta/network/mac-address_%.bbappend10
-rw-r--r--meta-wistron/OWNERS9
-rw-r--r--meta-yadro/meta-nicole/recipes-phosphor/network/phosphor-network_%.bbappend2
248 files changed, 7874 insertions, 2912 deletions
diff --git a/meta-amd/meta-ethanolx/conf/machine/ethanolx.conf b/meta-amd/meta-ethanolx/conf/machine/ethanolx.conf
index 7469c9a1c..7fb6e7ec1 100644
--- a/meta-amd/meta-ethanolx/conf/machine/ethanolx.conf
+++ b/meta-amd/meta-ethanolx/conf/machine/ethanolx.conf
@@ -24,6 +24,7 @@ OBMC_MACHINE_FEATURES += "\
VIRTUAL-RUNTIME_skeleton_workbook = "${MACHINE}-config"
VIRTUAL-RUNTIME_obmc-host-state-manager ?= "x86-power-control"
VIRTUAL-RUNTIME_obmc-chassis-state-manager ?= "x86-power-control"
+VIRTUAL-RUNTIME_obmc-sensors-hwmon ?= "dbus-sensors"
PREFERRED_PROVIDER_virtual/obmc-chassis-mgmt = "packagegroup-amd-apps"
PREFERRED_PROVIDER_virtual/obmc-fan-mgmt = "packagegroup-amd-apps"
diff --git a/meta-amd/meta-ethanolx/recipes-phosphor/configuration/entity-manager/ethanolx-baseboard.json b/meta-amd/meta-ethanolx/recipes-phosphor/configuration/entity-manager/ethanolx-baseboard.json
index 0ce9f8096..cea3d0602 100644
--- a/meta-amd/meta-ethanolx/recipes-phosphor/configuration/entity-manager/ethanolx-baseboard.json
+++ b/meta-amd/meta-ethanolx/recipes-phosphor/configuration/entity-manager/ethanolx-baseboard.json
@@ -11,6 +11,36 @@
"Type": "FanConnector"
},
{
+ "Name": "SYS FAN1 connector",
+ "Status": "disabled",
+ "Type": "FanConnector"
+ },
+ {
+ "Name": "SYS FAN2 connector",
+ "Status": "disabled",
+ "Type": "FanConnector"
+ },
+ {
+ "Name": "SYS FAN3 connector",
+ "Status": "disabled",
+ "Type": "FanConnector"
+ },
+ {
+ "Name": "SYS FAN4 connector",
+ "Status": "disabled",
+ "Type": "FanConnector"
+ },
+ {
+ "Name": "SYS FAN5 connector",
+ "Status": "disabled",
+ "Type": "FanConnector"
+ },
+ {
+ "Name": "SYS FAN6 connector",
+ "Status": "disabled",
+ "Type": "FanConnector"
+ },
+ {
"Address": "0x48",
"Bus": 7,
"Name": "BMC",
diff --git a/meta-amd/meta-ethanolx/recipes-phosphor/configuration/entity-manager/ethanolx-chassis.json b/meta-amd/meta-ethanolx/recipes-phosphor/configuration/entity-manager/ethanolx-chassis.json
index ff4cbdc54..329ed0286 100644
--- a/meta-amd/meta-ethanolx/recipes-phosphor/configuration/entity-manager/ethanolx-chassis.json
+++ b/meta-amd/meta-ethanolx/recipes-phosphor/configuration/entity-manager/ethanolx-chassis.json
@@ -69,6 +69,216 @@
"Value": 8000
}
]
+ },
+ {
+ "Index": 2,
+ "BindConnector": "SYS FAN1 connector",
+ "MaxReading": 6000,
+ "Name": "SYS_FAN1",
+ "Type": "AspeedFan",
+ "Pwm": 3,
+ "Tachs": [3],
+ "Thresholds": [
+ {
+ "Direction": "less than",
+ "Name": "lower critical",
+ "Severity": 1,
+ "Value": 0
+ },
+ {
+ "Direction": "less than",
+ "Name": "lower non critical",
+ "Severity": 0,
+ "Value": 10
+ },
+ {
+ "Direction": "greater than",
+ "Name": "upper critical",
+ "Severity": 1,
+ "Value": 10000
+ },
+ {
+ "Direction": "greater than",
+ "Name": "upper non critical",
+ "Severity": 0,
+ "Value": 8000
+ }
+ ]
+ },
+ {
+ "Index": 3,
+ "BindConnector": "SYS FAN2 connector",
+ "MaxReading": 6000,
+ "Name": "SYS_FAN2",
+ "Type": "AspeedFan",
+ "Pwm": 4,
+ "Tachs": [4],
+ "Thresholds": [
+ {
+ "Direction": "less than",
+ "Name": "lower critical",
+ "Severity": 1,
+ "Value": 0
+ },
+ {
+ "Direction": "less than",
+ "Name": "lower non critical",
+ "Severity": 0,
+ "Value": 10
+ },
+ {
+ "Direction": "greater than",
+ "Name": "upper critical",
+ "Severity": 1,
+ "Value": 10000
+ },
+ {
+ "Direction": "greater than",
+ "Name": "upper non critical",
+ "Severity": 0,
+ "Value": 8000
+ }
+ ]
+ },
+ {
+ "Index": 4,
+ "BindConnector": "SYS FAN3 connector",
+ "MaxReading": 6000,
+ "Name": "SYS_FAN3",
+ "Type": "AspeedFan",
+ "Pwm": 5,
+ "Tachs": [5],
+ "Thresholds": [
+ {
+ "Direction": "less than",
+ "Name": "lower critical",
+ "Severity": 1,
+ "Value": 0
+ },
+ {
+ "Direction": "less than",
+ "Name": "lower non critical",
+ "Severity": 0,
+ "Value": 10
+ },
+ {
+ "Direction": "greater than",
+ "Name": "upper critical",
+ "Severity": 1,
+ "Value": 10000
+ },
+ {
+ "Direction": "greater than",
+ "Name": "upper non critical",
+ "Severity": 0,
+ "Value": 8000
+ }
+ ]
+ },
+ {
+ "Index": 5,
+ "BindConnector": "SYS FAN4 connector",
+ "MaxReading": 6000,
+ "Name": "SYS_FAN4",
+ "Type": "AspeedFan",
+ "Pwm": 6,
+ "Tachs": [6],
+ "Thresholds": [
+ {
+ "Direction": "less than",
+ "Name": "lower critical",
+ "Severity": 1,
+ "Value": 0
+ },
+ {
+ "Direction": "less than",
+ "Name": "lower non critical",
+ "Severity": 0,
+ "Value": 10
+ },
+ {
+ "Direction": "greater than",
+ "Name": "upper critical",
+ "Severity": 1,
+ "Value": 10000
+ },
+ {
+ "Direction": "greater than",
+ "Name": "upper non critical",
+ "Severity": 0,
+ "Value": 8000
+ }
+ ]
+ },
+ {
+ "Index": 6,
+ "BindConnector": "SYS FAN5 connector",
+ "MaxReading": 6000,
+ "Name": "SYS_FAN5",
+ "Type": "AspeedFan",
+ "Pwm": 7,
+ "Tachs": [7],
+ "Thresholds": [
+ {
+ "Direction": "less than",
+ "Name": "lower critical",
+ "Severity": 1,
+ "Value": 0
+ },
+ {
+ "Direction": "less than",
+ "Name": "lower non critical",
+ "Severity": 0,
+ "Value": 10
+ },
+ {
+ "Direction": "greater than",
+ "Name": "upper critical",
+ "Severity": 1,
+ "Value": 10000
+ },
+ {
+ "Direction": "greater than",
+ "Name": "upper non critical",
+ "Severity": 0,
+ "Value": 8000
+ }
+ ]
+ },
+ {
+ "Index": 7,
+ "BindConnector": "SYS FAN6 connector",
+ "MaxReading": 6000,
+ "Name": "SYS_FAN6",
+ "Type": "AspeedFan",
+ "Pwm": 8,
+ "Tachs": [8],
+ "Thresholds": [
+ {
+ "Direction": "less than",
+ "Name": "lower critical",
+ "Severity": 1,
+ "Value": 0
+ },
+ {
+ "Direction": "less than",
+ "Name": "lower non critical",
+ "Severity": 0,
+ "Value": 10
+ },
+ {
+ "Direction": "greater than",
+ "Name": "upper critical",
+ "Severity": 1,
+ "Value": 10000
+ },
+ {
+ "Direction": "greater than",
+ "Name": "upper non critical",
+ "Severity": 0,
+ "Value": 8000
+ }
+ ]
}
],
"Name": "AMD EthanolX Chassis",
diff --git a/meta-amd/meta-ethanolx/recipes-phosphor/configuration/ethanolx-yaml-config/ethanolx-ipmi-sensors.yaml b/meta-amd/meta-ethanolx/recipes-phosphor/configuration/ethanolx-yaml-config/ethanolx-ipmi-sensors.yaml
index 24f827902..e9a25ccce 100644
--- a/meta-amd/meta-ethanolx/recipes-phosphor/configuration/ethanolx-yaml-config/ethanolx-ipmi-sensors.yaml
+++ b/meta-amd/meta-ethanolx/recipes-phosphor/configuration/ethanolx-yaml-config/ethanolx-ipmi-sensors.yaml
@@ -200,3 +200,129 @@
Offsets:
0x0:
type: double
+
+11:
+ entityID: 0x1D
+ sensorType: 0x04
+ path: /xyz/openbmc_project/sensors/fan_tach/SYS_FAN1
+ sensorReadingType: 0x01
+ multiplierM: 40
+ offsetB: 0
+ bExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+ scale: 0
+ rExp: 0
+ mutability: Mutability::Read
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0x0:
+ type: double
+
+12:
+ entityID: 0x1D
+ sensorType: 0x04
+ path: /xyz/openbmc_project/sensors/fan_tach/SYS_FAN2
+ sensorReadingType: 0x01
+ multiplierM: 40
+ offsetB: 0
+ bExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+ scale: 0
+ rExp: 0
+ mutability: Mutability::Read
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0x0:
+ type: double
+
+13:
+ entityID: 0x1D
+ sensorType: 0x04
+ path: /xyz/openbmc_project/sensors/fan_tach/SYS_FAN3
+ sensorReadingType: 0x01
+ multiplierM: 40
+ offsetB: 0
+ bExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+ scale: 0
+ rExp: 0
+ mutability: Mutability::Read
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0x0:
+ type: double
+
+14:
+ entityID: 0x1D
+ sensorType: 0x04
+ path: /xyz/openbmc_project/sensors/fan_tach/SYS_FAN4
+ sensorReadingType: 0x01
+ multiplierM: 40
+ offsetB: 0
+ bExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+ scale: 0
+ rExp: 0
+ mutability: Mutability::Read
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0x0:
+ type: double
+
+15:
+ entityID: 0x1D
+ sensorType: 0x04
+ path: /xyz/openbmc_project/sensors/fan_tach/SYS_FAN5
+ sensorReadingType: 0x01
+ multiplierM: 40
+ offsetB: 0
+ bExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+ scale: 0
+ rExp: 0
+ mutability: Mutability::Read
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0x0:
+ type: double
+
+16:
+ entityID: 0x1D
+ sensorType: 0x04
+ path: /xyz/openbmc_project/sensors/fan_tach/SYS_FAN6
+ sensorReadingType: 0x01
+ multiplierM: 40
+ offsetB: 0
+ bExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+ scale: 0
+ rExp: 0
+ mutability: Mutability::Read
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0x0:
+ type: double
diff --git a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@48.conf b/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@48.conf
deleted file mode 100644
index 9cd98bb25..000000000
--- a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@48.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-LABEL_temp1= "BMC"
-WARNLO_temp1= "5000"
-WARNHI_temp1= "38000"
-CRITHI_temp1 = "40000"
-CRITLO_temp1 = "0"
-MINVALUE_temp1 = "-128"
-MAXVALUE_temp1 = "127"
-EVENT_temp1= "WARNHI,WARNLO,CRITHI,CRITLO"
diff --git a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@49.conf b/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@49.conf
deleted file mode 100644
index 8e4a2afb6..000000000
--- a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@49.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-LABEL_temp1= "DIMM_P0_ABCD_P1_EFGH"
-WARNLO_temp1= "5000"
-WARNHI_temp1= "38000"
-CRITHI_temp1 = "40000"
-CRITLO_temp1 = "0"
-MINVALUE_temp1 = "-128"
-MAXVALUE_temp1 = "127"
-EVENT_temp1= "WARNHI,WARNLO,CRITHI,CRITLO"
diff --git a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4a.conf b/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4a.conf
deleted file mode 100644
index 5c5c230be..000000000
--- a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4a.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-LABEL_temp1= "DIMM_P1_EFGH"
-WARNLO_temp1= "5000"
-WARNHI_temp1= "38000"
-CRITHI_temp1 = "40000"
-CRITLO_temp1 = "0"
-MINVALUE_temp1 = "-128"
-MAXVALUE_temp1 = "127"
-EVENT_temp1= "WARNHI,WARNLO,CRITHI,CRITLO"
diff --git a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4b.conf b/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4b.conf
deleted file mode 100644
index 3570aafdf..000000000
--- a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4b.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-LABEL_temp1= "PCIe_Slots"
-WARNLO_temp1= "5000"
-WARNHI_temp1= "38000"
-CRITHI_temp1 = "40000"
-CRITLO_temp1 = "0"
-MINVALUE_temp1 = "-128"
-MAXVALUE_temp1 = "127"
-EVENT_temp1= "WARNHI,WARNLO,CRITHI,CRITLO"
diff --git a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4c.conf b/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4c.conf
deleted file mode 100644
index 68143291a..000000000
--- a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4c.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-LABEL_temp1= "DIMM_P0_EFGH_P1_ABCD"
-WARNLO_temp1= "5000"
-WARNHI_temp1= "38000"
-CRITHI_temp1 = "40000"
-CRITLO_temp1 = "0"
-MINVALUE_temp1 = "-128"
-MAXVALUE_temp1 = "127"
-EVENT_temp1= "WARNHI,WARNLO,CRITHI,CRITLO"
diff --git a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4d.conf b/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4d.conf
deleted file mode 100644
index 51a5e29d4..000000000
--- a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4d.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-LABEL_temp1= "DIMM_P1_ABCD"
-WARNLO_temp1= "5000"
-WARNHI_temp1= "38000"
-CRITHI_temp1 = "40000"
-CRITLO_temp1 = "0"
-MINVALUE_temp1 = "-128"
-MAXVALUE_temp1 = "127"
-EVENT_temp1= "WARNHI,WARNLO,CRITHI,CRITLO"
diff --git a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4e.conf b/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4e.conf
deleted file mode 100644
index 0c28e5d25..000000000
--- a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4e.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-LABEL_temp1= "DIMM_P0_EFGH"
-WARNLO_temp1= "5000"
-WARNHI_temp1= "38000"
-CRITHI_temp1 = "40000"
-CRITLO_temp1 = "0"
-MINVALUE_temp1 = "-128"
-MAXVALUE_temp1 = "127"
-EVENT_temp1= "WARNHI,WARNLO,CRITHI,CRITLO"
diff --git a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4f.conf b/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4f.conf
deleted file mode 100644
index 9a0eb7565..000000000
--- a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/bus@1e78a000/i2c-bus@300/lm75a@4f.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-LABEL_temp1= "DIMM_P0_ABCD"
-WARNLO_temp1= "5000"
-WARNHI_temp1= "38000"
-CRITHI_temp1 = "40000"
-CRITLO_temp1 = "0"
-MINVALUE_temp1 = "-128"
-MAXVALUE_temp1 = "127"
-EVENT_temp1= "WARNHI,WARNLO,CRITHI,CRITLO"
diff --git a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/pwm-tacho-controller@1e786000.conf b/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/pwm-tacho-controller@1e786000.conf
deleted file mode 100644
index 0620d1640..000000000
--- a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/pwm-tacho-controller@1e786000.conf
+++ /dev/null
@@ -1,23 +0,0 @@
-# EthanolX has 8 fan ports but only 2 are standard 4-wire fans with PWM and TACH.
-LABEL_fan1 = "P0_Fan_Speed"
-LABEL_fan2 = "P1_Fan_Speed"
-
-PWM_TARGET_fan1 = "1"
-PWM_TARGET_fan2 = "2"
-
-WARNLO_fan1= "10"
-WARNHI_fan1= "8000"
-CRITHI_fan1 = "10000"
-CRITLO_fan1 = "0"
-MINVALUE_fan1 = "100"
-MAXVALUE_fan1 = "6000"
-EVENT_fan1= "WARNHI,WARNLO,CRITHI,CRITLO"
-
-WARNLO_fan2= "10"
-WARNHI_fan2= "8000"
-CRITHI_fan2 = "10000"
-CRITLO_fan2 = "0"
-MINVALUE_fan2 = "100"
-MAXVALUE_fan2 = "6000"
-EVENT_fan2= "WARNHI,WARNLO,CRITHI,CRITLO"
-
diff --git a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon_%.bbappend b/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon_%.bbappend
deleted file mode 100644
index b0631e627..000000000
--- a/meta-amd/meta-ethanolx/recipes-phosphor/sensors/phosphor-hwmon_%.bbappend
+++ /dev/null
@@ -1,20 +0,0 @@
-FILESEXTRAPATHS_prepend_ethanolx := "${THISDIR}/${PN}:"
-EXTRA_OEMESON_append_ethanolx = " -Dnegative-errno-on-fail=true"
-
-
-CHIPS = " \
- bus@1e78a000/i2c-bus@300/lm75a@48 \
- bus@1e78a000/i2c-bus@300/lm75a@49 \
- bus@1e78a000/i2c-bus@300/lm75a@4a \
- bus@1e78a000/i2c-bus@300/lm75a@4b \
- bus@1e78a000/i2c-bus@300/lm75a@4c \
- bus@1e78a000/i2c-bus@300/lm75a@4d \
- bus@1e78a000/i2c-bus@300/lm75a@4e \
- bus@1e78a000/i2c-bus@300/lm75a@4f \
- pwm-tacho-controller@1e786000 \
- "
-ITEMSFMT = "ahb/apb/{0}.conf"
-ITEMS = "${@compose_list(d, 'ITEMSFMT', 'CHIPS')}"
-
-ENVS = "obmc/hwmon/{0}"
-SYSTEMD_ENVIRONMENT_FILE_${PN}_append_ethanolx = " ${@compose_list(d, 'ENVS', 'ITEMS')}"
diff --git a/meta-amd/recipes-amd/amd-fpga/amd-fpga.bb b/meta-amd/recipes-amd/amd-fpga/amd-fpga.bb
index 3fcaeaa91..32efddea2 100644
--- a/meta-amd/recipes-amd/amd-fpga/amd-fpga.bb
+++ b/meta-amd/recipes-amd/amd-fpga/amd-fpga.bb
@@ -10,7 +10,7 @@ SRCREV = "${AUTOREV}"
SRC_URI = "file://fpgardu.sh"
SRC_URI += "file://LICENSE"
-S = "${WORKDIR}/"
+S = "${WORKDIR}"
do_install () {
install -d ${D}${bindir}
diff --git a/meta-aspeed/MAINTAINERS b/meta-aspeed/MAINTAINERS
index 453d5e497..f1f736f31 100644
--- a/meta-aspeed/MAINTAINERS
+++ b/meta-aspeed/MAINTAINERS
@@ -14,7 +14,7 @@ Description of section entries:
Section entries are structured according to the following scheme:
- X: NAME <EMAIL_USERNAME@DOMAIN> <IRC_USERNAME!>
+ X: NAME <EMAIL_USERNAME@DOMAIN> <DISCORD_USERNAME!>
X: ...
.
.
@@ -24,10 +24,10 @@ Description of section entries:
organization; FILE_PATH is a file path within the repository, possibly with
wildcards; X is a tag of one of the following types:
- M: Denotes maintainer; has fields NAME <EMAIL_USERNAME@DOMAIN> <IRC_USERNAME!>;
+ M: Denotes maintainer; has fields NAME <EMAIL_USERNAME@DOMAIN> <DISCORD_USERNAME!>;
if omitted from an entry, assume one of the maintainers from the
MAINTAINERS entry.
- R: Denotes reviewer; has fields NAME <EMAIL_USERNAME@DOMAIN> <IRC_USERNAME!>;
+ R: Denotes reviewer; has fields NAME <EMAIL_USERNAME@DOMAIN> <DISCORD_USERNAME!>;
these people are to be added as reviewers for a change matching the repo
path.
F: Denotes forked from an external repository; has fields URL.
@@ -46,4 +46,4 @@ START OF MAINTAINERS LIST
# @openbmc and is synced by the maintainer using git-subtree. Please submit
# changes against @openbmc.
M: Brad Bishop <bradleyb@fuzziesquirrel.com> <radsquirrel!>
-M: Joel Stanley <joel@jms.id.au> <shenki!>
+M: Joel Stanley <joel@jms.id.au>
diff --git a/meta-aspeed/README.md b/meta-aspeed/README.md
index b97bbc78d..c0fab4e9d 100644
--- a/meta-aspeed/README.md
+++ b/meta-aspeed/README.md
@@ -32,5 +32,5 @@ Patch checklist. Please ensure patches adhere to the following guidelines:
message](https://chris.beams.io/posts/git-commit/#seven-rules)
For questions or help please come join us on the [mailing
-list](https://lists.ozlabs.org/listinfo/openbmc) or in
-[IRC](irc://freenode.net/openbmc).
+list](https://lists.ozlabs.org/listinfo/openbmc) or on
+[Discord](https://discord.gg/69Km47zH98).
diff --git a/meta-aspeed/classes/socsec-sign.bbclass b/meta-aspeed/classes/socsec-sign.bbclass
new file mode 100644
index 000000000..1b1576592
--- /dev/null
+++ b/meta-aspeed/classes/socsec-sign.bbclass
@@ -0,0 +1,66 @@
+# ASPEED AST2600 devices can use Aspeed's utility 'socsec'
+# to sign the SPL (pubkey written to OTP region)
+# The variables below carry default values to the spl_sign()
+# function below.
+SOCSEC_SIGN_ENABLE ?= "0"
+SOCSEC_SIGN_KEY ?= ""
+SOCSEC_SIGN_SOC ?= "2600"
+SOCSEC_SIGN_ALGO ?= "RSA4096_SHA512"
+SOCSEC_SIGN_HELPER ?= ""
+# u-boot-aspeed-sdk commit '2c3b53489c ast2600: Modify SPL SRAM layout'
+# changes the SDRAM layout so that the verification region does NOT
+# intersects the stack. The parameter below can be used to instruct
+# socsec to work in either mode (ommitting it throws a warning), but
+# newer (post v00.03.03) u-boot-aspeed-sdk need this set to false
+SOCSEC_SIGN_EXTRA_OPTS ?= "--stack_intersects_verification_region=false"
+DEPENDS += '${@oe.utils.conditional("SOCSEC_SIGN_ENABLE", "1", " socsec-native", "", d)}'
+
+
+# Signs the SPL binary with a pre-established key
+sign_spl_helper() {
+ signing_helper_args=""
+
+ if [ "${SOC_FAMILY}" != "aspeed-g6" ] ; then
+ echo "Warning: SPL signing is only supported on AST2600 boards"
+ elif [ ! -e "${SOCSEC_SIGN_KEY}" ] ; then
+ echo "Warning: Invalid socsec signing key - SPL verified boot won't be available"
+ else
+ rm -f ${SPL_BINARY}.staged
+
+ if [ -n "${SOCSEC_SIGN_HELPER}" ] ; then
+ signing_helper_args="--signing_helper ${SOCSEC_SIGN_HELPER}"
+ fi
+ socsec make_secure_bl1_image \
+ --soc ${SOCSEC_SIGN_SOC} \
+ --algorithm ${SOCSEC_SIGN_ALGO} \
+ --rsa_sign_key ${SOCSEC_SIGN_KEY} \
+ --bl1_image ${DEPLOYDIR}/${SPL_IMAGE} \
+ ${signing_helper_args} \
+ ${SOCSEC_SIGN_EXTRA_OPTS} \
+ --output ${SPL_BINARY}.staged
+ cp -f ${SPL_BINARY}.staged ${B}/${CONFIG_B_PATH}/${SPL_BINARY}
+ mv -f ${SPL_BINARY}.staged ${DEPLOYDIR}/${SPL_IMAGE}
+ fi
+}
+
+sign_spl() {
+ mkdir -p ${DEPLOYDIR}
+ if [ -n "${UBOOT_CONFIG}" ]; then
+ for config in ${UBOOT_MACHINE}; do
+ CONFIG_B_PATH="${config}"
+ cd ${B}/${config}
+ sign_spl_helper
+ done
+ else
+ CONFIG_B_PATH=""
+ cd ${B}
+ sign_spl_helper
+ fi
+}
+
+
+do_deploy_append() {
+ if [ "${SOCSEC_SIGN_ENABLE}" = "1" -a -n "${SPL_BINARY}" ] ; then
+ sign_spl
+ fi
+}
diff --git a/meta-aspeed/recipes-bsp/u-boot/files/rsa_oem_dss_key.pem b/meta-aspeed/recipes-bsp/u-boot/files/rsa_oem_dss_key.pem
new file mode 100644
index 000000000..a3474c437
--- /dev/null
+++ b/meta-aspeed/recipes-bsp/u-boot/files/rsa_oem_dss_key.pem
@@ -0,0 +1,59 @@
+# U-Boot SPL 'Insecure' key (also known as 'development' or
+# 'imprint' key), used to sign development images of the ASPEED
+# AST2600 boards' U-boot SPL. This key SHOULD NOT be used to
+# sign production images.
+# This key is 4096 bits in size and any key overriding it must
+# also change the SOCSEC_SIGN_ALGO variable.
+# See meta-aspeed/classes/socsec-sign.bbclass for more info.
+
+-----BEGIN RSA PRIVATE KEY-----
+MIIJKQIBAAKCAgEA6hC1IHlB4SqRbesC8BtC00icAYUuYmAiO6CHCyph2Pv2CQT5
+Yct8WSKA/6kNAUpsJwlM18ZX0yMcGVZeS9058hgZdMgoDC57Jw5Tw5foN6CBBF72
+oJM5Z+wAjD41jiX1T2tsCvlWLeNOS1RcqViLDOdk++olpVgsSlAvW23DmblVxVhz
+67L55vK6lc4r/VcVtHJ2bdehjk6j/BcehdQchhz76fpL9EBZJ1tm9k+m7aRhhRqf
+BJUP5/Jl1+paRY1dBDVzjmE+DneVYvBuMfvh3gQlQVwomsdImH/VuWQc9xAozacB
+s6RtWHxIS+uf9qUDR622mKueKojH3PPMO+4su5EGRNKAAH9dS356pqhzpmZvgFvU
+J7zZFxQBfjpMrF+fGHUD0QkUofAxlpeyldv/+ubxzwUm0PrYGIhowuPItT7/ASqz
+xCKa/dfYVCTlPSJOP+Wi00pJBZOFuDk4HHao98BCUeGE4t065Di81GZ2F9amf5B/
+/jIjkM3o9vrThe3GWbWtP3kmw7OQyMeUzUKxIUTq3cvblNpo80gfYzYwWQakjhE6
+aV7xLQIxv28c8I2JrsvjXQIAg77W/XdT/+rS53k3DgrcjK7l7nWjmOxXr6p9f9fF
+HXF/fmEYeeuK6NaFH24LW97jk+IRjv8ig29ZyrzEctuzky80lHcVFYnE/3cCAwEA
+AQKCAgAqf0wTkFCIzEzJU0EeTSTN7cH9eKvaSrAMeXHrcg9/8QdTzeZlfieem2gm
+gxAMavHGCKc+ChIKELbaVtcaGRmbPgrpLCoxRAMyLSTCP4N3Dho+q+tFblWe67eR
+vv3ESFoIyG0+dNTT0hB2FuQYDy538k9gebvKEH9CItrmU8CO2ZqcERpC8iTzbKC5
+8EwGXFhhgeLEwMDhcJ/PdnchP0jKhNqsObiuqTxGrA6+q+mX/h+Cpjm3AEV6DIW3
+NSKcvDTmPbo0YK1+vPGPnC21v5Db2Y7WFiB9Ma+ZmKQ6W9Xyeame5TKm5jTAOxh5
+SFer1XwJ+J1NjONTv6/iCxXKz8ypDJ9wiFQ7Hb3u84+jQiTWhjpFbnvT3lkN+Z8i
+Q7z7QSYcIGHdH1q9x/LkuG5zzGB0yRMAnayzUiyTyQbNRZZHbB4mNB1zWFocUwv5
+bpnACt5NtsxwCJHVZRpffBcekM0AjKXWQ4oxJPcAmhqh2MIu4vmEG6cfMYGP+dpP
+R2unAbs3kSAEwvZaydPZmgi9TYLViYWrxXuloGBow1naisQCY3R9XVzLYmCVEvng
+20C7odj8or+Qrx6qa1m06RLUsHexKyniIYLbwfPcHIf9afdKv7N/ruGH4u+Nv/2B
+I62a9IfOUobBBnSbeA5nHk9bC2G2MBUCwW9jP1Vd4TcXwJwmsQKCAQEA98gY0ZGC
+rlj/SOxTYo/6GSfmjHeXJzxWXmH6UDFUMphkaO0RWa/cq2szShdaQa2JKrU4G5xR
+K+hYKSotlWb5EjQPQX5uaieI61UWsPbAqs6MSqZyYvgDKeBV40urXrR5ImivsUAO
+DKwoNMa4z8JIaKdHB0kT1vK9G/QiLPtJ6Wh8q0+hp+1T/IodXOR3zFHkURJVwVob
+Wbas0ZXXMhi1ywO7ZmZRXpnNOQv/m09hBUYGwITAp/KBxaeseGxhR3r6l9rmNtJI
+i40/90QHMCXtEwHRvUGTOP8he2n4AhhXQrlr3WOqFrku3y1e+BfLFEOo92j+WjA3
+skFsQsFy8motrwKCAQEA8dQlQMqeC69+ldd/64xaaqa5LuxLhPY5aYu5d3OCuoTF
+l6cviKut3h18QLyuy28ZFaI1b/pPS8lvZntw6ryXGNutH6sz0Wtf0Joe/2JT1ZLs
+Ra2Np0VZcJmlaFk0XC/CX344gGv5CqSwPqtNn2/Ej76ReRLh0q/hdJdTqKtTHYMe
+t3VDZIJwrd5iqFH8Yygd/FFqIfgPSRo1V7ylXj9UEke2zy82dki2kBeeMo+wDLGV
+rULejvN9h8IVBK0bBymBSjLXcSN5q4T092lGAV6aMBRcD5n2g6RMeFGE9oimfIWy
+WmThXgV6O1OQYA7t6SxCDAcfQZc41Zj2y3dOhPDEuQKCAQBN9MNyM9Ckn9V5kPjP
+GrM59ObBLOL+cipOOY8yacKuxGla5bM+v2iy+eBCIETCQyHTsP49GZokMU6DbQS4
+a5RTWNOv7GI6vcODHtsrxAZr9t4GooV8g8EjDLSY9XauLiOqYrtcDeYdsJBZwmfk
+3aBAZNig/ynhx68du1qBQnJHoBsRHtWiarWwz5dbYXoba2xk4VrfoUTXnfSTYAw7
+c7DGdZ8hIXHaTJNXrmG18Gx650Q6j8m5TT/s+sr1fEvC3Hs5CaLCfrhaR49ncRy9
+1kDXaQwe+iGingpftMBVkGjr0kCQf8nEqnCHwNOPRJUdBAiGBp93qpHrYE/6VLig
+ci17AoIBAQC3+F0y0jGz0Blr4tqFFmw+kIF2qfq1tx9sJQi+T9jXDmTHfz+RKJIH
+1MSO9zu+tdEOfS1L98/VZvPhsezwFvKXzZ8B5ZtxKM9mgaktPd9rLe+i/moyI3bs
+S2bjYGGN9CNZxEs1n26BY1JVCrrtnPibJi3DPtMfFgBdUzYordV4MSTwCjxvvS/9
+hZ3mUSDBSmataj5kgzMVuON10KS5c1IA6h+vtEopaB3CtsT50AftUDf+7E0l0STh
+X4vf19Uk+LVL/iuZ/ZP1IRu/EI5aQl7oTsTOdaFs+lPWgKW3a7PELW3GiNJOVbps
+YaEHArSJW8sPHWfw3Rs2m7y8gxHv3r65AoIBAQCmrMwqEnN3J4S0rx62/Kohkfqo
+QQNnG/r4d07z0UbBheO2PRWFqBbyv32j3stoQeNmbA1Fzn6Wsx434o5n/VyA+g9D
+dRc4X0l46UAPkuZrB20vxgso06QkPtSy7IFVGgqKYy+JG94me5nfIRUhqqF57N+x
+gR73fSnykARPFqvG8XG78Aki43U9gQUlq0094eenZu4ikZq1bHslR4/zPMGzwHzb
+6gMk5/nAdCrI9F1mKmSt3AnfpkWIYiGZUIoOnv12+dUZc7E5sT+cUI2JZr1CegJ1
+c4XKN2hkZb4MP95cE4rh7DGodZDW5KjiViXHVExUrdv3jBoZlX+Af6atm0K0
+-----END RSA PRIVATE KEY-----
diff --git a/meta-aspeed/recipes-bsp/u-boot/files/rsa_pub_oem_dss_key.pem b/meta-aspeed/recipes-bsp/u-boot/files/rsa_pub_oem_dss_key.pem
new file mode 100644
index 000000000..e3800179c
--- /dev/null
+++ b/meta-aspeed/recipes-bsp/u-boot/files/rsa_pub_oem_dss_key.pem
@@ -0,0 +1,18 @@
+# Public portion of the U-Boot SPL 'Insecure' key kept here
+# as a convenience.
+# Please refer to 'rsa_oem_dss_key.pem' for more info
+
+-----BEGIN PUBLIC KEY-----
+MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6hC1IHlB4SqRbesC8BtC
+00icAYUuYmAiO6CHCyph2Pv2CQT5Yct8WSKA/6kNAUpsJwlM18ZX0yMcGVZeS905
+8hgZdMgoDC57Jw5Tw5foN6CBBF72oJM5Z+wAjD41jiX1T2tsCvlWLeNOS1RcqViL
+DOdk++olpVgsSlAvW23DmblVxVhz67L55vK6lc4r/VcVtHJ2bdehjk6j/BcehdQc
+hhz76fpL9EBZJ1tm9k+m7aRhhRqfBJUP5/Jl1+paRY1dBDVzjmE+DneVYvBuMfvh
+3gQlQVwomsdImH/VuWQc9xAozacBs6RtWHxIS+uf9qUDR622mKueKojH3PPMO+4s
+u5EGRNKAAH9dS356pqhzpmZvgFvUJ7zZFxQBfjpMrF+fGHUD0QkUofAxlpeyldv/
++ubxzwUm0PrYGIhowuPItT7/ASqzxCKa/dfYVCTlPSJOP+Wi00pJBZOFuDk4HHao
+98BCUeGE4t065Di81GZ2F9amf5B//jIjkM3o9vrThe3GWbWtP3kmw7OQyMeUzUKx
+IUTq3cvblNpo80gfYzYwWQakjhE6aV7xLQIxv28c8I2JrsvjXQIAg77W/XdT/+rS
+53k3DgrcjK7l7nWjmOxXr6p9f9fFHXF/fmEYeeuK6NaFH24LW97jk+IRjv8ig29Z
+yrzEctuzky80lHcVFYnE/3cCAwEAAQ==
+-----END PUBLIC KEY-----
diff --git a/meta-aspeed/recipes-bsp/u-boot/u-boot-aspeed-sdk_2019.04.bb b/meta-aspeed/recipes-bsp/u-boot/u-boot-aspeed-sdk_2019.04.bb
index 99bcafc09..727c62d27 100644
--- a/meta-aspeed/recipes-bsp/u-boot/u-boot-aspeed-sdk_2019.04.bb
+++ b/meta-aspeed/recipes-bsp/u-boot/u-boot-aspeed-sdk_2019.04.bb
@@ -3,11 +3,16 @@ require u-boot-common-aspeed-sdk_${PV}.inc
UBOOT_MAKE_TARGET ?= "DEVICE_TREE=${UBOOT_DEVICETREE}"
require u-boot-aspeed.inc
+inherit socsec-sign
PROVIDES += "u-boot"
DEPENDS += "bc-native dtc-native"
SRC_URI_append_df-phosphor-mmc = " file://u-boot-env-ast2600.txt"
+SRC_URI += " \
+ file://rsa_oem_dss_key.pem;sha256sum=64a379979200d39949d3e5b0038e3fdd5548600b2f7077a17e35422336075ad4 \
+ file://rsa_pub_oem_dss_key.pem;sha256sum=40132a694a10af2d1b094b1cb5adab4d6b4db2a35e02d848b2b6a85e60738264 \
+ "
UBOOT_ENV_SIZE_df-phosphor-mmc = "0x10000"
UBOOT_ENV_df-phosphor-mmc = "u-boot-env"
diff --git a/meta-aspeed/recipes-bsp/u-boot/u-boot-aspeed.inc b/meta-aspeed/recipes-bsp/u-boot/u-boot-aspeed.inc
index 55d8b4787..0b9bc20d2 100644
--- a/meta-aspeed/recipes-bsp/u-boot/u-boot-aspeed.inc
+++ b/meta-aspeed/recipes-bsp/u-boot/u-boot-aspeed.inc
@@ -26,48 +26,6 @@ PACKAGECONFIG[openssl] = ",,openssl-native"
# file already exists it will not be overwritten.
UBOOT_LOCALVERSION ?= ""
-# Some versions of u-boot use .bin and others use .img. By default use .bin
-# but enable individual recipes to change this value.
-UBOOT_SUFFIX ??= "bin"
-UBOOT_IMAGE ?= "u-boot-${MACHINE}-${PV}-${PR}.${UBOOT_SUFFIX}"
-UBOOT_SYMLINK ?= "u-boot-${MACHINE}.${UBOOT_SUFFIX}"
-UBOOT_MAKE_TARGET ?= "all"
-
-# Output the ELF generated. Some platforms can use the ELF file and directly
-# load it (JTAG booting, QEMU) additionally the ELF can be used for debugging
-# purposes.
-UBOOT_ELF ?= ""
-UBOOT_ELF_SUFFIX ?= "elf"
-UBOOT_ELF_IMAGE ?= "u-boot-${MACHINE}-${PV}-${PR}.${UBOOT_ELF_SUFFIX}"
-UBOOT_ELF_BINARY ?= "u-boot.${UBOOT_ELF_SUFFIX}"
-UBOOT_ELF_SYMLINK ?= "u-boot-${MACHINE}.${UBOOT_ELF_SUFFIX}"
-
-# Some versions of u-boot build an SPL (Second Program Loader) image that
-# should be packaged along with the u-boot binary as well as placed in the
-# deploy directory. For those versions they can set the following variables
-# to allow packaging the SPL.
-SPL_BINARY ?= ""
-SPL_BINARYNAME ?= "${@os.path.basename(d.getVar("SPL_BINARY"))}"
-SPL_IMAGE ?= "${SPL_BINARYNAME}-${MACHINE}-${PV}-${PR}"
-SPL_SYMLINK ?= "${SPL_BINARYNAME}-${MACHINE}"
-
-# Additional environment variables or a script can be installed alongside
-# u-boot to be used automatically on boot. This file, typically 'uEnv.txt'
-# or 'boot.scr', should be packaged along with u-boot as well as placed in the
-# deploy directory. Machine configurations needing one of these files should
-# include it in the SRC_URI and set the UBOOT_ENV parameter.
-UBOOT_ENV_SUFFIX ?= "txt"
-UBOOT_ENV ?= ""
-UBOOT_ENV_BINARY ?= "${UBOOT_ENV}.${UBOOT_ENV_SUFFIX}"
-UBOOT_ENV_IMAGE ?= "${UBOOT_ENV}-${MACHINE}-${PV}-${PR}.${UBOOT_ENV_SUFFIX}"
-UBOOT_ENV_SYMLINK ?= "${UBOOT_ENV}-${MACHINE}.${UBOOT_ENV_SUFFIX}"
-
-# U-Boot EXTLINUX variables. U-Boot searches for /boot/extlinux/extlinux.conf
-# to find EXTLINUX conf file.
-UBOOT_EXTLINUX_INSTALL_DIR ?= "/boot/extlinux"
-UBOOT_EXTLINUX_CONF_NAME ?= "extlinux.conf"
-UBOOT_EXTLINUX_SYMLINK ?= "${UBOOT_EXTLINUX_CONF_NAME}-${MACHINE}-${PR}"
-
# returns all the elements from the src uri that are .cfg files
def find_cfgs(d):
sources=src_patches(d, True)
diff --git a/meta-aspeed/recipes-bsp/u-boot/u-boot-common-aspeed-sdk_2019.04.inc b/meta-aspeed/recipes-bsp/u-boot/u-boot-common-aspeed-sdk_2019.04.inc
index 4e7a92c2e..b662bf442 100644
--- a/meta-aspeed/recipes-bsp/u-boot/u-boot-common-aspeed-sdk_2019.04.inc
+++ b/meta-aspeed/recipes-bsp/u-boot/u-boot-common-aspeed-sdk_2019.04.inc
@@ -8,7 +8,7 @@ PE = "1"
# We use the revision in order to avoid having to fetch it from the
# repo during parse
-SRCREV = "869b79f73711d5a7b6c0bfa3c8888dc2583d1526"
+SRCREV = "44a8c618c1215e0faac0f335f0afd56ed4240e76"
SRC_URI = "git://git@github.com/openbmc/u-boot.git;nobranch=1;protocol=https"
diff --git a/meta-aspeed/recipes-kernel/linux/linux-aspeed.inc b/meta-aspeed/recipes-kernel/linux/linux-aspeed.inc
index 6a1471f26..aa060295f 100644
--- a/meta-aspeed/recipes-kernel/linux/linux-aspeed.inc
+++ b/meta-aspeed/recipes-kernel/linux/linux-aspeed.inc
@@ -8,7 +8,11 @@ KCONFIG_MODE="--alldefconfig"
KSRC ?= "git://github.com/openbmc/linux;protocol=git;branch=${KBRANCH}"
SRC_URI = "${KSRC}"
-SRC_URI += " file://defconfig"
+SRC_URI += " \
+ file://defconfig \
+ file://rsa_oem_fitimage_key.key;sha256sum=eeb4ff2ebbfbd97b6254fe6dbaeea41067e54c65176c233ec7b2ab2decf1ddcd \
+ file://rsa_oem_fitimage_key.crt;sha256sum=45f5a55497cce8040999bf9f3214d471ac7b83ab7acef41c4425a34662e8372e \
+ "
LINUX_VERSION_EXTENSION ?= "-${SRCREV}"
diff --git a/meta-aspeed/recipes-kernel/linux/linux-aspeed/rsa_oem_fitimage_key.crt b/meta-aspeed/recipes-kernel/linux/linux-aspeed/rsa_oem_fitimage_key.crt
new file mode 100644
index 000000000..0e8f25704
--- /dev/null
+++ b/meta-aspeed/recipes-kernel/linux/linux-aspeed/rsa_oem_fitimage_key.crt
@@ -0,0 +1,35 @@
+# Certificate for the 'Insecure' Kernel fitimage key, required
+# by the signing process for U-Boot FIT Signature Validation.
+# Please refer to 'rsa_oem_fitimage_key.key' for more info
+
+-----BEGIN CERTIFICATE-----
+MIIFazCCA1OgAwIBAgIUMP4fGTalbDhpTcr7sr+VKnUunRUwDQYJKoZIhvcNAQEL
+BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
+GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yMTA0MjgxMzAzMDhaFw0yMTA1
+MjgxMzAzMDhaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
+HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggIiMA0GCSqGSIb3DQEB
+AQUAA4ICDwAwggIKAoICAQDMZ5gF78Jx+yzI4bh0imCi0kgRdljANokDu1DZpa2S
+tPybosJk1453fWy8ZEsJupS1l6IPhEvWkehxL4pviADKle1S4yx5vmKV7b+ppKqV
+LBXrVF4kphcbSTBqfOGa0mQeGBFUuhTKamjy9yyV6UhIBgutK5bJvQZThzU5ZBtG
+g4zWIHSSyVMc5ACWfZuLcfjAp1s3hqY1Fi2grcTHQquPvyuyT5Xr2utmT2tdNr6D
+9tdhdS3Xfb7HTjPRCcjRXhCPWxKqTneLrttRhK18vyg0LTPQ4vtVSHnCt2JpVCrV
+Vg5YqvyfEu+fSh8kL0aveLK0afEGorb9XY0e2JmIUtJoONRGUaZCHdJ6R7v8fpgu
+uEe0kBBOi1QLUUbFu7v/FQzgGbCaCA2E+aJRoBTooxM6RHsJp4s/LTsb+Pdl2sDM
+Hno8fJ2qDVPO3vserrHunwTXUWcwyWhpWaYx+P7tDilH5K6cNTgivbvepfcbNDNl
+8ZeZCK3EH6fdMkxTb0giqGpVjMlBgwf/RH2cYMzF83BchXoljpoyQmXhoi14uDS7
+LjgA5JUBeeqq1xEyFn+iYPrcnBFubetIg5zBiTjMZmz4aANQxlUGZ9sKAlHzQwPv
+J+rkpR3dHzi9PHpzY3+5ptwGfLYP1sLbozNY3qE3wAIerkGgCgMuVp5XDJAlkO4M
+HQIDAQABo1MwUTAdBgNVHQ4EFgQU5Du6F0E1sZpyDCGQswhvPuFlKUQwHwYDVR0j
+BBgwFoAU5Du6F0E1sZpyDCGQswhvPuFlKUQwDwYDVR0TAQH/BAUwAwEB/zANBgkq
+hkiG9w0BAQsFAAOCAgEAYnBJi9l9zvJldrVuVIa7IZQhKlLXuVU2yL3Az3Hr8ejg
+FNwF9XdxXDxvBiQatIdZ/fv8ukqo+OBCyw1sE8u668S9ca1rr5+vq2PaxNn//ZLV
+zmJ12yZa7SOkJgsWsjNlSwM+VWIbLKC+25nRYuA3S03XcLLmXzxEbxIYFuynds8W
+pQqYMn1CZ9y6Yz7MtDo9p+JU1kFqgxocBLKpgcRgqbQ1vWHjE91r10iS6E1N8YAi
+EPsO7Nh6DzfhFY4Wo+S9tTZwBL/dKqO4Ft4XPFKA1nEH8ZyGTI3jfRUYn5IaRc7g
+5Hy8Mla/n7UvKrZIEitD5fqOvxm2g7Bck28cpr2gH+Cy5q6ivfJkycGRfy6BDfDl
+fv41PJSnrrvxNuXB9ylBXat8K0nBPjY8vOr0uFXPzVHC3Rj2e8zD6GsOzFvkyvfQ
+qYrUYKVs1U74PMTdu9wc9z+sS1CBvdq2KZPaZImqvctS3VP3mfmqxCHQLYx3WX23
+J0KGpbfmBOtHwcgBHna0ZAY7ImbF47+FL1eHzITVoMagFteEYC4LI4uqsznI2dNi
+gjrTmQLnm8DkwvBFwXOa2QyaM2I4Dk+q7+FHwCxiTJdmTnd6LFH5nufmq5oIAy2d
+/G0EqPom0AZz1i+Ee90xCjiFLd2vzdv5U+EWKkOjUiM/XdvglrsVCUdQ41gorRo=
+-----END CERTIFICATE-----
diff --git a/meta-aspeed/recipes-kernel/linux/linux-aspeed/rsa_oem_fitimage_key.key b/meta-aspeed/recipes-kernel/linux/linux-aspeed/rsa_oem_fitimage_key.key
new file mode 100644
index 000000000..d9bc4a748
--- /dev/null
+++ b/meta-aspeed/recipes-kernel/linux/linux-aspeed/rsa_oem_fitimage_key.key
@@ -0,0 +1,60 @@
+# Kernel fitImage 'Insecure' key (also known as 'development' or
+# 'imprint' key), used to sign development images of the OpenBMC
+# Kernel fitImage. This key SHOULD NOT be used to sign
+# production images.
+# This key is 4096 bits in size and can be used by adjusting
+# the UBOOT_SIGN_KEYNAME, UBOOT_SIGN_KEYDIR and FIT_SIGN_ALG
+# variables (see uboot-sign.bbclass for more info)
+
+-----BEGIN PRIVATE KEY-----
+MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDMZ5gF78Jx+yzI
+4bh0imCi0kgRdljANokDu1DZpa2StPybosJk1453fWy8ZEsJupS1l6IPhEvWkehx
+L4pviADKle1S4yx5vmKV7b+ppKqVLBXrVF4kphcbSTBqfOGa0mQeGBFUuhTKamjy
+9yyV6UhIBgutK5bJvQZThzU5ZBtGg4zWIHSSyVMc5ACWfZuLcfjAp1s3hqY1Fi2g
+rcTHQquPvyuyT5Xr2utmT2tdNr6D9tdhdS3Xfb7HTjPRCcjRXhCPWxKqTneLrttR
+hK18vyg0LTPQ4vtVSHnCt2JpVCrVVg5YqvyfEu+fSh8kL0aveLK0afEGorb9XY0e
+2JmIUtJoONRGUaZCHdJ6R7v8fpguuEe0kBBOi1QLUUbFu7v/FQzgGbCaCA2E+aJR
+oBTooxM6RHsJp4s/LTsb+Pdl2sDMHno8fJ2qDVPO3vserrHunwTXUWcwyWhpWaYx
++P7tDilH5K6cNTgivbvepfcbNDNl8ZeZCK3EH6fdMkxTb0giqGpVjMlBgwf/RH2c
+YMzF83BchXoljpoyQmXhoi14uDS7LjgA5JUBeeqq1xEyFn+iYPrcnBFubetIg5zB
+iTjMZmz4aANQxlUGZ9sKAlHzQwPvJ+rkpR3dHzi9PHpzY3+5ptwGfLYP1sLbozNY
+3qE3wAIerkGgCgMuVp5XDJAlkO4MHQIDAQABAoICAQCQ0IgdFJtfI4O8ImcLcgo6
+8N4MORtxunFiCnCickXB3aXmIe61gR43O84wvqGHGABJk09GzQTp1N+oaPUcRW/C
+F2xXQAl/i0nPTOxwJPCR1PUGj/RO5LkUJMs/dpBjntE9nPGSZG9cZP1LvaCB6Q/D
+rzzQiERBU0FLJkyoB2tnjsXV4pKUeDwBCOv9sqnjpnCFFUyDz0qr67WR0+rI/UwN
+AHTV1JqzyZrjFjtLhAB///7h1iIPPNBP5fDCFbuH0avL1Mspi4QYm15Yp7Y93jR+
+mtPOFzHXXwyczk3Tr8TU9i4d1a46iTDpWpsriK78nHeHaFNRzy/z2zai9vP3aC4W
+UV0F/57y7KS++lQKG+fZZVz7DcV1CysehL/xxZo+B1RmBXfmWD0hGhnKeIL6jShh
+FfILWQ63EgTAMRzvEmOpnW6VemF5IHAA0yYHbfs8uebZrXRf7v3WdyWwK57/d9Gy
+YHCNMH3cP1J+/1BCzvNhXBRu/YDLgcPMJFklMm6gOdcsy3lA5GpNIRmOiiGaoYQs
+KozLyPlmt7s6dP3VrAnnRXCzm140wMzKAq8L1o1gNOsXV06ig609DUMHUbfxT04W
+4anjyiJTvBWrNr2FxOjuZPqleIApZR+GPFm17IFapmlPN7cOrYlXs786a5qyYoED
+jdjNh6RWNdDM0iiPVt9VBQKCAQEA+fBvRiphuSnqiSVvosb3gB1bY2phHzLJjTPB
+2sx2L9TdBQdv5JMh9ugbJO06CQgT1JLghtB4/CKDAjgAvSayXeNws1KVgpIUQdq4
+Nat6G+UNRtRuCQwrEkiKEmHbMQHdkzirzDPdzgp/tnl/HXDgji9UZEItnSi8OCdM
+Ofocp1SHBpdbxDm3OEGH/v46MhT0S+nfL6Y1V8pYBd52tTv+CWh5yDDHtrsDmJfq
+tVv6Gs1EOq4L8DcdDQltqf31KXC2YR6ANA4/XvuK+nsObjkj2jHIFrUMzaOWwxxd
+mLlLdqy98M3+kiLTzCyhxLY5/WPB1+stgDi9QSYm7cxfnNK3MwKCAQEA0Vx9v84a
+TH/2NUGciLTDmrwXZ5Au18JZJk6JYYRsxekT+C8HgGxKz3UY411Bxj2ZDRprrnMh
+XCQz0BjOrSpaDnB7mlLUWoo7ykLoDWWarSD4sJjlK6fJm0D3ke4Na8RJNWLUxqoH
+wyqx5ikJXc/g8aRFlHWu5g2gkjIp+Tl572xMx/XaT+IJ/ZCZU6Fzq+IBf258Z7Dn
+/HowxPgxd63wsZPTo4H+H0xUkjad9ggfurBgGfGUkxCOc2pw/vm4URuQGEHb6aNe
+DHoHT/8vI/wsAaLB0aCSq4aWRe/2GVYV1xueWpd8EWM0KE1N7PAMGCjE6AuWd7fU
+Ksu+D7onpVjvbwKCAQEAyBE6QUQzrXBsGRQqZHY4MAlP2iiRTdPtmmXPy0DXajpO
+IXRukN1l1qq877YlOo2IsiRQLho6fjlx/RivHroXFSi2UhTNMROVu5FE21FEEYgs
+NIJfAkcHQz9lpolGV9hScUJv4qmx5vhoeryOkBaG6cnhF9ARizfMUnbCgbY/sYHs
+A86s2koI67MpFWiTVPuJAitXSGEXWgrSowAMrc4z73v9382MUC0rF76jVkEl1sZw
+0zf2vnaffowJiIWM9XsPwnYT0ZeGCpX4DcDrMDf1BvfKXsLWWNWWHOBb26CXU4u7
+D0MVgAz41Pr1Eu17ReXQiPHsHjNM6xWLG9b4wiO6GQKCAQBibJMJiwE+GaJL4y6N
+7j1PD0IJg/UhpdJ3edCIMdNZL3wd3y4tp7t70FcE/KCha+/6AwPAnYt/X92j5SW0
+rwZrZ2IUaQBAGGCHc/DX635OCgQgMaD7ZwQWovJAfqN8mGi6Wl4hj2nazMWZqI0o
+t0PPFiVH6BNzP9DPKholemnirw1hrCkYCPIdbM9IS8yvb664k96UeMx3G5K15uCK
+nRFcylxisAgh+qZ/noGgWq1f/O8RA0uP3+a4R8AbfpayOr0BSmTyb8UVJIEvkI4+
+4pxloHhx7oVFch5PfsI5owjdebR2bmT7X6HzmHQcAbYN3YzEcj4oxhlOjT4q8p8U
+0rytAoIBAC0+u5KwNUYHzgi7nnQeCNwoYnJpo3+8Sm2GKxzntj7omyMJQd9MsvjI
+tWdvuwGv04B9WxEz+oY1RDP+5GETd0PrYaDJwIuqbsCHU4g0R5gy0gF5msb07NIw
+/+wTTTcYpgUc166KBCTXZk68W86KL2F2i3q4pHx4HB2xYdNnqFjn3Ih7c4sYTuX1
++iWxOQtgZVwAC6kc/FW1kV0Jhmq5FCsiIExfTRmObmjO/R1lZS5PuzYPmwpbJ/9m
+4dlne1W/MIiVLcQgXHnNzFLcOHrLCTR/TLV6l4vVe9BHFnc6OX4Vf/hAwA93sEm0
+xaPMnGMcWU4pg8ytNSMuYDfobC5hPxo=
+-----END PRIVATE KEY-----
diff --git a/meta-aspeed/recipes-kernel/linux/linux-aspeed_git.bb b/meta-aspeed/recipes-kernel/linux/linux-aspeed_git.bb
index 9df959114..084606b61 100644
--- a/meta-aspeed/recipes-kernel/linux/linux-aspeed_git.bb
+++ b/meta-aspeed/recipes-kernel/linux/linux-aspeed_git.bb
@@ -1,6 +1,6 @@
KBRANCH ?= "dev-5.10"
-LINUX_VERSION ?= "5.10.30"
+LINUX_VERSION ?= "5.10.39"
-SRCREV="d538d632fb2046278ff3457994d64d43ee2901c7"
+SRCREV="45c6dc0de963bfdd8b468dceeea24f56a8e51424"
require linux-aspeed.inc
diff --git a/meta-bytedance/meta-g220a/recipes-phosphor/chassis/x86-power-control/power-config-host0.json b/meta-bytedance/meta-g220a/recipes-phosphor/chassis/x86-power-control/power-config-host0.json
new file mode 100644
index 000000000..c16564440
--- /dev/null
+++ b/meta-bytedance/meta-g220a/recipes-phosphor/chassis/x86-power-control/power-config-host0.json
@@ -0,0 +1,11 @@
+{
+ "gpio_configs": {
+ "NMIButton": "NMI_BUTTON",
+ "NMIOut": "NMI_OUT",
+ "PostComplete": "POST_COMPLETE",
+ "PwrButton": "POWER_BUTTON",
+ "PwrOK": "PS_PWROK",
+ "PwrOut": "POWER_OUT",
+ "RstOut": "RESET_OUT"
+ }
+}
diff --git a/meta-bytedance/meta-g220a/recipes-phosphor/chassis/x86-power-control_%.bbappend b/meta-bytedance/meta-g220a/recipes-phosphor/chassis/x86-power-control_%.bbappend
new file mode 100644
index 000000000..6ec2a728c
--- /dev/null
+++ b/meta-bytedance/meta-g220a/recipes-phosphor/chassis/x86-power-control_%.bbappend
@@ -0,0 +1,11 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+SRC_URI += " file://power-config-host0.json"
+
+do_install_append() {
+ install -d {D}/usr/share/x86-power-control/
+ install -m 0644 ${WORKDIR}/power-config-host0.json ${D}/usr/share/x86-power-control/
+}
+
+EXTRA_OECMAKE = "-DWITH_RESETBUTTON=OFF"
+
diff --git a/meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-config.bbappend b/meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-config.bbappend
new file mode 100644
index 000000000..72d991c7e
--- /dev/null
+++ b/meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-config.bbappend
@@ -0,0 +1 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
diff --git a/meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-config/channel_config.json b/meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-config/channel_config.json
new file mode 100644
index 000000000..dc37c30c7
--- /dev/null
+++ b/meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-config/channel_config.json
@@ -0,0 +1,69 @@
+{
+ "0" : {
+ "name" : "Ipmb",
+ "is_valid" : true,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "ipmb",
+ "protocol_type" : "ipmb-1.0",
+ "session_supported" : "session-less",
+ "is_ipmi" : true
+ }
+ },
+ "1" : {
+ "name" : "eth1",
+ "is_valid" : true,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "lan-802.3",
+ "protocol_type" : "ipmb-1.0",
+ "session_supported" : "multi-session",
+ "is_ipmi" : true
+ }
+ },
+ "2" : {
+ "name" : "eth0",
+ "is_valid" : true,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "lan-802.3",
+ "protocol_type" : "ipmb-1.0",
+ "session_supported" : "multi-session",
+ "is_ipmi" : true
+ }
+ },
+ "7" : {
+ "name" : "ipmi_kcs4",
+ "is_valid" : true,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "system-interface",
+ "protocol_type" : "kcs",
+ "session_supported" : "session-less",
+ "is_ipmi" : true
+ }
+ },
+ "8" : {
+ "name" : "INTRABMC",
+ "is_valid" : true,
+ "active_sessions" : 0,
+ "max_transfer_size" : 256,
+ "channel_info" : {
+ "medium_type" : "oem",
+ "protocol_type" : "oem",
+ "session_supported" : "session-less",
+ "is_ipmi" : true
+ }
+ },
+ "15" : {
+ "name" : "ipmi_kcs3",
+ "is_valid" : true,
+ "active_sessions" : 0,
+ "channel_info" : {
+ "medium_type" : "system-interface",
+ "protocol_type" : "kcs",
+ "session_supported" : "session-less",
+ "is_ipmi" : true
+ }
+ }
+}
diff --git a/meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-kcs/99-ipmi-kcs.rules b/meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-kcs/99-ipmi-kcs.rules
new file mode 100644
index 000000000..fae7f0969
--- /dev/null
+++ b/meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-kcs/99-ipmi-kcs.rules
@@ -0,0 +1,3 @@
+# Replace the '-' to '_', since Dbus object/interface names do not allow '-'.
+KERNEL=="ipmi-kcs3", SYMLINK+="ipmi_kcs3"
+KERNEL=="ipmi-kcs4", SYMLINK+="ipmi_kcs4"
diff --git a/meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-kcs_%.bbappend b/meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-kcs_%.bbappend
new file mode 100644
index 000000000..8547d9b9b
--- /dev/null
+++ b/meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-kcs_%.bbappend
@@ -0,0 +1,12 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+KCS_DEVICE = "ipmi_kcs3"
+SMM_DEVICE = "ipmi_kcs4"
+SYSTEMD_SERVICE_${PN}_append = " ${PN}@${SMM_DEVICE}.service "
+
+SRC_URI += "file://99-ipmi-kcs.rules"
+
+do_install_append() {
+ install -d ${D}${base_libdir}/udev/rules.d
+ install -m 0644 ${WORKDIR}/99-ipmi-kcs.rules ${D}${base_libdir}/udev/rules.d/
+}
diff --git a/meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-net_%.bbappend b/meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-net_%.bbappend
new file mode 100644
index 000000000..ff6edc92b
--- /dev/null
+++ b/meta-bytedance/meta-g220a/recipes-phosphor/ipmi/phosphor-ipmi-net_%.bbappend
@@ -0,0 +1,5 @@
+RMCPP_EXTRA = "eth1"
+SYSTEMD_SERVICE_${PN} += " \
+ ${PN}@${RMCPP_EXTRA}.service \
+ ${PN}@${RMCPP_EXTRA}.socket \
+ "
diff --git a/meta-facebook/recipes-phosphor/ipmi/phosphor-ipmi-ipmb/yosemitev2/ipmb-channels.json b/meta-facebook/recipes-phosphor/ipmi/phosphor-ipmi-ipmb/yosemitev2/ipmb-channels.json
index fd552e4b2..43276132b 100755
--- a/meta-facebook/recipes-phosphor/ipmi/phosphor-ipmi-ipmb/yosemitev2/ipmb-channels.json
+++ b/meta-facebook/recipes-phosphor/ipmi/phosphor-ipmi-ipmb/yosemitev2/ipmb-channels.json
@@ -27,6 +27,13 @@
"bmc-addr": 32,
"remote-addr": 64,
"devIndex": 3
+ },
+ {
+ "type": "ipmb",
+ "slave-path": "/dev/ipmb-13",
+ "bmc-addr": 32,
+ "remote-addr": 64,
+ "devIndex": 4
}
]
}
diff --git a/meta-fii/conf/layer.conf b/meta-fii/conf/layer.conf
index 8895ad5db..4cb55ee26 100644
--- a/meta-fii/conf/layer.conf
+++ b/meta-fii/conf/layer.conf
@@ -5,4 +5,4 @@ BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
${LAYERDIR}/recipes-*/*/*.bbappend"
BBFILE_COLLECTIONS += "fii-layer"
BBFILE_PATTERN_fii-layer := "^${LAYERDIR}/"
-LAYERSERIES_COMPAT_fii-layer = "warrior zeus gatesgarth dunfell"
+LAYERSERIES_COMPAT_fii-layer = "warrior zeus gatesgarth dunfell hardknott"
diff --git a/meta-fii/meta-kudo/conf/layer.conf b/meta-fii/meta-kudo/conf/layer.conf
index 84da9fb54..84c091cea 100644
--- a/meta-fii/meta-kudo/conf/layer.conf
+++ b/meta-fii/meta-kudo/conf/layer.conf
@@ -7,4 +7,4 @@ BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
BBFILE_COLLECTIONS += "kudo-layer"
BBFILE_PATTERN_kudo-layer = "^${LAYERDIR}/"
-LAYERSERIES_COMPAT_kudo-layer = "warrior zeus gatesgarth dunfell"
+LAYERSERIES_COMPAT_kudo-layer = "warrior zeus gatesgarth dunfell hardknott"
diff --git a/meta-fii/meta-kudo/conf/machine/kudo.conf b/meta-fii/meta-kudo/conf/machine/kudo.conf
index c136987c7..a016fd760 100644
--- a/meta-fii/meta-kudo/conf/machine/kudo.conf
+++ b/meta-fii/meta-kudo/conf/machine/kudo.conf
@@ -20,11 +20,18 @@ GBMC_NCSI_IF_NAME = "eth0"
IMAGE_FSTYPES += " cpio.${INITRAMFS_CTYPE}.u-boot"
+SERIAL_CONSOLES = "115200;ttyS0"
+
OBMC_MACHINE_FEATURES += " \
obmc-host-ipmi \
+ obmc-phosphor-fan-mgmt \
+ obmc-phosphor-flash-mgmt \
"
PREFERRED_PROVIDER_virtual/obmc-fan-control = "phosphor-pid-control"
PREFERRED_PROVIDER_virtual/obmc-system-mgmt = "packagegroup-kudo-apps"
PREFERRED_PROVIDER_virtual/obmc-host-ipmi-hw = "phosphor-ipmi-ssif"
PREFERRED_PROVIDER_virtual/obmc-flash-mgmt = "packagegroup-kudo-apps"
+PREFERRED_PROVIDER_virtual/obmc-fan-mgmt = "packagegroup-kudo-apps"
+# Remove unneeded binaries from image
+IMAGE_FEATURES_remove = "obmc-health-monitor"
diff --git a/meta-fii/meta-kudo/recipes-kernel/linux/linux-nuvoton/kudo.cfg b/meta-fii/meta-kudo/recipes-kernel/linux/linux-nuvoton/kudo.cfg
index c43b0745b..ff6022724 100644
--- a/meta-fii/meta-kudo/recipes-kernel/linux/linux-nuvoton/kudo.cfg
+++ b/meta-fii/meta-kudo/recipes-kernel/linux/linux-nuvoton/kudo.cfg
@@ -6,6 +6,8 @@ CONFIG_SENSORS_ADC128D818=y
CONFIG_SENSORS_ADM1275=y
CONFIG_SENSORS_TMP102=y
CONFIG_SENSORS_TMP421=y
+CONFIG_SENSORS_MAX31790=y
+CONFIG_SENSORS_MAX34440=y
CONFIG_PMBUS=y
CONFIG_SENSORS_PMBUS=y
diff --git a/meta-fii/meta-kudo/recipes-kudo/hotswap-power-cycle/files/hotswap-power-cycle.service b/meta-fii/meta-kudo/recipes-kudo/hotswap-power-cycle/files/hotswap-power-cycle.service
new file mode 100644
index 000000000..f9f03e7c3
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/hotswap-power-cycle/files/hotswap-power-cycle.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Power Cycle by Hotswap Controller
+
+[Service]
+Environment= PSU_HARDRESET_DELAY=1
+EnvironmentFile=-/run/psu_timedelay
+ExecStartPre=sleep $PSU_HARDRESET_DELAY
+ExecStart=gpioset 2 30=1
+Restart=no
+Type=oneshot
+RemainAfterExit=true
+StandardOutput=syslog
+
+[Install]
+WantedBy=gbmc-psu-hardreset.target
diff --git a/meta-fii/meta-kudo/recipes-kudo/hotswap-power-cycle/hotswap-power-cycle.bb b/meta-fii/meta-kudo/recipes-kudo/hotswap-power-cycle/hotswap-power-cycle.bb
new file mode 100644
index 000000000..d01b898a9
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/hotswap-power-cycle/hotswap-power-cycle.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Power Cycle by Hotswap Controller"
+DESCRIPTION = "Power Cycle by Hotswap Controller Daemon"
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit systemd
+
+DEPENDS += "systemd"
+RDEPENDS_${PN} += "bash"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+SRC_URI_append_kudo = " file://hotswap-power-cycle.service"
+
+do_install() {
+ install -d ${D}${systemd_unitdir}/system/
+ install -m 0644 ${WORKDIR}/hotswap-power-cycle.service ${D}${systemd_unitdir}/system/hotswap-power-cycle.service
+}
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = " hotswap-power-cycle.service"
diff --git a/meta-fii/meta-kudo/recipes-kudo/ipmi/fii-ipmi-oem_git.bb b/meta-fii/meta-kudo/recipes-kudo/ipmi/fii-ipmi-oem_git.bb
new file mode 100644
index 000000000..c5a4328ae
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/ipmi/fii-ipmi-oem_git.bb
@@ -0,0 +1,26 @@
+SUMMARY = "foxconn OEM IPMI commands"
+DESCRIPTION = "foxconn OEM IPMI commands"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "boost phosphor-ipmi-host phosphor-logging systemd libgpiod"
+
+inherit cmake obmc-phosphor-ipmiprovider-symlink
+
+EXTRA_OECMAKE="-DENABLE_TEST=0 -DYOCTO=1"
+
+LIBRARY_NAMES = "libfiioemcmds.so"
+
+SRC_URI = "git://github.com/openbmc/foxconn-ipmi-oem.git"
+SRCREV = "163226efd02b91994aaa474005979560965ac3d6"
+
+HOSTIPMI_PROVIDER_LIBRARY += "${LIBRARY_NAMES}"
+NETIPMI_PROVIDER_LIBRARY += "${LIBRARY_NAMES}"
+
+FILES_${PN}_append = " ${libdir}/ipmid-providers/lib*${SOLIBS}"
+FILES_${PN}_append = " ${libdir}/host-ipmid/lib*${SOLIBS}"
+FILES_${PN}_append = " ${libdir}/net-ipmid/lib*${SOLIBS}"
+FILES_${PN}-dev_append = " ${libdir}/ipmid-providers/lib*${SOLIBSDEV}"
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw.bb b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw.bb
index 3f5a30ec6..03ce088fc 100644
--- a/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw.bb
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw.bb
@@ -14,14 +14,15 @@ RDEPENDS_${PN} += "libsystemd"
RDEPENDS_${PN} += "bash"
-SRC_URI_append_kudo = " \
+SRC_URI = " \
file://kudo-fw.sh \
file://kudo-fw-ver.service \
file://kudo-fw-ver.sh \
+ file://kudo-lib.sh \
"
SYSTEMD_PACKAGES = "${PN}"
-SYSTEMD_SERVICE_${PN}_append_kudo = " \
+SYSTEMD_SERVICE_${PN} = " \
kudo-fw-ver.service \
"
@@ -29,6 +30,7 @@ do_install () {
install -d ${D}/${sbindir}
install -m 0755 ${WORKDIR}/kudo-fw.sh ${D}/${sbindir}/kudo-fw.sh
install -m 0755 ${WORKDIR}/kudo-fw-ver.sh ${D}/${sbindir}/kudo-fw-ver.sh
+ install -m 0755 ${WORKDIR}/kudo-lib.sh ${D}/${sbindir}/kudo-lib.sh
install -d ${D}${systemd_system_unitdir}
install -m 0644 ${WORKDIR}/kudo-fw-ver.service ${D}${systemd_system_unitdir}
}
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh
index e42795f0c..1ef73cc13 100644
--- a/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh
@@ -2,15 +2,7 @@
devpath="/sys/bus/i2c/devices/13-0077/driver"
-# set_gpio_ctrl
-# pin #, direction, high(1)/low(0)
-function set_gpio_ctrl() {
- echo $1 > /sys/class/gpio/export
- echo $2 > /sys/class//gpio/gpio$1/direction
- echo $3 > /sys/class/gpio/gpio$1/value
- echo $1 > /sys/class/gpio/unexport
- sleep 1
-}
+source /usr/sbin/kudo-lib.sh
function fwbios() {
KERNEL_FIU_ID="c0000000.spi"
@@ -32,8 +24,8 @@ function fwbios() {
if [ ! -f $1 ]; then
echo " Cannot find the" $1 "image file"
exit 1
- fi
+ fi
echo "Flashing BIOS @/dev/$BIOS_MTD"
flashcp -v $1 /dev/$BIOS_MTD
wait
@@ -52,7 +44,6 @@ function fwbios() {
rm -f $1
}
-
function fwbmccpld() {
# BMC_JTAG_MUX_1 #218 0:BMC 1:MB
set_gpio_ctrl 218 out 0
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-lib.sh b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-lib.sh
new file mode 100644
index 000000000..377257eac
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-lib.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+# set_gpio_ctrl
+# pin #, direction, high(1)/low(0)
+function set_gpio_ctrl() {
+ echo $1 > /sys/class/gpio/export
+ echo $2 > /sys/class//gpio/gpio$1/direction
+ echo $3 > /sys/class/gpio/gpio$1/value
+ echo $1 > /sys/class/gpio/unexport
+ sleep 1
+}
+
+# get_gpio_ctrl
+# pin #
+function get_gpio_ctrl() {
+ echo $1 > /sys/class/gpio/export
+ echo $(cat /sys/class/gpio/gpio$1/value)
+ echo $1 > /sys/class/gpio/unexport
+}
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot.bb b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot.bb
new file mode 100644
index 000000000..87e4f747b
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Phosphor OpenBMC Kudo System Power Control Service"
+DESCRIPTION = "Phosphor OpenBMC Kudo System Power Control Daemon"
+
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit systemd
+inherit obmc-phosphor-systemd
+
+DEPENDS += "systemd"
+RDEPENDS_${PN} += "libsystemd"
+RDEPENDS_${PN} += "bash"
+
+SRC_URI = " \
+ file://init_once.sh \
+ file://host-powerctrl.service \
+ "
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = " \
+ host-powerctrl.service \
+ "
+
+do_install () {
+ install -d ${D}${sbindir}
+ install -m 0755 ${WORKDIR}/init_once.sh ${D}${sbindir}/
+ install -d ${D}${systemd_unitdir}/system/
+ install -m 0644 ${WORKDIR}/host-powerctrl.service ${D}${systemd_unitdir}/system
+}
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/host-powerctrl.service b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/host-powerctrl.service
new file mode 100644
index 000000000..14c14d480
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/host-powerctrl.service
@@ -0,0 +1,12 @@
+[Unit]
+Description = Host Power Control Sequence
+
+[Service]
+Restart=no
+RemainAfterExit=true
+Type=oneshot
+ExecStart=/usr/sbin/init_once.sh
+StandardOutput=syslog
+
+[Install]
+WantedBy=sysinit.target
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/init_once.sh b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/init_once.sh
new file mode 100644
index 000000000..b589379fb
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/init_once.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+source /usr/sbin/kudo-lib.sh
+
+# set all mux route to CPU before power on host
+# BMC_CPU_RTC_I2C_SEL #120
+set_gpio_ctrl 120 out 1
+# BMC_CPU_DDR_I2C_SEL #84
+set_gpio_ctrl 84 out 1
+# BMC_CPU_EEPROM_I2C_SEL #85
+set_gpio_ctrl 85 out 1
+# BMC_CPU_PMBUS_SEL #86
+set_gpio_ctrl 86 out 1
+
+# LED control
+# LED_BMC_LIVE #7
+set_gpio_ctrl 7 out 1
+
+# SPI control
+# Send command to CPLD to switch the bios spi interface to host
+i2cset -y -f -a 13 0x76 0x10 0x00
+
+# Power control
+# MON_BMC_ALIVE, GPIO 10
+set_gpio_ctrl 10 out 1
+# S0_BMC_OK, GPIO 69
+set_gpio_ctrl 69 out 1
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd.bb b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd.bb
new file mode 100644
index 000000000..f4e0bb09f
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Phosphor OpenBMC Kudo System Command"
+DESCRIPTION = "Phosphor OpenBMC Kudo System Command Daemon"
+
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+RDEPENDS_${PN} += "bash"
+
+SRC_URI = " \
+ file://kudo.sh \
+ file://kudo-ras.sh \
+ "
+
+SYSTEMD_PACKAGES = "${PN}"
+
+do_install () {
+ install -d ${D}/${sbindir}
+ install -m 0755 ${WORKDIR}/kudo.sh ${D}/${sbindir}/kudo.sh
+ install -m 0755 ${WORKDIR}/kudo-ras.sh ${D}/${sbindir}/kudo-ras.sh
+}
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo-ras.sh b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo-ras.sh
new file mode 100644
index 000000000..af1b0a4e7
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo-ras.sh
@@ -0,0 +1,575 @@
+#!/bin/bash
+
+powerState=$(i2cget -f -y 0x2 0x4f 0xe0 b)
+
+getGPISourceRegisters(){
+ REG60=$(i2cget -f -y 0x2 0x4f 0x60 w) # GPI Data Set
+ REG61=$(i2cget -f -y 0x2 0x4f 0x61 w) # GPI DATA Set #0
+ REG62=$(i2cget -f -y 0x2 0x4f 0x62 w) # GPI DATA Set #1
+ REG63=$(i2cget -f -y 0x2 0x4f 0x63 w) # GPI DATA Set #2
+ REG64=$(i2cget -f -y 0x2 0x4f 0x64 w) # GPI DATA Set #3
+ DS0Pres=$((REG60 & 0x0100))
+ DS1Pres=$((REG60 & 0x0200))
+ DS2Pres=$((REG60 & 0x0400))
+ DS3Pres=$((REG60 & 0x0800))
+}
+
+getErrorCount() {
+ MemCE=$(i2cget -f -y 0x2 0x4f 0x90 w)
+ MemUE=$(i2cget -f -y 0x2 0x4f 0x93 w)
+ CoreCE=$(i2cget -f -y 0x2 0x4f 0x80 w)
+ CoreUE=$(i2cget -f -y 0x2 0x4f 0x83 w)
+ PCIeCE=$(i2cget -f -y 0x2 0x4f 0xc0 w)
+ PCIeUE=$(i2cget -f -y 0x2 0x4f 0xc2 w)
+ OtherCE=$(i2cget -f -y 0x2 0x4f 0xd0 w)
+ OtherUE=$(i2cget -f -y 0x2 0x4f 0xd8 w)
+}
+
+getReg61Vals() {
+ REG61_0800=$((REG61 & 0x0800))
+ REG61_0800_VAL=$((REG61_0800 >> 8))
+ REG61_1000=$((REG61 & 0x1000))
+ REG61_1000_VAL=$((REG61_1000 >> 12))
+}
+
+getReg62Vals() {
+ REG62_0100=$((REG62 & 0x0100))
+ REG62_0100_VAL=$((REG62_0100 >> 8))
+ REG62_0200=$((REG62 & 0x0200))
+ REG62_0200_VAL=$((REG62_0200 >> 9))
+ REG62_0400=$((REG62 & 0x0400))
+ REG62_0400_VAL=$((REG62_0400 >> 10))
+}
+
+getReg63Vals() {
+ REG63_0100=$((REG63 & 0x0100))
+ REG63_0100_VAL=$((REG63_0100 >> 8))
+}
+
+getReg64Vals() {
+ REG64_0100=$((REG64 & 0x0100))
+ REG64_0100_VAL=$((REG64_0100 >> 8))
+ REG64_0200=$((REG64 & 0x0200))
+ REG64_0200_VAL=$((REG64_0200 >> 9))
+ REG64_0800=$((REG64 & 0x0800))
+ REG64_0800_VAL=$((REG64_0800 >> 11))
+ REG64_2000=$((REG64 & 0x2000))
+ REG64_2000_VAL=$((REG64_2000 >> 13))
+ REG64_4000=$((REG64 & 0x4000))
+ REG64_4000_VAL=$((REG64_4000 >> 14))
+ REG64_8000=$((REG64 & 0x8000))
+ REG64_8000_VAL=$((REG64_8000 >> 15))
+ REG64_0001=$((REG64 & 0x0001))
+ REG64_0001_VAL=$((REG64_0001))
+}
+
+getGPIStatusRegisters(){
+ REG70=$(i2cget -f -y 0x2 0x4f 0x70 w) # Core, DIMM, SLC, PCIe, and Other errors
+ REG78=$(i2cget -f -y 0x2 0x4f 0x78 w) # VRD Fault/Warning Error
+ REG79=$(i2cget -f -y 0x2 0x4f 0x79 w) # VRD Hot
+ REG7A=$(i2cget -f -y 0x2 0x4f 0x7A w) # DIMM Hot Error
+ REG7B=$(i2cget -f -y 0x2 0x4f 0x7B w) # Boot #1 Error
+ REG7C=$(i2cget -f -y 0x2 0x4f 0x7C w) # Boot #2 Error
+ REG7D=$(i2cget -f -y 0x2 0x4f 0x7D w) # Watchdog/Other Status
+ REG7E=$(i2cget -f -y 0x2 0x4f 0x7E w) # RAS internal error
+}
+
+getReg70Vals() {
+ REG70_0100=$((REG70 & 0x0100))
+ REG70_0100_VAL=$((REG70_0100 >> 8))
+ REG70_0200=$((REG70 & 0x0200))
+ REG70_0200_VAL=$((REG70_0200 >> 9))
+ REG70_0400=$((REG70 & 0x0400))
+ REG70_0400_VAL=$((REG70_0400 >> 10))
+ REG70_0800=$((REG70 & 0x0800))
+ REG70_0800_VAL=$((REG70_0800 >> 11))
+ REG70_4000=$((REG70 & 0x4000))
+ REG70_4000_VAL=$((REG70_4000 >> 14))
+ REG70_8000=$((REG70 & 0x8000))
+ REG70_8000_VAL=$((REG70_8000 >> 15))
+ REG70_0001=$((REG70 & 0x0001))
+ REG70_0001_VAL=$((REG70_0001))
+ REG70_0002=$((REG70 & 0x0002))
+ REG70_0002_VAL=$((REG70_0002 >> 1))
+}
+
+getReg78Vals() {
+ REG78_0100=$((REG78 & 0x0100))
+ REG78_0100_VAL=$((REG78_0100 >> 8))
+ REG78_0200=$((REG78 & 0x0200))
+ REG78_0200_VAL=$((REG78_0200 >> 9))
+ REG78_0400=$((REG78 & 0x0400))
+ REG78_0400_VAL=$((REG78_0400 >> 10))
+ REG78_0800=$((REG78 & 0x0800))
+ REG78_0800_VAL=$((REG78_0800 >> 11))
+ REG78_1000=$((REG78 & 0x1000))
+ REG78_1000_VAL=$((REG78_1000 >> 12))
+ REG78_2000=$((REG78 & 0x2000))
+ REG78_2000_VAL=$((REG78_2000 >> 13))
+ REG78_4000=$((REG78 & 0x4000))
+ REG78_4000_VAL=$((REG78_4000 >> 14))
+ REG78_8000=$((REG78 & 0x8000))
+ REG78_8000_VAL=$((REG78_8000 >> 15))
+ REG78_0001=$((REG78 & 0x0001))
+ REG78_0001_VAL=$((REG78_0001))
+ REG78_0002=$((REG78 & 0x0002))
+ REG78_0002_VAL=$((REG78_0002 >> 1))
+ REG78_0004=$((REG78 & 0x0004))
+ REG78_0004_VAL=$((REG78_0004 >> 2))
+ REG78_0008=$((REG78 & 0x0008))
+ REG78_0008_VAL=$((REG78_0008 >> 3))
+}
+
+getReg79Vals() {
+ REG79_0100=$((REG79 & 0x0100))
+ REG79_0100_VAL=$((REG79_0100 >> 8))
+ REG79_1000=$((REG79 & 0x1000))
+ REG79_1000_VAL=$((REG79_1000 >> 12))
+ REG79_2000=$((REG79 & 0x2000))
+ REG79_2000_VAL=$((REG79_2000 >> 13))
+ REG79_4000=$((REG79 & 0x4000))
+ REG79_4000_VAL=$((REG79_4000 >> 14))
+ REG79_0001=$((REG79 & 0x0001))
+ REG79_0001_VAL=$((REG79_0001))
+ REG79_0002=$((REG79 & 0x0002))
+ REG79_0002_VAL=$((REG79_0002 >> 1))
+ REG79_0004=$((REG79 & 0x0004))
+ REG79_0004_VAL=$((REG79_0004 >> 2))
+ REG79_0008=$((REG79 & 0x0008))
+ REG79_0008_VAL=$((REG79_0008 >> 3))
+}
+
+getReg7AVals() {
+ REG7A_0100=$((REG7A & 0x0100))
+ REG7A_0100_VAL=$((REG7A_0100 >> 8))
+ REG7A_0200=$((REG7A & 0x0200))
+ REG7A_0200_VAL=$((REG7A_0200 >> 9))
+ REG7A_0400=$((REG7A & 0x0400))
+ REG7A_0400_VAL=$((REG7A_0400 >> 10))
+ REG7A_0800=$((REG7A & 0x0800))
+ REG7A_0800_VAL=$((REG7A_0800 >> 11))
+ REG7A_1000=$((REG7A & 0x1000))
+ REG7A_1000_VAL=$((REG7A_1000 >> 12))
+ REG7A_2000=$((REG7A & 0x2000))
+ REG7A_2000_VAL=$((REG7A_2000 >> 13))
+ REG7A_4000=$((REG7A & 0x4000))
+ REG7A_4000_VAL=$((REG7A_4000 >> 14))
+ REG7A_8000=$((REG7A & 0x8000))
+ REG7A_8000_VAL=$((REG7A_8000 >> 15))
+}
+
+getReg7DVals() {
+ REG7D_0100=$((REG7D & 0x0100))
+ REG7D_0100_VAL=$((REG7D_0100 >> 8))
+ REG7D_0200=$((REG7D & 0x0200))
+ REG7D_0200_VAL=$((REG7D_0200 >> 9))
+ REG7D_0400=$((REG7D & 0x0400))
+ REG7D_0400_VAL=$((REG7D_0400 >> 10))
+}
+
+getReg7EVals() {
+ REG7E_0100=$((REG7E & 0x0100))
+ REG7E_0100_VAL=$((REG7E_0100 >> 8))
+ REG7E_0200=$((REG7E & 0x0200))
+ REG7E_0200_VAL=$((REG7E_0200 >> 9))
+}
+
+getGPIMaskRegisters(){
+ REG50=$(i2cget -f -y 0x2 0x4f 0x50 w) # GPI Control #0
+ REG51=$(i2cget -f -y 0x2 0x4f 0x51 w) # GPI Control #1
+ REG52=$(i2cget -f -y 0x2 0x4f 0x52 w) # GPI Control #2
+ REG53=$(i2cget -f -y 0x2 0x4f 0x53 w) # GPI Control #3
+ REG54=$(i2cget -f -y 0x2 0x4f 0x54 w) # GPI CE/UE Mask
+}
+
+getReg50Vals() {
+ REG50_0400=$((REG50 & 0x0400))
+ REG50_0400_VAL=$((REG50_0400 >> 10))
+ REG50_0800=$((REG50 & 0x0800))
+ REG50_0800_VAL=$((REG50_0800 >> 11))
+}
+
+getReg51Vals() {
+ REG51_0100=$((REG51 & 0x0100))
+ REG51_0100_VAL=$((REG51_0100 >> 8))
+ REG51_0200=$((REG51 & 0x0200))
+ REG51_0200_VAL=$((REG51_0200 >> 9))
+ REG51_0400=$((REG51 & 0x0400))
+ REG51_0400_VAL=$((REG51_0400 >> 10))
+}
+
+getReg52Vals() {
+ REG52_0100=$((REG52 & 0x0100))
+ REG52_0100_VAL=$((REG52_0100 >> 8))
+}
+
+getReg53Vals() {
+ REG53_0100=$((REG53 & 0x0100))
+ REG53_0100_VAL=$((REG53_0100 >> 8))
+ REG53_0200=$((REG53 & 0x0200))
+ REG53_0200_VAL=$((REG53_0200 >> 9))
+ REG53_0800=$((REG53 & 0x0800))
+ REG53_0800_VAL=$((REG53_0800 >> 11))
+ REG53_2000=$((REG53 & 0x2000))
+ REG53_2000_VAL=$((REG53_2000 >> 13))
+ REG53_4000=$((REG53 & 0x4000))
+ REG53_4000_VAL=$((REG53_4000 >> 14))
+ REG53_8000=$((REG53 & 0x8000))
+ REG53_8000_VAL=$((REG53_8000 >> 15))
+ REG53_0001=$((REG53 & 0x0001))
+ REG53_0001_VAL=$((REG53_0001))
+}
+
+getReg54Vals() {
+ REG54_0100=$((REG54 & 0x0100))
+ REG54_0100_VAL=$((REG54_0100 >> 8))
+ REG54_0200=$((REG54 & 0x0200))
+ REG54_0200_VAL=$((REG54_0200 >> 9))
+ REG54_0001=$((REG54 & 0x0001))
+ REG54_0001_VAL=$((REG54_0001))
+ REG54_0002=$((REG54 & 0x0002))
+ REG54_0002_VAL=$((REG54_0002 >> 1))
+ REG54_0004=$((REG54 & 0x0004))
+ REG54_0004_VAL=$((REG54_0004 >> 2))
+ REG54_0008=$((REG54 & 0x0008))
+ REG54_0008_VAL=$((REG54_0008 >> 3))
+ REG54_0010=$((REG54 & 0x0010))
+ REG54_0010_VAL=$((REG54_0010 >> 4))
+ REG54_0020=$((REG54 & 0x0020))
+ REG54_0020_VAL=$((REG54_0020 >> 5))
+}
+
+
+
+if [ -z $powerState ]
+ then
+ echo "System is currently Powered off S6"
+else
+ echo "System is currently in ${powerState} "
+
+ # Get Error Count
+ getErrorCount
+ echo " "
+ echo " Error Count: "
+ echo " Memory Errors: Correctable $((MemCE >> 8)) Uncorrectable $((MemUE >> 8)) "
+ echo " Core Errors: Correctable $((CoreCE >> 8)) Uncorrectable $((CoreUE >> 8))"
+ echo " PCIe Errors: Correctable $((PCIeCE >> 8)) Uncorrectable $((PCIeUE >> 8)) "
+ echo " Other Errors: Correctable $((OtherCE >> 8)) Uncorrectable $((OtherUE >> 8)) "
+
+ # GPI Source Registers
+ getGPISourceRegisters
+ echo " "
+ echo " GPI Source Registers: "
+ echo " GPI Data Set #0 Present: $((DS0Pres >> 8)) "
+ echo " GPI Data Set #1 Present: $((DS1Pres >> 9)) "
+ echo " GPI Data Set #2 Present: $((DS2Pres >> 10)) "
+ echo " GPI Data Set #3 Present: $((DS3Pres >> 11)) "
+
+ # REG61 Data Set#0
+ getReg61Vals
+ echo " "
+ echo " GPI Data Set#0: "
+ if [[ "$REG61_0800_VAL" != 0 ]]; then
+ echo " Platform Booting "
+ fi
+ if [[ "$REG61_1000_VAL" != 0 ]]; then
+ echo " Critical Stop "
+ fi
+
+ # REG62 Data Set#1
+ getReg62Vals
+ echo " "
+ echo " GPI Data Set#1: "
+ if [[ "$REG62_0100_VAL" != 0 ]]; then
+ echo " SoC VR HOT/Warn/Fault "
+ fi
+ if [[ "$REG62_0200_VAL" != 0 ]]; then
+ echo " Core VR HOT/Warn/Fault "
+ fi
+ if [[ "$REG62_0400_VAL" != 0 ]]; then
+ echo " DIMM HOT/Warn/Fault "
+ fi
+
+ # REG63 Data Set#2
+ getReg63Vals
+ echo " "
+ echo " GPI Data Set#2: "
+ if [[ "$REG63_0100_VAL" != 0 ]]; then
+ echo " DIMM HOT "
+ fi
+
+ # REG64 Data Set#3
+ getReg64Vals
+ echo " "
+ echo " GPI Data Set#3: "
+ if [[ "$REG64_0100_VAL" != 0 ]]; then
+ echo " Core Errors "
+ fi
+ if [[ "$REG64_0200_VAL" != 0 ]]; then
+ echo " Memory Errors "
+ fi
+ if [[ "$REG64_0800_VAL" != 0 ]]; then
+ echo " PCIe Errors "
+ fi
+ if [[ "$REG64_2000_VAL" != 0 ]]; then
+ echo " Other Errors "
+ fi
+ if [[ "$REG64_4000_VAL" != 0 ]]; then
+ echo " ACPI State Change "
+ fi
+ if [[ "$REG64_8000_VAL" != 0 ]]; then
+ echo " Boot Errors "
+ fi
+ if [[ "$REG64_0001_VAL" != 0 ]]; then
+ echo " RAS Internal Error "
+ fi
+
+ # GPI Status Regs
+ getGPIStatusRegisters
+ echo " "
+ echo " GPI Status Regs "
+
+ getReg70Vals
+ echo " "
+ echo " Core, DIMM, SLC, PCIe, and Other errors: "
+ if [[ "$REG70_0100_VAL" != 0 ]]; then
+ echo " Core CE Error "
+ fi
+ if [[ "$REG70_0200_VAL" != 0 ]]; then
+ echo " Core UE Error "
+ fi
+ if [[ "$REG70_0400_VAL" != 0 ]]; then
+ echo " DIMM CE Error "
+ fi
+ if [[ "$REG70_0800_VAL" != 0 ]]; then
+ echo " DIMM UE Error "
+ fi
+ if [[ "$REG70_4000_VAL" != 0 ]]; then
+ echo " PCIe CE Error "
+ fi
+ if [[ "$REG70_8000_VAL" != 0 ]]; then
+ echo " PCIe UE Error "
+ fi
+ if [[ "$REG70_0001_VAL" != 0 ]]; then
+ echo " Other CE Error "
+ fi
+ if [[ "$REG70_0002_VAL" != 0 ]]; then
+ echo " Other UE Error "
+ fi
+
+ getReg78Vals
+ echo " "
+ echo " VRD Fault/Warning Error: "
+ if [[ "$REG78_0100_VAL" != 0 ]]; then
+ echo " SoC VRD fault/warning "
+ fi
+ if [[ "$REG78_0200_VAL" != 0 ]]; then
+ echo " Core VRD1 fault/warning "
+ fi
+ if [[ "$REG78_0400_VAL" != 0 ]]; then
+ echo " Core VRD2 fault/warning "
+ fi
+ if [[ "$REG78_0800_VAL" != 0 ]]; then
+ echo " Core VRD3 fault/warning "
+ fi
+ if [[ "$REG78_1000_VAL" != 0 ]]; then
+ echo " DIMM VRD1 fault/warning "
+ fi
+ if [[ "$REG78_2000_VAL" != 0 ]]; then
+ echo " DIMM VRD2 fault/warning "
+ fi
+ if [[ "$REG78_4000_VAL" != 0 ]]; then
+ echo " DIMM VRD3 fault/warning "
+ fi
+ if [[ "$REG78_8000_VAL" != 0 ]]; then
+ echo " DIMM VRD3 fault/warning "
+ fi
+ if [[ "$REG78_0001_VAL" != 0 ]]; then
+ echo " DIMM fault/warning "
+ fi
+ if [[ "$REG78_0002_VAL" != 0 ]]; then
+ echo " DIMM fault/warning "
+ fi
+ if [[ "$REG78_0004_VAL" != 0 ]]; then
+ echo " DIMM fault/warning "
+ fi
+ if [[ "$REG78_0008_VAL" != 0 ]]; then
+ echo " DIMM fault/warning "
+ fi
+
+ getReg79Vals
+ echo " "
+ echo " VRD Hot: "
+ if [[ "$REG79_0100_VAL" != 0 ]]; then
+ echo " SoC VRD is HOT "
+ fi
+ if [[ "$REG79_1000_VAL" != 0 ]]; then
+ echo " Core VRD1 is HOT "
+ fi
+ if [[ "$REG79_2000_VAL" != 0 ]]; then
+ echo " Core VRD2 is HOT "
+ fi
+ if [[ "$REG79_4000_VAL" != 0 ]]; then
+ echo " Core VRD3 is HOT "
+ fi
+ if [[ "$REG79_0001_VAL" != 0 ]]; then
+ echo " DIMM VRD1 is HOT "
+ fi
+ if [[ "$REG79_0002_VAL" != 0 ]]; then
+ echo " DIMM VRD2 is HOT "
+ fi
+ if [[ "$REG79_0004_VAL" != 0 ]]; then
+ echo " DIMM VRD3 is HOT "
+ fi
+ if [[ "$REG79_0008_VAL" != 0 ]]; then
+ echo " DIMM VRD4 is HOT "
+ fi
+
+ getReg7AVals
+ echo " "
+ echo " DIMM Hot Error: "
+ if [[ "$REG7A_0100_VAL" != 0 ]]; then
+ echo " DIMM channel 0 is HOT "
+ fi
+ if [[ "$REG7A_0200_VAL" != 0 ]]; then
+ echo " DIMM channel 1 is HOT "
+ fi
+ if [[ "$REG7A_0400_VAL" != 0 ]]; then
+ echo " DIMM channel 2 is HOT "
+ fi
+ if [[ "$REG7A_0800_VAL" != 0 ]]; then
+ echo " DIMM channel 3 is HOT "
+ fi
+ if [[ "$REG7A_1000_VAL" != 0 ]]; then
+ echo " DIMM channel 4 is HOT "
+ fi
+ if [[ "$REG7A_2000_VAL" != 0 ]]; then
+ echo " DIMM channel 5 is HOT "
+ fi
+ if [[ "$REG7A_4000_VAL" != 0 ]]; then
+ echo " DIMM channel 6 is HOT "
+ fi
+ if [[ "$REG7A_8000_VAL" != 0 ]]; then
+ echo " DIMM channel 7 is HOT "
+ fi
+
+ echo " "
+ echo " Boot #1 Error: $((REG7B >> 8)) "
+ echo " Boot #2 Error: $((REG7C >> 8)) "
+
+
+ getReg7DVals
+ echo " "
+ echo " Watchdog/Other Status: "
+ if [[ "$REG7D_0100_VAL" != 0 ]]; then
+ echo " Non-secure WDT expired "
+ fi
+ if [[ "$REG7D_0200_VAL" != 0 ]]; then
+ echo " Secure WDT expired "
+ fi
+ if [[ "$REG7D_0400_VAL" != 0 ]]; then
+ echo " Firmware WDT expired "
+ fi
+
+ getReg7EVals
+ echo " "
+ echo " RAS internal error: "
+ if [[ "$REG7E_0100_VAL" != 0 ]]; then
+ echo " Error from SMpro "
+ fi
+ if [[ "$REG7E_0200_VAL" != 0 ]]; then
+ echo " Error from PMpro "
+ fi
+
+ # GPI Mask Regs
+ getGPIMaskRegisters
+ echo " "
+ echo " GPI Mask Regs "
+
+ getReg50Vals
+ echo " "
+ echo " GPI Control #0: "
+
+ if [[ "$REG50_0400_VAL" != 0 ]]; then
+ echo " Platform Booting "
+ fi
+ if [[ "$REG50_0800_VAL" != 0 ]]; then
+ echo " Critical Stop "
+ fi
+
+ getReg51Vals
+ echo " "
+ echo " GPI Control #1: "
+
+ if [[ "$REG51_0100_VAL" != 0 ]]; then
+ echo " SoC VR HOT/Warn/Fault "
+ fi
+ if [[ "$REG51_0200_VAL" != 0 ]]; then
+ echo " Core VR HOT/Warn/Fault "
+ fi
+ if [[ "$REG51_0400_VAL" != 0 ]]; then
+ echo " DIMM VRD HOT/Warn/Fault "
+ fi
+
+ getReg52Vals
+ echo " "
+ echo " GPI Control #2: "
+
+ if [[ "$REG52_0100_VAL" != 0 ]]; then
+ echo " DIMM HOT "
+ fi
+
+ getReg53Vals
+ echo " "
+ echo " GPI Control #3: "
+ if [[ "$REG53_0100_VAL" != 0 ]]; then
+ echo " Core Errors "
+ fi
+ if [[ "$REG53_0200_VAL" != 0 ]]; then
+ echo " Memory Errors "
+ fi
+ if [[ "$REG53_0800_VAL" != 0 ]]; then
+ echo " PCIe Errors "
+ fi
+ if [[ "$REG53_2000_VAL" != 0 ]]; then
+ echo " Other SoC Errors "
+ fi
+ if [[ "$REG53_4000_VAL" != 0 ]]; then
+ echo " ACPI State Change "
+ fi
+ if [[ "$REG53_8000_VAL" != 0 ]]; then
+ echo " Boot Errors "
+ fi
+ if [[ "$REG53_0001_VAL" != 0 ]]; then
+ echo " RAS Internal Error "
+ fi
+
+ getReg54Vals
+ echo " "
+ echo " GPI CE/UE Mask: "
+ if [[ "$REG54_0100_VAL" != 0 ]]; then
+ echo " Core CE "
+ fi
+ if [[ "$REG54_0200_VAL" != 0 ]]; then
+ echo " Core UE "
+ fi
+ if [[ "$REG54_0001_VAL" != 0 ]]; then
+ echo " DIMM CE "
+ fi
+ if [[ "$REG54_0002_VAL" != 0 ]]; then
+ echo " DIMM UE "
+ fi
+ if [[ "$REG54_0004_VAL" != 0 ]]; then
+ echo " PCIe CE "
+ fi
+ if [[ "$REG54_0008_VAL" != 0 ]]; then
+ echo " PCIe UE "
+ fi
+ if [[ "$REG54_0010_VAL" != 0 ]]; then
+ echo " Other CE "
+ fi
+ if [[ "$REG54_0020_VAL" != 0 ]]; then
+ echo " Other UE "
+ fi
+
+fi
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo.sh b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo.sh
new file mode 100644
index 000000000..0c12fca13
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo.sh
@@ -0,0 +1,276 @@
+#!/bin/bash
+# help information
+
+source /usr/sbin/kudo-lib.sh
+
+function usage_rst() {
+ echo " kudo rst [parameter]"
+ echo " hotswap --> reset the whole kudo node"
+ echo " system --> reset the host"
+ echo " btn --> trigger a power button event"
+ echo " shutdown --> send out shutdown signal to CPU"
+ echo " display --> "
+}
+
+function usage_led() {
+
+ echo " kudo led 'att'/'boot' [parameter]"
+ echo " on --> change to CPU console"
+ echo " off --> change to CPU 0 SCP console"
+ echo " status --> change to CPU 1 SCP console"
+}
+
+function usage_uart() {
+ echo " kudo uart [parameter]"
+ echo " host --> change to CPU console"
+ echo " scp1 --> change to CPU 0 SCP console"
+ echo " scp2 --> change to CPU 1 SCP console"
+ echo " hosthr --> change CPU console to header"
+ echo " scphr --> change SCP console to header"
+ echo " display --> "
+}
+
+function usage() {
+ echo " kudo BMC console system utilities"
+ echo " kudo [optional] [parameter]"
+ echo " rst --> reset traget device"
+ echo " fw --> get version"
+ echo " uart --> control the uart mux"
+ echo " led --> control the leds"
+}
+
+function reset() {
+ case $1 in
+ hotswap)
+ # Virtual reset #94
+ set_gpio_ctrl 94 out 1
+ ;;
+ system)
+ # S0 system reset #65
+ set_gpio_ctrl 65 out 0
+ sleep 1
+ set_gpio_ctrl 65 out 1
+ ;;
+ btn)
+ # power button #203
+ set_gpio_ctrl 203 out 1
+ sleep 1
+ set_gpio_ctrl 203 out 0
+ ;;
+ shutdown)
+ # BMC_CPU_SHD_REQ #70
+ set_gpio_ctrl 70 out 0
+ sleep 3
+ set_gpio_ctrl 70 out 1
+ ;;
+ forceOff)
+ # power button #203
+ set_gpio_ctrl 203 out 1
+ sleep 6
+ set_gpio_ctrl 203 out 0
+ ;;
+ display)
+ echo "Virtual reset #94" $(get set_gpio_ctrl 94)
+ echo "S0 System reset #65" $(get set_gpio_ctrl 65)
+ echo "Power Button #203" $(get set_gpio_ctrl 203)
+ echo "BMC_CPU SHD Req #70" $(get set_gpio_ctrl 70)
+ ;;
+ *)
+ usage_rst
+ ;;
+ esac
+}
+
+function fw_rev() {
+ BMC_CPLD_VER_FILE="/run/cpld0.version"
+ MB_CPLD_VER_FILE="/run/cpld1.version"
+
+ cmd=$(cat $BMC_CPLD_VER_FILE)
+ echo " BMC_CPLD: " $cmd
+ cmd=$(cat $MB_CPLD_VER_FILE)
+ echo " MB_CPLD: " $cmd
+
+ cmd=$(cat /etc/os-release | grep VERSION -w | cut -d '=' -f 2)
+ echo " BMC : " ${cmd}
+
+ #BMC PWR Sequencer
+ i2cset -y -f -a 14 0x59 0xfe 0x0000 w
+ cmd=$(i2cget -y -f -a 14 0x59 0xfe i 2 | awk '{print substr($0,3)}')
+ echo " BMC PowerSequencer : ${cmd}"
+ #only display with smbios exists
+ if [[ -e /var/lib/smbios/smbios2 ]]; then
+ cmd=$(busctl introspect xyz.openbmc_project.Smbios.MDR_V2 \
+ /xyz/openbmc_project/inventory/system/chassis/motherboard/bios | grep Version | awk '{print $4}')
+ echo " Bios: $cmd"
+ fi
+
+ cmd=$(i2cget -f -y 2 0x4f 0x1 w);
+ echo " SCP Firmware: ${cmd}"
+
+ adm1266_ver | grep REVISION
+
+}
+
+function uartmux() {
+ case $1 in
+ host)
+ set_gpio_ctrl 167 out 1
+ ;;
+ scp1)
+ set_gpio_ctrl 161 out 1
+ set_gpio_ctrl 177 out 1
+ set_gpio_ctrl 198 out 0
+ ;;
+ scp2)
+ set_gpio_ctrl 161 out 1
+ set_gpio_ctrl 177 out 1
+ set_gpio_ctrl 198 out 1
+ ;;
+ hosthr)
+ set_gpio_ctrl 167 out 0
+ ;;
+ scphr)
+ set_gpio_ctrl 161 out 0
+ set_gpio_ctrl 177 out 0
+ ;;
+ display)
+ if [ $(get_gpio_ctrl 167) -eq 1 ]; then
+ echo " CPU host to BMC console"
+ else
+ echo " CPU host to header"
+ fi
+ if [ $(get_gpio_ctrl 161) -eq 1 ] && [ $(get_gpio_ctrl 177) -eq 1 ]; then
+ if [ $(get_gpio_ctrl 198) -eq 1 ]; then
+ echo " SCP2 host to BMC console"
+ else
+ echo " SCP1 host to BMC console"
+ fi
+ elif [ $(get_gpio_ctrl 161) -eq 0 ] && [ $(get_gpio_ctrl 177) -eq 0 ]; then
+ if [ $(get_gpio_ctrl 198) -eq 1 ]; then
+ echo " SCP2 host to Header"
+ else
+ echo " SCP1 host to Header"
+ fi
+ else
+ echo "It's unknown status"
+ echo "167" $(get_gpio_ctrl 167)
+ echo "161" $(get_gpio_ctrl 161)
+ echo "177" $(get_gpio_ctrl 177)
+ echo "198" $(get_gpio_ctrl 198)
+ fi
+ ;;
+ *)
+ usage_uart
+ ;;
+ esac
+}
+
+function ledtoggle() {
+
+ CurrentLED=$( i2cget -y -f -a 34 0x76 0x05 i 1 | cut -d ' ' -f 2)
+ case $1 in
+ boot)
+ cmd=$((($CurrentLED & 0x40) != 0))
+ case $2 in
+ on)
+ #turn on LED
+ if [[ $cmd -eq 0 ]]; then
+ setValue=$(( 0x40 + $CurrentLED ))
+ i2cset -y -f -a 34 0x76 0x10 $setValue
+ fi
+ ;;
+ off)
+ #turn off led
+ if [[ $cmd -eq 1 ]]; then
+ setValue=$(( 0x80 & $CurrentLED ))
+ i2cset -y -f -a 34 0x76 0x10 $setValue
+ fi
+ ;;
+ toggle)
+ #turn on LED
+ setValue=$(( 0x40 ^ $CurrentLED ))
+ i2cset -y -f -a 34 0x76 0x10 $setValue
+ ;;
+ status)
+ #displayLED status
+ if [[ $cmd -eq 1 ]]; then
+ echo "on"
+ else
+ echo "off"
+ fi
+ ;;
+ *)
+ usage_led
+ ;;
+ esac
+ ;;
+ att)
+ cmd=$((($CurrentLED & 0x80) != 0))
+ case $2 in
+ on)
+ #turn on LED
+ if [[ $cmd -eq 0 ]]; then
+ setValue=$(( 0x80 + $CurrentLED ))
+ i2cset -y -f -a 34 0x76 0x10 $setValue
+ fi
+ ;;
+ off)
+ #turn off led
+ if [[ $cmd -eq 1 ]]; then
+ setValue=$(( 0x40 & $CurrentLED ))
+ i2cset -y -f -a 34 0x76 0x10 $setValue
+ fi
+ ;;
+ toggle)
+ #turn on LED
+ setValue=$(( 0x80 ^ $CurrentLED ))
+ i2cset -y -f -a 34 0x76 0x10 $setValue
+ ;;
+ status)
+ #displayLED status
+ if [[ $cmd -eq 1 ]]; then
+ echo "on"
+ else
+ echo "off"
+ fi
+ ;;
+ *)
+ usage_led
+ ;;
+ esac
+ ;;
+ *)
+ usage_led
+ ;;
+ esac
+}
+
+function usblist() {
+ for i in {0..8}
+ do
+ cmd="devmem 0xf083"$i"154"
+ printf "udc%d : 0xF803%d154-" "$i" "$i"
+ $cmd
+ done
+}
+
+case $1 in
+ rst)
+ reset $2
+ ;;
+ fw)
+ fw_rev
+ ;;
+ uart)
+ uartmux $2
+ ;;
+ usb)
+ usblist
+ ;;
+ led)
+ ledtoggle $2 $3
+ ;;
+ *)
+ usage
+ ;;
+esac
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-system/kudo-entity-association-map.bb b/meta-fii/meta-kudo/recipes-kudo/kudo-system/kudo-entity-association-map.bb
new file mode 100644
index 000000000..85006dadc
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-system/kudo-entity-association-map.bb
@@ -0,0 +1,16 @@
+UMMARY = "Kudo IPMI Entity association mapping."
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+SRC_URI += "file://kudo_entity_association_map.json"
+
+FILES_${PN} = " \
+ ${datadir}/ipmi-entity-association/entity_association_map.json \
+ "
+
+do_install() {
+ install -d ${D}${datadir}/ipmi-entity-association
+ install -m 0644 -D ${WORKDIR}/kudo_entity_association_map.json \
+ ${D}${datadir}/ipmi-entity-association/entity_association_map.json
+}
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-system/kudo-entity-association-map/kudo_entity_association_map.json b/meta-fii/meta-kudo/recipes-kudo/kudo-system/kudo-entity-association-map/kudo_entity_association_map.json
new file mode 100644
index 000000000..2530684c0
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-system/kudo-entity-association-map/kudo_entity_association_map.json
@@ -0,0 +1,35 @@
+{
+ "system_board": [
+ {"instance": 1, "name": "/"}
+ ],
+ "system_internal_expansion_board": [
+ {"instance": 1, "name": "/"}
+ ],
+ "power_system_board": [
+ {"instance": 1, "name": "/"}
+ ],
+ "add_in_card": [
+ {"instance": 0, "name": "/PE0"},
+ {"instance": 1, "name": "/PE1"},
+ {"instance": 2, "name": "/PE2"},
+ {"instance": 3, "name": "/PE3"},
+ {"instance": 4, "name": "/PE4"},
+ {"instance": 5, "name": "/PE5"},
+ {"instance": 6, "name": "/PE6"},
+ {"instance": 7, "name": "/PE7"}
+ ],
+ "fan": [
+ {"instance": 0, "name": "/fan0"},
+ {"instance": 1, "name": "/fan1"},
+ {"instance": 2, "name": "/fan2"},
+ {"instance": 3, "name": "/fan3"},
+ {"instance": 4, "name": "/fan4"},
+ {"instance": 5, "name": "/fan5"}
+ ],
+ "cooling_unit": [
+ {"instance": 0, "name": "/ZONE0"},
+ {"instance": 1, "name": "/ZONE1"},
+ {"instance": 2, "name": "/ZONE2"},
+ {"instance": 3, "name": "/ZONE3"}
+ ]
+}
diff --git a/meta-fii/meta-kudo/recipes-kudo/packagegroups/packagegroup-kudo-apps.bb b/meta-fii/meta-kudo/recipes-kudo/packagegroups/packagegroup-kudo-apps.bb
index f64373e89..41a345d8e 100644
--- a/meta-fii/meta-kudo/recipes-kudo/packagegroups/packagegroup-kudo-apps.bb
+++ b/meta-fii/meta-kudo/recipes-kudo/packagegroups/packagegroup-kudo-apps.bb
@@ -7,12 +7,15 @@ PROVIDES = "${PACKAGES}"
PACKAGES = " \
${PN}-kudo-system \
${PN}-kudo-fw \
+ ${PN}-fan-mgmt \
"
PROVIDES += "virtual/obmc-system-mgmt"
+PROVIDES += "virtual/obmc-fan-mgmt"
RPROVIDES_${PN}-kudo-system += "virtual-obmc-system-mgmt"
-RPROVIDES_${PN}-kudo-fw += "virtual-obmc-system-mgmt"
+RPROVIDES_${PN}-kudo-fw += "virtual-obmc-flash-mgmt"
+RPROVIDES_${PN}-fan-mgmt += "virtual-obmc-fan-mgmt"
SUMMARY_${PN}-kudo-system = "KUDO System"
RDEPENDS_${PN}-kudo-system = " \
@@ -20,10 +23,15 @@ RDEPENDS_${PN}-kudo-system = " \
ethtool \
memtester \
loadsvf \
+ fii-ipmi-oem \
+ kudo-entity-association-map \
+ hotswap-power-cycle \
obmc-console \
usb-network \
ncsid \
gbmc-mac-config \
+ kudo-boot \
+ kudo-cmd \
"
SUMMARY_${PN}-kudo-fw = "KUDO Firmware"
@@ -34,3 +42,9 @@ RDEPENDS_${PN}-kudo-fw = " \
kudo-cpld-update \
kudo-scp-update \
"
+
+SUMMARY_${PN}-fan-mgmt = "kudo fan mgmt"
+RDEPENDS_${PN}-fan-mgmt = " \
+ pwm-init \
+ phosphor-pid-control \
+ "
diff --git a/meta-fii/meta-kudo/recipes-phosphor/configuration/entity-manager/blacklist.json b/meta-fii/meta-kudo/recipes-phosphor/configuration/entity-manager/blacklist.json
new file mode 100644
index 000000000..b304fe1d9
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/configuration/entity-manager/blacklist.json
@@ -0,0 +1,3 @@
+{
+ "buses": [1]
+}
diff --git a/meta-fii/meta-kudo/recipes-phosphor/configuration/entity-manager/kudo.json b/meta-fii/meta-kudo/recipes-phosphor/configuration/entity-manager/kudo.json
index 2c5fdb3bc..6437e77b0 100644
--- a/meta-fii/meta-kudo/recipes-phosphor/configuration/entity-manager/kudo.json
+++ b/meta-fii/meta-kudo/recipes-phosphor/configuration/entity-manager/kudo.json
@@ -24,8 +24,8 @@
"vout4_Name":"DC_P3V3_PU",
"vout5_Name":"DC_3V3_STBY",
"vout6_Name":"DC_P1V175",
- "vout2_Max":3,
- "vout3_Max":2.2,
+ "vout2_Max":3.5,
+ "vout3_Max":2.5,
"vout4_Max":5.8,
"vout5_Max":5.8,
"vout6_Max":3,
@@ -35,35 +35,35 @@
"Name":"upper critical",
"Label":"vout2",
"Severity":1,
- "Value":2.75
+ "Value":2.877
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout2",
"Severity":0,
- "Value":2.5
+ "Value":2.74
},
- {
- "Direction":"less than",
- "Name":"lower critical",
- "Label":"vout2",
- "Severity":1,
- "Value":2.375
- },
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout2",
"Severity":0,
- "Value":2.4
+ "Value":2.260
+ },
+ {
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout2",
+ "Severity":1,
+ "Value":2.192
},
{
"Direction":"greater than",
"Name":"upper critical",
"Label":"vout3",
"Severity":1,
- "Value":1.32
+ "Value":1.33
},
{
"Direction":"greater than",
@@ -74,101 +74,101 @@
},
{
"Direction":"less than",
- "Name":"lower critical",
+ "Name":"lower non critical",
"Label":"vout3",
- "Severity":1,
- "Value":1.14
+ "Severity":0,
+ "Value":1.15
},
{
"Direction":"less than",
- "Name":"lower non critical",
+ "Name":"lower critical",
"Label":"vout3",
- "Severity":0,
- "Value":1.17
+ "Severity":1,
+ "Value":1.137
},
{
"Direction":"greater than",
"Name":"upper critical",
"Label":"vout4",
"Severity":1,
- "Value":3.63
+ "Value":3.927
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout4",
"Severity":0,
- "Value":3.4
+ "Value":3.745
},
{
"Direction":"less than",
- "Name":"lower critical",
+ "Name":"lower non critical",
"Label":"vout4",
- "Severity":1,
- "Value":3.135
+ "Severity":0,
+ "Value":2.951
},
{
"Direction":"less than",
- "Name":"lower non critical",
+ "Name":"lower critical",
"Label":"vout4",
- "Severity":0,
- "Value":3.2
+ "Severity":1,
+ "Value":2.724
},
{
"Direction":"greater than",
"Name":"upper critical",
"Label":"vout5",
"Severity":1,
- "Value":3.63
+ "Value":3.927
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout5",
"Severity":0,
- "Value":3.4
+ "Value":3.745
},
{
"Direction":"less than",
- "Name":"lower critical",
+ "Name":"lower non critical",
"Label":"vout5",
- "Severity":1,
- "Value":3.135
+ "Severity":0,
+ "Value":2.951
},
{
"Direction":"less than",
- "Name":"lower non critical",
+ "Name":"lower critical",
"Label":"vout5",
- "Severity":0,
- "Value":3.2
+ "Severity":1,
+ "Value":2.724
},
{
"Direction":"greater than",
"Name":"upper critical",
"Label":"vout6",
"Severity":1,
- "Value":1.292
+ "Value":1.298
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout6",
"Severity":0,
- "Value":1.23
+ "Value":1.239
},
{
"Direction":"less than",
- "Name":"lower critical",
+ "Name":"lower non critical",
"Label":"vout6",
- "Severity":1,
- "Value":1.117
+ "Severity":0,
+ "Value":1.109
},
{
"Direction":"less than",
- "Name":"lower non critical",
+ "Name":"lower critical",
"Label":"vout6",
- "Severity":0,
- "Value":1.117
+ "Severity":1,
+ "Value":1.109
}
],
"Type":"MAX34440"
@@ -239,13 +239,13 @@
"Direction":"greater than",
"Name":"upper critical",
"Severity":1,
- "Value":105
+ "Value":70
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Severity":0,
- "Value":100
+ "Value":60
}
],
"Type":"TMP75",
@@ -261,13 +261,13 @@
"Direction":"greater than",
"Name":"upper critical",
"Severity":1,
- "Value":105
+ "Value":70
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Severity":0,
- "Value":100
+ "Value":60
}
],
"Type":"TMP75",
@@ -277,19 +277,19 @@
{
"Address":"0x48",
"Bus":44,
- "Name":"Mobo_NBM1_ZONE_T",
+ "Name":"CPU0_NBM_ZONE_T",
"Thresholds":[
{
"Direction":"greater than",
"Name":"upper critical",
"Severity":1,
- "Value":110
+ "Value":80
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Severity":0,
- "Value":108
+ "Value":70
}
],
"Type":"TMP75",
@@ -299,19 +299,19 @@
{
"Address":"0x49",
"Bus":45,
- "Name":"Mobo_NBM2_ZONE_T",
+ "Name":"CPU1_NBM_ZONE_T",
"Thresholds":[
{
"Direction":"greater than",
"Name":"upper critical",
"Severity":1,
- "Value":110
+ "Value":80
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Severity":0,
- "Value":108
+ "Value":70
}
],
"Type":"TMP75",
@@ -349,13 +349,13 @@
"Direction":"greater than",
"Name":"upper critical",
"Severity":1,
- "Value":90
+ "Value":85
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Severity":0,
- "Value":85
+ "Value":80
}
],
"Type":"TMP75",
@@ -371,13 +371,13 @@
"Direction":"greater than",
"Name":"upper critical",
"Severity":1,
- "Value":90
+ "Value":85
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Severity":0,
- "Value":85
+ "Value":80
}
],
"Type":"TMP75",
@@ -393,13 +393,13 @@
"Direction":"greater than",
"Name":"upper critical",
"Severity":1,
- "Value":90
+ "Value":85
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Severity":0,
- "Value":85
+ "Value":80
}
],
"Type":"TMP75",
@@ -421,14 +421,14 @@
"Name":"upper critical",
"Label":"temp1",
"Severity":1,
- "Value":220
+ "Value":105
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"temp1",
"Severity":0,
- "Value":125
+ "Value":100
}
],
"Type":"pmbus",
@@ -498,238 +498,231 @@
"Name":"upper critical",
"Label":"vout1",
"Severity":1,
- "Value":12.6
- },
- {
- "Direction":"less than",
- "Name":"lower critical",
- "Label":"vout1",
- "Severity":1,
- "Value":11.4
+ "Value":12.654
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout1",
"Severity":0,
- "Value":12.4
+ "Value":12.483
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout1",
"Severity":0,
- "Value":11.9
+ "Value":11.856
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout2",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout1",
"Severity":1,
- "Value":6.06
+ "Value":11.343
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout2",
"Severity":1,
- "Value":3.4
+ "Value":6.127
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout2",
"Severity":0,
- "Value":5.25
+ "Value":5.328
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout2",
"Severity":0,
- "Value":4.75
+ "Value":4.695
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout3",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout2",
"Severity":1,
- "Value":3.98
+ "Value":3.397
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout3",
"Severity":1,
- "Value":2.83
+ "Value":4.019
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout3",
"Severity":0,
- "Value":3.465
+ "Value":3.502
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout3",
"Severity":0,
- "Value":3.132
+ "Value":3.079
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout4",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout3",
"Severity":1,
- "Value":5.508
+ "Value":2.773
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout4",
"Severity":1,
- "Value":1.922
+ "Value":5.593
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout4",
"Severity":0,
- "Value":2.938
+ "Value":4.935
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout4",
"Severity":0,
- "Value":2.657
+ "Value":235
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout5",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout4",
"Severity":1,
- "Value":64.9
+ "Value":1.762
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout5",
"Severity":1,
- "Value":36.58
+ "Value":65.175
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout5",
"Severity":0,
- "Value":59.95
+ "Value":60.225
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout5",
"Severity":0,
- "Value":39.875
+ "Value":39.6
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout6",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout5",
"Severity":1,
- "Value":16.685
+ "Value":36.3
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout6",
"Severity":1,
- "Value":8.59
+ "Value":16.872
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout6",
"Severity":0,
- "Value":14.91
+ "Value":15.048
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout6",
"Severity":0,
- "Value":10.011
+ "Value":9.88
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout7",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout6",
"Severity":1,
- "Value":3.98
+ "Value":8.436
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout7",
"Severity":1,
- "Value":2.268
+ "Value":4.018
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout7",
"Severity":0,
- "Value":3.456
+ "Value":3.489
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout7",
"Severity":0,
- "Value":3.132
+ "Value":3.097
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout8",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout7",
"Severity":1,
- "Value":1.805
+ "Value":2.234
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout8",
"Severity":1,
- "Value":0.802
+ "Value":1.829
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout8",
"Severity":0,
- "Value":1.263
+ "Value":1.286
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout8",
"Severity":0,
- "Value":1.145
+ "Value":1.121
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout9",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout8",
"Severity":1,
- "Value":1.805
+ "Value":0.755
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout9",
"Severity":1,
- "Value":0.802
+ "Value":1.805
},
{
"Direction":"greater than",
@@ -746,228 +739,235 @@
"Value":1.145
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout10",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout9",
"Severity":1,
- "Value":8.898
+ "Value":0.802
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout10",
"Severity":1,
- "Value":8.036
+ "Value":9.02
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout10",
"Severity":0,
- "Value":8.938
+ "Value":8.975
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout10",
"Severity":0,
- "Value":8.075
+ "Value":7.983
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout11",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout10",
"Severity":1,
- "Value":5.253
+ "Value":7.938
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout11",
"Severity":1,
- "Value":4.758
+ "Value":5.321
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout11",
"Severity":0,
- "Value":5.143
+ "Value":5.204
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout11",
"Severity":0,
- "Value":4.84
+ "Value":4.792
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout12",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout11",
"Severity":1,
- "Value":2.167
+ "Value":4.704
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout12",
"Severity":1,
- "Value":1.225
+ "Value":2.198
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout12",
"Severity":0,
- "Value":1.884
+ "Value":1.915
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout12",
"Severity":0,
- "Value":1.711
+ "Value":1.680
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout13",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout12",
"Severity":1,
- "Value":1.804
+ "Value":1.193
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout13",
"Severity":1,
- "Value":1.021
+ "Value":1.829
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout13",
"Severity":0,
- "Value":1.575
+ "Value":1.711
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout13",
"Severity":0,
- "Value":1.426
+ "Value":1.404
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout14",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout13",
"Severity":1,
- "Value":2.072
+ "Value":1.003
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout14",
"Severity":1,
- "Value":1.444
+ "Value":2.112
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout14",
"Severity":0,
- "Value":1.884
+ "Value":1.918
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout14",
"Severity":0,
- "Value":1.711
+ "Value":1.672
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout15",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout14",
"Severity":1,
- "Value":2.165
+ "Value":1.408
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout15",
"Severity":1,
- "Value":1.214
+ "Value":2.195
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout15",
"Severity":0,
- "Value":1.883
+ "Value":1.92
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout15",
"Severity":0,
- "Value":1.795
+ "Value":1.666
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout16",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout15",
"Severity":1,
- "Value":1.196
+ "Value":1.176
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout16",
"Severity":1,
- "Value":0.598
+ "Value":1.215
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout16",
"Severity":0,
- "Value":0.823
+ "Value":1.062
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout16",
"Severity":0,
- "Value":0.676
+ "Value":0.649
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout17",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout16",
"Severity":1,
- "Value":3.972
+ "Value":0.578
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout17",
"Severity":1,
- "Value":2.327
+ "Value":4.019
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout17",
"Severity":0,
- "Value":3.455
+ "Value":3.713
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout17",
"Severity":0,
- "Value":3.126
+ "Value":3.079
+ },
+ {
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout17",
+ "Severity":1,
+ "Value":2.280
}
],
"Type":"ADM1266"
@@ -1134,448 +1134,448 @@
"Name":"upper critical",
"Label":"vout2",
"Severity":1,
- "Value":6.06
- },
- {
- "Direction":"less than",
- "Name":"lower critical",
- "Label":"vout2",
- "Severity":1,
- "Value":3.391
+ "Value":6.178
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout2",
"Severity":0,
- "Value":5.244
+ "Value":5.648
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout2",
"Severity":0,
- "Value":4.741
+ "Value":4.059
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout3",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout2",
"Severity":1,
- "Value":3.009
+ "Value":3.389
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout3",
"Severity":1,
- "Value":0.484
+ "Value":3.08
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout3",
"Severity":0,
- "Value":0.637
+ "Value":2.816
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout3",
"Severity":0,
- "Value":0.566
+ "Value":0.49
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout4",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout3",
"Severity":1,
- "Value":1.901
+ "Value":0.44
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout4",
"Severity":1,
- "Value":0.198
+ "Value":2.006
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout4",
"Severity":0,
- "Value":1.496
+ "Value":1.77
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout4",
"Severity":0,
- "Value":0.404
+ "Value":0.354
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout5",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout4",
"Severity":1,
- "Value":2.165
+ "Value":0.177
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout5",
"Severity":1,
- "Value":1.219
+ "Value":2.355
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout5",
"Severity":0,
- "Value":1.891
+ "Value":2.119
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout5",
"Severity":0,
- "Value":1.713
+ "Value":1.57
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout6",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout5",
"Severity":1,
- "Value":16.685
+ "Value":1.099
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout6",
"Severity":1,
- "Value":8.591
+ "Value":18.33
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout6",
"Severity":0,
- "Value":14.91
+ "Value":16.77
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout6",
"Severity":0,
- "Value":10.011
+ "Value":9.36
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout7",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout6",
"Severity":1,
- "Value":3.974
+ "Value":7.8
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout7",
"Severity":1,
- "Value":2.268
+ "Value":4.212
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout7",
"Severity":0,
- "Value":3.465
+ "Value":3.888
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout7",
"Severity":0,
- "Value":3.132
+ "Value":2.268
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout8",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout7",
"Severity":1,
- "Value":1.805
+ "Value":2.16
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout8",
"Severity":1,
- "Value":0.802
+ "Value":2.055
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout8",
"Severity":0,
- "Value":1.263
+ "Value":1.644
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout8",
"Severity":0,
- "Value":1.145
+ "Value":0.959
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout9",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout8",
"Severity":1,
- "Value":1.805
+ "Value":0.685
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout9",
"Severity":1,
- "Value":0.802
+ "Value":2.055
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout9",
"Severity":0,
- "Value":1.263
+ "Value":1.644
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout9",
"Severity":0,
- "Value":1.145
+ "Value":0.959
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout10",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout9",
"Severity":1,
- "Value":1.196
+ "Value":0.685
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout10",
"Severity":1,
- "Value":0.598
+ "Value":1.416
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout10",
"Severity":0,
- "Value":1.098
+ "Value":1.298
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout10",
"Severity":0,
- "Value":0.755
+ "Value":0.649
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout11",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout10",
"Severity":1,
- "Value":1.196
+ "Value":0.531
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout11",
"Severity":1,
- "Value":0.598
+ "Value":1.416
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout11",
"Severity":0,
- "Value":1.098
+ "Value":1.298
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout11",
"Severity":0,
- "Value":0.755
+ "Value":0.649
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout12",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout11",
"Severity":1,
- "Value":2.167
+ "Value":0.531
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout12",
"Severity":1,
- "Value":1.225
+ "Value":2.433
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout12",
"Severity":0,
- "Value":1.884
+ "Value":2.119
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout12",
"Severity":0,
- "Value":1.711
+ "Value":1.413
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout13",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout12",
"Severity":1,
- "Value":1.804
+ "Value":1.099
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout13",
"Severity":1,
- "Value":1.021
+ "Value":2.06
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout13",
"Severity":0,
- "Value":1.575
+ "Value":1.79
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout13",
"Severity":0,
- "Value":1.426
+ "Value":1.197
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout14",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout13",
"Severity":1,
- "Value":1.901
+ "Value":0.931
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout14",
"Severity":1,
- "Value":0.198
+ "Value":2.124
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout14",
"Severity":0,
- "Value":1.496
+ "Value":1.888
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout14",
"Severity":0,
- "Value":0.404
+ "Value":0.354
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout15",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout14",
"Severity":1,
- "Value":2.165
+ "Value":0.165
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout15",
"Severity":1,
- "Value":1.214
+ "Value":2.433
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout15",
"Severity":0,
- "Value":1.883
+ "Value":2.119
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout15",
"Severity":0,
- "Value":1.795
+ "Value":1.413
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout16",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout15",
"Severity":1,
- "Value":1.196
+ "Value":1.099
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout16",
"Severity":1,
- "Value":0.598
+ "Value":1.375
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout16",
"Severity":0,
- "Value":0.823
+ "Value":1.125
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout16",
"Severity":0,
- "Value":0.676
+ "Value":0.6
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout17",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout16",
"Severity":1,
- "Value":2.165
+ "Value":0.5
},
{
- "Direction":"less than",
- "Name":"lower critical",
+ "Direction":"greater than",
+ "Name":"upper critical",
"Label":"vout17",
"Severity":1,
- "Value":1.219
+ "Value":2.433
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout17",
"Severity":0,
- "Value":1.891
+ "Value":2.119
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout17",
"Severity":0,
- "Value":1.713
+ "Value":1.413
+ },
+ {
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout17",
+ "Severity":1,
+ "Value":1.099
}
],
"Type":"ADM1266"
@@ -1694,59 +1694,51 @@
"temp11",
"temp12",
"temp13",
- "temp14",
- "pout5",
- "pout3",
- "pout4",
- "pout6",
- "pout7",
- "pout8",
+ "power1",
+ "power2",
+ "power3",
+ "power4",
+ "power5",
+ "vout0",
"vout1",
"vout2",
"vout3",
"vout4",
- "vout5",
- "vout6",
- "temp17",
- "curr1",
- "curr2",
- "curr3",
- "curr4",
- "curr5"
+ "iout1",
+ "iout2",
+ "iout3",
+ "iout4",
+ "iout5"
],
"Type":"AC01_SMPRO",
"temp1_Name":"CPU1_SOC_T",
"temp2_Name":"CPU1_SOC_VRD_T",
"temp3_Name":"CPU1_DIMM_VRD_T",
"temp4_Name":"CPU1_CORE_VRD_T",
- "temp5_Name":"CPU1_DIMMG0_T",
- "temp6_Name":"CPU1_CH0DIMM_T",
- "temp7_Name":"CPU1_CH1DIMM_T",
- "temp8_Name":"CPU1_CH2DIMM_T",
- "temp9_Name":"CPU1_CH3DIMM_T",
- "temp10_Name":"CPU1_DIMMG1_T",
- "temp11_Name":"CPU1_CH4DIMM_T",
- "temp12_Name":"CPU1_CH5DIMM_T",
- "temp13_Name":"CPU1_CH6DIMM_T",
- "temp14_Name":"CPU1_CH7DIMM_T",
- "pout5_Name":"CPU1_CPU_PW",
- "pout3_Name":"CPU1_DIMM_VR1_PW",
- "pout4_Name":"CPU1_DIMM_VR2_PW",
- "pout6_Name":"CPU1_MEM_PW",
- "pout7_Name":"CPU1_RCA_VR_PW",
- "pout8_Name":"CPU1_SOC_TDP_PW",
- "vout1_Name":"CPU1_CPU_VCORE",
- "vout2_Name":"CPU1_SOC_V",
- "vout3_Name":"CPU1_DIMM_VR1_V",
- "vout4_Name":"CPU1_DIMM_VR2_V",
- "vout5_Name":"CPU1_DIMM_DDR_V",
- "vout6_Name":"CPU1_RCA_VR_V",
- "temp17_Name":"CPU1_RCA_VR_T",
- "curr1_Name":"CPU1_CORE_VRD_CU",
- "curr2_Name":"CPU1_SOC_VRD_CU",
- "curr3_Name":"CPU1_DIMM_VR1_CU",
- "curr4_Name":"CPU1_DIMM_VR2_CU",
- "curr5_Name":"CPU1_RCA_VRD_CU",
+ "temp5_Name":"CPU1_CH0DIMM_T",
+ "temp6_Name":"CPU1_CH1DIMM_T",
+ "temp7_Name":"CPU1_CH2DIMM_T",
+ "temp8_Name":"CPU1_CH3DIMM_T",
+ "temp9_Name":"CPU1_CH4DIMM_T",
+ "temp10_Name":"CPU1_CH5DIMM_T",
+ "temp11_Name":"CPU1_CH6DIMM_T",
+ "temp12_Name":"CPU1_CH7DIMM_T",
+ "temp13_Name":"CPU1_RCA_VR_T",
+ "power1_Name":"CPU1_CPU_PW",
+ "power2_Name":"CPU1_SOC_TDP_PW",
+ "power3_Name":"CPU1_DIMM_VR1_PW",
+ "power4_Name":"CPU1_DIMM_VR2_PW",
+ "power5_Name":"CPU1_RCA_VR_PW",
+ "vout0_Name":"CPU1_CPU_VCORE",
+ "vout1_Name":"CPU1_SOC_V",
+ "vout2_Name":"CPU1_DIMM_VR1_V",
+ "vout3_Name":"CPU1_DIMM_VR2_V",
+ "vout4_Name":"CPU1_RCA_VR_V",
+ "iout1_Name":"CPU1_CORE_VRD_CU",
+ "iout2_Name":"CPU1_SOC_VRD_CU",
+ "iout3_Name":"CPU1_DIMM_VR1_CU",
+ "iout4_Name":"CPU1_DIMM_VR2_CU",
+ "iout5_Name":"CPU1_RCA_VRD_CU",
"temp1_Max":255,
"temp2_Max":255,
"temp3_Max":255,
@@ -1760,32 +1752,28 @@
"temp11_Max":255,
"temp12_Max":255,
"temp13_Max":255,
- "temp14_Max":255,
- "pout5_Max":255,
- "pout3_Max":40,
- "pout4_Max":40,
- "pout6_Max":70,
- "pout7_Max":30,
- "pout8_Max":255,
- "vout1_Max":3.2,
- "vout2_Max":3.3,
+ "power1_Max":255,
+ "power2_Max":255,
+ "power3_Max":40,
+ "power4_Max":40,
+ "power5_Max":255,
+ "vout0_Max":3.2,
+ "vout1_Max":3.3,
+ "vout2_Max":3,
"vout3_Max":3,
- "vout4_Max":3,
- "vout5_Max":5,
- "vout6_Max":6,
- "temp17_Max":255,
- "curr1_Max":13,
- "curr2_Max":5,
- "curr3_Max":13,
- "curr4_Max":13,
- "curr5_Max":10,
+ "vout4_Max":7,
+ "iout1_Max":40,
+ "iout2_Max":14,
+ "iout3_Max":20,
+ "iout4_Max":20,
+ "iout5_Max":18,
"Thresholds":[
{
"Direction":"greater than",
"Name":"upper critical",
"Label":"temp1",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -1799,7 +1787,7 @@
"Name":"upper critical",
"Label":"temp2",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -1813,7 +1801,7 @@
"Name":"upper critical",
"Label":"temp3",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -1827,7 +1815,7 @@
"Name":"upper critical",
"Label":"temp4",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -1839,23 +1827,9 @@
{
"Direction":"greater than",
"Name":"upper critical",
- "Label":"temp5",
- "Severity":1,
- "Value":90
- },
- {
- "Direction":"greater than",
- "Name":"upper non critical",
- "Label":"temp5",
- "Severity":0,
- "Value":100
- },
- {
- "Direction":"greater than",
- "Name":"upper critical",
"Label":"temp6",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -1869,7 +1843,7 @@
"Name":"upper critical",
"Label":"temp7",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -1883,7 +1857,7 @@
"Name":"upper critical",
"Label":"temp8",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -1897,7 +1871,7 @@
"Name":"upper critical",
"Label":"temp9",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -1911,7 +1885,7 @@
"Name":"upper critical",
"Label":"temp10",
"Severity":1,
- "Value":90
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -1925,7 +1899,7 @@
"Name":"upper critical",
"Label":"temp11",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -1939,7 +1913,7 @@
"Name":"upper critical",
"Label":"temp12",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -1953,7 +1927,7 @@
"Name":"upper critical",
"Label":"temp13",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -1965,184 +1939,142 @@
{
"Direction":"greater than",
"Name":"upper critical",
- "Label":"temp14",
+ "Label":"power1",
"Severity":1,
- "Value":105
+ "Value":54
},
{
"Direction":"greater than",
"Name":"upper non critical",
- "Label":"temp14",
+ "Label":"power1",
"Severity":0,
- "Value":100
+ "Value":48
},
{
"Direction":"greater than",
"Name":"upper critical",
- "Label":"pout5",
+ "Label":"power3",
"Severity":1,
- "Value":53.815
+ "Value":40
},
{
"Direction":"greater than",
- "Name":"upper non critical",
- "Label":"pout5",
- "Severity":0,
- "Value":47.94
+ "Name":"upper critical",
+ "Label":"power4",
+ "Severity":1,
+ "Value":40
},
{
"Direction":"greater than",
"Name":"upper critical",
- "Label":"pout3",
+ "Label":"vout0",
"Severity":1,
- "Value":7.801
+ "Value":1.375
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"pout4",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout0",
"Severity":1,
- "Value":7.801
+ "Value":0.312
},
{
"Direction":"greater than",
- "Name":"upper critical",
- "Label":"pout6",
- "Severity":1,
- "Value":29.987
+ "Name":"upper non critical",
+ "Label":"vout0",
+ "Severity":0,
+ "Value":1.375
+ },
+ {
+ "Direction":"less than",
+ "Name":"lower non critical",
+ "Label":"vout0",
+ "Severity":0,
+ "Value":0.312
},
{
"Direction":"greater than",
"Name":"upper critical",
"Label":"vout1",
"Severity":1,
- "Value":1.05
+ "Value":1.032
},
{
"Direction":"less than",
"Name":"lower critical",
"Label":"vout1",
"Severity":1,
- "Value":0.697
+ "Value":0.32
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout1",
"Severity":0,
- "Value":1.05
+ "Value":0.903
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout1",
"Severity":0,
- "Value":0.697
+ "Value":0.45
},
{
"Direction":"greater than",
"Name":"upper critical",
"Label":"vout2",
"Severity":1,
- "Value":0.951
+ "Value":1.475
},
{
"Direction":"less than",
"Name":"lower critical",
"Label":"vout2",
"Severity":1,
- "Value":0.549
+ "Value":0.920
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout2",
"Severity":0,
- "Value":0.804
+ "Value":1.357
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout2",
"Severity":0,
- "Value":0.598
+ "Value":1.003
},
{
"Direction":"greater than",
"Name":"upper critical",
"Label":"vout3",
"Severity":1,
- "Value":1.254
+ "Value":1.475
},
{
"Direction":"less than",
"Name":"lower critical",
"Label":"vout3",
"Severity":1,
- "Value":1.098
+ "Value":0.920
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout3",
"Severity":0,
- "Value":1.215
+ "Value":1.357
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout3",
"Severity":0,
- "Value":1.147
- },
- {
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout4",
- "Severity":1,
- "Value":1.254
- },
- {
- "Direction":"less than",
- "Name":"lower critical",
- "Label":"vout4",
- "Severity":1,
- "Value":1.098
- },
- {
- "Direction":"greater than",
- "Name":"upper non critical",
- "Label":"vout4",
- "Severity":0,
- "Value":1.215
- },
- {
- "Direction":"less than",
- "Name":"lower non critical",
- "Label":"vout4",
- "Severity":0,
- "Value":1.147
- },
- {
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout5",
- "Severity":1,
- "Value":2.999
- },
- {
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"temp17",
- "Severity":1,
- "Value":105
- },
- {
- "Direction":"greater than",
- "Name":"upper non critical",
- "Label":"temp17",
- "Severity":0,
- "Value":100
+ "Value":1.003
}
]
},
@@ -2171,8 +2103,7 @@
"EntityInstance":15
},
{
- "Name":"CPU1_DIMMG0_T",
- "Type":"AC01_SMPRO",
+ "Name":"CPU1_DIMMG_T",
"EntityId":"0x03",
"EntityInstance":16
},
@@ -2201,12 +2132,6 @@
"EntityInstance":20
},
{
- "Name":"CPU1_DIMMG1_T",
- "Type":"AC01_SMPRO",
- "EntityId":"0x03",
- "EntityInstance":21
- },
- {
"Name":"CPU1_CH4DIMM_T",
"Type":"AC01_SMPRO",
"EntityId":"0x03",
@@ -2250,7 +2175,6 @@
},
{
"Name":"CPU1_MEM_PW",
- "Type":"AC01_SMPRO",
"EntityId":"0x13",
"EntityInstance":41
},
@@ -2292,7 +2216,6 @@
},
{
"Name":"CPU1_DIMM_DDR_V",
- "Type":"AC01_SMPRO",
"EntityId":"0x13",
"EntityInstance":48
},
@@ -2356,59 +2279,51 @@
"temp11",
"temp12",
"temp13",
- "temp14",
- "pout5",
- "pout3",
- "pout4",
- "pout6",
- "pout7",
- "pout8",
+ "power1",
+ "power2",
+ "power3",
+ "power4",
+ "power5",
+ "vout0",
"vout1",
"vout2",
"vout3",
"vout4",
- "vout5",
- "vout6",
- "temp17",
- "curr1",
- "curr2",
- "curr3",
- "curr4",
- "curr5"
+ "iout1",
+ "iout2",
+ "iout3",
+ "iout4",
+ "iout5"
],
"Type":"AC01_SMPRO",
"temp1_Name":"CPU0_SOC_T",
"temp2_Name":"CPU0_SOC_VRD_T",
"temp3_Name":"CPU0_DIMM_VRD_T",
"temp4_Name":"CPU0_CORE_VRD_T",
- "temp5_Name":"CPU0_DIMMG0_T",
- "temp6_Name":"CPU0_CH0DIMM_T",
- "temp7_Name":"CPU0_CH1DIMM_T",
- "temp8_Name":"CPU0_CH2DIMM_T",
- "temp9_Name":"CPU0_CH3DIMM_T",
- "temp10_Name":"CPU0_DIMMG1_T",
- "temp11_Name":"CPU0_CH4DIMM_T",
- "temp12_Name":"CPU0_CH5DIMM_T",
- "temp13_Name":"CPU0_CH6DIMM_T",
- "temp14_Name":"CPU0_CH7DIMM_T",
- "pout5_Name":"CPU0_CPU_PW",
+ "temp5_Name":"CPU0_CH0DIMM_T",
+ "temp6_Name":"CPU0_CH1DIMM_T",
+ "temp7_Name":"CPU0_CH2DIMM_T",
+ "temp8_Name":"CPU0_CH3DIMM_T",
+ "temp9_Name":"CPU0_CH4DIMM_T",
+ "temp10_Name":"CPU0_CH5DIMM_T",
+ "temp11_Name":"CPU0_CH6DIMM_T",
+ "temp12_Name":"CPU0_CH7DIMM_T",
+ "temp13_Name":"CPU0_RCA_VR_T",
+ "power1_Name":"CPU0_CPU_PW",
+ "power2_Name":"CPU0_SOC_TDP_PW",
"pout3_Name":"CPU0_DIMM_VR1_PW",
"pout4_Name":"CPU0_DIMM_VR2_PW",
- "pout6_Name":"CPU0_MEM_PW",
- "pout7_Name":"CPU0_RCA_VR_PW",
- "pout8_Name":"CPU0_SOC_TDP_PW",
- "vout1_Name":"CPU0_CPU_VCORE",
- "vout2_Name":"CPU0_SOC_V",
- "vout3_Name":"CPU0_DIMM_VR1_V",
- "vout4_Name":"CPU0_DIMM_VR2_V",
- "vout5_Name":"CPU0_DIMM_DDR_V",
- "vout6_Name":"CPU0_RCA_VR_V",
- "temp17_Name":"CPU0_RCA_VR_T",
- "curr1_Name":"CPU0_CORE_VRD_CU",
- "curr2_Name":"CPU0_SOC_VRD_CU",
- "curr3_Name":"CPU0_DIMM_VR1_CU",
- "curr4_Name":"CPU0_DIMM_VR2_CU",
- "curr5_Name":"CPU0_RCA_VRD_CU",
+ "pout5_Name":"CPU0_RCA_VR_PW",
+ "vout0_Name":"CPU0_CPU_VCORE",
+ "vout1_Name":"CPU0_SOC_V",
+ "vout2_Name":"CPU0_DIMM_VR1_V",
+ "vout3_Name":"CPU0_DIMM_VR2_V",
+ "vout4_Name":"CPU0_RCA_VR_V",
+ "iout1_Name":"CPU0_CORE_VRD_CU",
+ "iout2_Name":"CPU0_SOC_VRD_CU",
+ "iout3_Name":"CPU0_DIMM_VR1_CU",
+ "iout4_Name":"CPU0_DIMM_VR2_CU",
+ "iout5_Name":"CPU0_RCA_VRD_CU",
"temp1_Max":255,
"temp2_Max":255,
"temp3_Max":255,
@@ -2422,32 +2337,28 @@
"temp11_Max":255,
"temp12_Max":255,
"temp13_Max":255,
- "temp14_Max":255,
- "pout5_Max":350,
- "pout3_Max":40,
- "pout4_Max":40,
- "pout6_Max":80,
- "pout7_Max":30,
- "pout8_Max":255,
- "vout1_Max":3,
+ "power1_Max":350,
+ "power2_Max":250,
+ "power3_Max":40,
+ "power4_Max":80,
+ "power5_Max":255,
+ "vout0_Max":3,
+ "vout1_Max":3.5,
"vout2_Max":3.5,
"vout3_Max":3.5,
- "vout4_Max":3.5,
- "vout5_Max":5,
- "vout6_Max":5,
- "temp17_Max":255,
- "curr1_Max":13,
- "curr2_Max":5,
- "curr3_Max":12,
- "curr4_Max":12,
- "curr5_Max":10,
+ "vout4_Max":5,
+ "iout1_Max":40,
+ "iout2_Max":14,
+ "iout3_Max":20,
+ "iout4_Max":20,
+ "iout5_Max":18,
"Thresholds":[
{
"Direction":"greater than",
"Name":"upper critical",
"Label":"temp1",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -2461,7 +2372,7 @@
"Name":"upper critical",
"Label":"temp2",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -2475,7 +2386,7 @@
"Name":"upper critical",
"Label":"temp3",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -2489,7 +2400,7 @@
"Name":"upper critical",
"Label":"temp4",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -2503,21 +2414,21 @@
"Name":"upper critical",
"Label":"temp5",
"Severity":1,
- "Value":90
+ "Value":104.5
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"temp5",
"Severity":0,
- "Value":80
+ "Value":100
},
{
"Direction":"greater than",
"Name":"upper critical",
"Label":"temp6",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -2531,7 +2442,7 @@
"Name":"upper critical",
"Label":"temp7",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -2545,7 +2456,7 @@
"Name":"upper critical",
"Label":"temp8",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -2559,7 +2470,7 @@
"Name":"upper critical",
"Label":"temp9",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -2573,21 +2484,21 @@
"Name":"upper critical",
"Label":"temp10",
"Severity":1,
- "Value":90
+ "Value":104.5
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"temp10",
"Severity":0,
- "Value":80
+ "Value":100
},
{
"Direction":"greater than",
"Name":"upper critical",
"Label":"temp11",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -2601,7 +2512,7 @@
"Name":"upper critical",
"Label":"temp12",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -2615,7 +2526,7 @@
"Name":"upper critical",
"Label":"temp13",
"Severity":1,
- "Value":105
+ "Value":104.5
},
{
"Direction":"greater than",
@@ -2627,184 +2538,142 @@
{
"Direction":"greater than",
"Name":"upper critical",
- "Label":"temp14",
+ "Label":"power1",
"Severity":1,
- "Value":105
+ "Value":54
},
{
"Direction":"greater than",
"Name":"upper non critical",
- "Label":"temp14",
+ "Label":"power1",
"Severity":0,
- "Value":100
+ "Value":49
},
{
"Direction":"greater than",
"Name":"upper critical",
- "Label":"pout5",
+ "Label":"power3",
"Severity":1,
- "Value":299.98
+ "Value":40
},
{
"Direction":"greater than",
- "Name":"upper non critical",
- "Label":"pout5",
- "Severity":0,
- "Value":299.98
+ "Name":"upper critical",
+ "Label":"power4",
+ "Severity":1,
+ "Value":40
},
{
"Direction":"greater than",
"Name":"upper critical",
- "Label":"pout3",
+ "Label":"vout0",
"Severity":1,
- "Value":7.801
+ "Value":1.298
},
{
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"pout4",
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Label":"vout0",
"Severity":1,
- "Value":7.801
+ "Value":0.295
},
{
"Direction":"greater than",
- "Name":"upper critical",
- "Label":"pout6",
- "Severity":1,
- "Value":29.987
+ "Name":"upper non critical",
+ "Label":"vout0",
+ "Severity":0,
+ "Value":1.298
+ },
+ {
+ "Direction":"less than",
+ "Name":"lower non critical",
+ "Label":"vout0",
+ "Severity":0,
+ "Value":0.295
},
{
"Direction":"greater than",
"Name":"upper critical",
"Label":"vout1",
"Severity":1,
- "Value":1.05
+ "Value":1.16
},
{
"Direction":"less than",
"Name":"lower critical",
"Label":"vout1",
"Severity":1,
- "Value":0.697
+ "Value":0.34
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout1",
"Severity":0,
- "Value":1.05
+ "Value":1.0
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout1",
"Severity":0,
- "Value":0.697
+ "Value":0.342
},
{
"Direction":"greater than",
"Name":"upper critical",
"Label":"vout2",
"Severity":1,
- "Value":0.951
+ "Value":1.57
},
{
"Direction":"less than",
"Name":"lower critical",
"Label":"vout2",
"Severity":1,
- "Value":0.549
+ "Value":0.959
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout2",
"Severity":0,
- "Value":0.804
+ "Value":1.50
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout2",
"Severity":0,
- "Value":0.598
+ "Value":1.06
},
{
"Direction":"greater than",
"Name":"upper critical",
"Label":"vout3",
"Severity":1,
- "Value":1.254
+ "Value":1.57
},
{
"Direction":"less than",
"Name":"lower critical",
"Label":"vout3",
"Severity":1,
- "Value":1.098
+ "Value":0.959
},
{
"Direction":"greater than",
"Name":"upper non critical",
"Label":"vout3",
"Severity":0,
- "Value":1.215
+ "Value":1.507
},
{
"Direction":"less than",
"Name":"lower non critical",
"Label":"vout3",
"Severity":0,
- "Value":1.147
- },
- {
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout4",
- "Severity":1,
- "Value":1.254
- },
- {
- "Direction":"less than",
- "Name":"lower critical",
- "Label":"vout4",
- "Severity":1,
- "Value":1.098
- },
- {
- "Direction":"greater than",
- "Name":"upper non critical",
- "Label":"vout4",
- "Severity":0,
- "Value":1.215
- },
- {
- "Direction":"less than",
- "Name":"lower non critical",
- "Label":"vout4",
- "Severity":0,
- "Value":1.147
- },
- {
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"vout5",
- "Severity":1,
- "Value":2.999
- },
- {
- "Direction":"greater than",
- "Name":"upper critical",
- "Label":"temp17",
- "Severity":1,
- "Value":105
- },
- {
- "Direction":"greater than",
- "Name":"upper non critical",
- "Label":"temp17",
- "Severity":0,
- "Value":100
+ "Value":1.06
}
]
},
@@ -2833,8 +2702,7 @@
"EntityInstance":30
},
{
- "Name":"CPU0_DIMMG0_T",
- "Type":"AC01_SMPRO",
+ "Name":"CPU0_DIMMG_T",
"EntityId":"0x03",
"EntityInstance":31
},
@@ -2863,12 +2731,6 @@
"EntityInstance":35
},
{
- "Name":"CPU0_DIMMG1_T",
- "Type":"AC01_SMPRO",
- "EntityId":"0x03",
- "EntityInstance":36
- },
- {
"Name":"CPU0_CH4DIMM_T",
"Type":"AC01_SMPRO",
"EntityId":"0x03",
@@ -2912,7 +2774,6 @@
},
{
"Name":"CPU0_MEM_PW",
- "Type":"AC01_SMPRO",
"EntityId":"0x13",
"EntityInstance":58
},
@@ -2954,7 +2815,6 @@
},
{
"Name":"CPU0_DIMM_DDR_V",
- "Type":"AC01_SMPRO",
"EntityId":"0x13",
"EntityInstance":65
},
@@ -3002,23 +2862,27 @@
},
{
"Index" : 8,
- "Name" : "Mobo_NBM1_RAW",
+ "Name" : "CPU0_NBM_V",
"Type" : "ADC",
+ "MaxValue": 4.04,
+ "MinValue": 0,
"EntityId" : "0x13",
"EntityInstance" : 72
},
{
"Index" : 9,
- "Name" : "Mobo_NBM2_RAW",
+ "Name" : "CPU1_NBM_V",
"Type" : "ADC",
+ "MaxValue": 4.04,
+ "MinValue": 0,
"EntityId" : "0x13",
"EntityInstance" : 73
},
{
- "Name" : "Mobo_NBM1_T"
+ "Name" : "CPU0_NBM_T"
},
{
- "Name" : "Mobo_NBM2_T"
+ "Name" : "CPU1_NBM_T"
},
{
"AllowedFailures":1,
@@ -3043,20 +2907,20 @@
"Thresholds":[
{
"Direction":"less than",
- "Name":"lower critical",
- "Severity":1,
- "Value":2000
- },
- {
- "Direction":"less than",
"Name":"lower non critical",
"Severity":0,
"Value":1000
+ },
+ {
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Severity":1,
+ "Value":2000
}
],
"Type":"I2CFan",
"EntityId":"0x1D",
- "EntityInstance":0,
+ "EntityInstance":6,
"Mutable":true
},
{
@@ -3084,20 +2948,20 @@
"Thresholds":[
{
"Direction":"less than",
- "Name":"lower critical",
- "Severity":1,
- "Value":2000
- },
- {
- "Direction":"less than",
"Name":"lower non critical",
"Severity":0,
"Value":1000
+ },
+ {
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Severity":1,
+ "Value":2000
}
],
"Type":"I2CFan",
"EntityId":"0x1D",
- "EntityInstance":1
+ "EntityInstance":7
},
{
"EntityId":"0x1D",
@@ -3117,7 +2981,7 @@
0
],
"EntityId":"0x1D",
- "EntityInstance":2,
+ "EntityInstance":8,
"Mutable":true
},
"Index":2,
@@ -3127,15 +2991,15 @@
"Thresholds":[
{
"Direction":"less than",
- "Name":"lower critical",
- "Severity":1,
- "Value":2000
- },
- {
- "Direction":"less than",
"Name":"lower non critical",
"Severity":0,
"Value":1000
+ },
+ {
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Severity":1,
+ "Value":2000
}
],
"Type":"I2CFan",
@@ -3170,20 +3034,20 @@
"Thresholds":[
{
"Direction":"less than",
- "Name":"lower critical",
- "Severity":1,
- "Value":2000
- },
- {
- "Direction":"less than",
"Name":"lower non critical",
"Severity":0,
"Value":1000
+ },
+ {
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Severity":1,
+ "Value":2000
}
],
"Type":"I2CFan",
"EntityId":"0x1D",
- "EntityInstance":3
+ "EntityInstance":9
},
{
"EntityId":"0x1D",
@@ -3213,20 +3077,20 @@
"Thresholds":[
{
"Direction":"less than",
- "Name":"lower critical",
- "Severity":1,
- "Value":2000
- },
- {
- "Direction":"less than",
"Name":"lower non critical",
"Severity":0,
"Value":1000
+ },
+ {
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Severity":1,
+ "Value":2000
}
],
"Type":"I2CFan",
"EntityId":"0x1D",
- "EntityInstance":4
+ "EntityInstance":10
},
{
"EntityId":"0x1D",
@@ -3256,20 +3120,20 @@
"Thresholds":[
{
"Direction":"less than",
- "Name":"lower critical",
- "Severity":1,
- "Value":2000
- },
- {
- "Direction":"less than",
"Name":"lower non critical",
"Severity":0,
"Value":1000
+ },
+ {
+ "Direction":"less than",
+ "Name":"lower critical",
+ "Severity":1,
+ "Value":2000
}
],
"Type":"I2CFan",
"EntityId":"0x1D",
- "EntityInstance":5
+ "EntityInstance":11
},
{
"EntityId":"0x1D",
@@ -3278,20 +3142,20 @@
"Name":"REAR_FAN5_PWM",
"Type":"I2CFan"
},
- {
+ {
"Name": "Fan1Zone",
"Type": "Pid.Zone",
"MinThermalOutput": 25,
"FailSafePercent": 100
},
- {
+ {
"Name": "Fan2Zone",
"Type": "Pid.Zone",
"MinThermalOutput": 25,
"FailSafePercent": 100
},
{
- "Name": "REAR_FAN0_1",
+ "Name": "REAR_FAN012",
"Type": "Pid",
"Class": "fan",
"SetPoint": 65.0,
@@ -3309,37 +3173,12 @@
"OutLimitMax": 100.0,
"Inputs": [
"REAR_FAN0_SPEED",
- "REAR_FAN1_SPEED"
- ],
- "Outputs": [
- "REAR_FAN0_PWM",
- "REAR_FAN1_PWM"
- ],
- "Zones": [
- "Fan1Zone"
- ]
- },
- {
- "Name": "REAR_FAN2",
- "Type": "Pid",
- "Class": "fan",
- "SetPoint": 65.0,
- "FFGainCoefficient": 1.0,
- "FFOffCoefficient": 0.0,
- "PCoefficient": 0.0,
- "ICoefficient": 0.0,
- "ILimitMin": 0.0,
- "ILimitMax": 0.0,
- "PositiveHysteresis": 0.0,
- "NegativeHysteresis": 0.0,
- "SlewPos": 0.0,
- "SlewNeg": 0.0,
- "OutLimitMin": 25.0,
- "OutLimitMax": 100.0,
- "Inputs": [
+ "REAR_FAN1_SPEED",
"REAR_FAN2_SPEED"
],
"Outputs": [
+ "REAR_FAN0_PWM",
+ "REAR_FAN1_PWM",
"REAR_FAN2_PWM"
],
"Zones": [
@@ -3347,34 +3186,7 @@
]
},
{
- "Name": "REAR_FAN3",
- "Type": "Pid",
- "Class": "fan",
- "SetPoint": 65.0,
- "FFGainCoefficient": 1.0,
- "FFOffCoefficient": 0.0,
- "PCoefficient": 0.0,
- "ICoefficient": 0.0,
- "ILimitMin": 0.0,
- "ILimitMax": 0.0,
- "PositiveHysteresis": 0.0,
- "NegativeHysteresis": 0.0,
- "SlewPos": 0.0,
- "SlewNeg": 0.0,
- "OutLimitMin": 25.0,
- "OutLimitMax": 100.0,
- "Inputs": [
- "REAR_FAN3_SPEED"
- ],
- "Outputs": [
- "REAR_FAN3_PWM"
- ],
- "Zones": [
- "Fan2Zone"
- ]
- },
- {
- "Name": "REAR_FAN4_5",
+ "Name": "REAR_FAN345",
"Type": "Pid",
"Class": "fan",
"SetPoint": 65.0,
@@ -3392,11 +3204,13 @@
"OutLimitMax": 100.0,
"Inputs": [
"REAR_FAN4_SPEED",
- "REAR_FAN5_SPEED"
+ "REAR_FAN5_SPEED",
+ "REAR_FAN3_SPEED"
],
"Outputs": [
"REAR_FAN4_PWM",
- "REAR_FAN5_PWM"
+ "REAR_FAN5_PWM",
+ "REAR_FAN3_PWM"
],
"Zones": [
"Fan2Zone"
@@ -3428,57 +3242,7 @@
]
},
{
- "Name": "CPU0_SOC_VRD_TEMP",
- "Type": "Pid",
- "Class": "temp",
- "SetPoint": 85.0,
- "FFGainCoefficient": 0.0,
- "FFOffCoefficient": 0.0,
- "PCoefficient": -2.0,
- "ICoefficient": -0.1,
- "ILimitMin": 0.0,
- "ILimitMax": 0.0,
- "PositiveHysteresis": 0.0,
- "NegativeHysteresis": 0.0,
- "SlewPos": 0.0,
- "SlewNeg": 0.0,
- "OutLimitMin": 25.0,
- "OutLimitMax": 100.0,
- "Inputs": [
- "CPU0_SOC_VRD_T"
- ],
- "Outputs": [],
- "Zones": [
- "Fan1Zone"
- ]
- },
- {
- "Name": "CPU0_DIMM_VRD_TEMP",
- "Type": "Pid",
- "Class": "temp",
- "SetPoint": 85.0,
- "FFGainCoefficient": 0.0,
- "FFOffCoefficient": 0.0,
- "PCoefficient": -2.0,
- "ICoefficient": -0.1,
- "ILimitMin": 0.0,
- "ILimitMax": 0.0,
- "PositiveHysteresis": 0.0,
- "NegativeHysteresis": 0.0,
- "SlewPos": 0.0,
- "SlewNeg": 0.0,
- "OutLimitMin": 25.0,
- "OutLimitMax": 100.0,
- "Inputs": [
- "CPU0_DIMM_VRD_T"
- ],
- "Outputs": [],
- "Zones": [
- "Fan1Zone"
- ]
- },
- {
- "Name": "CPU0_CORE_VRD_TEMP",
+ "Name": "CPU0_VRD_TEMP",
"Type": "Pid",
"Class": "temp",
"SetPoint": 85.0,
@@ -3495,7 +3259,10 @@
"OutLimitMin": 25.0,
"OutLimitMax": 100.0,
"Inputs": [
- "CPU0_CORE_VRD_T"
+ "CPU0_SOC_VRD_T",
+ "CPU0_DIMM_VRD_T",
+ "CPU0_CORE_VRD_T",
+ "CPU0_RCA_VR_T"
],
"Outputs": [],
"Zones": [
@@ -3503,7 +3270,7 @@
]
},
{
- "Name": "CPU0_DIMMG0_TEMP",
+ "Name": "CPU0_DIMMG_TEMP",
"Type": "Pid",
"Class": "temp",
"SetPoint": 60.0,
@@ -3520,32 +3287,7 @@
"OutLimitMin": 25.0,
"OutLimitMax": 100.0,
"Inputs": [
- "CPU0_DIMMG0_T"
- ],
- "Outputs": [],
- "Zones": [
- "Fan1Zone"
- ]
- },
- {
- "Name": "CPU0_DIMMG1_TEMP",
- "Type": "Pid",
- "Class": "temp",
- "SetPoint": 60.0,
- "FFGainCoefficient": 0.0,
- "FFOffCoefficient": 0.0,
- "PCoefficient": -2.0,
- "ICoefficient": -0.1,
- "ILimitMin": 0.0,
- "ILimitMax": 0.0,
- "PositiveHysteresis": 0.0,
- "NegativeHysteresis": 0.0,
- "SlewPos": 0.0,
- "SlewNeg": 0.0,
- "OutLimitMin": 25.0,
- "OutLimitMax": 100.0,
- "Inputs": [
- "CPU0_DIMMG0_T"
+ "CPU0_DIMMG_T"
],
"Outputs": [],
"Zones": [
@@ -3578,7 +3320,7 @@
]
},
{
- "Name": "CPU1_SOC_VRD_TEMP",
+ "Name": "CPU1_VRD_TEMP",
"Type": "Pid",
"Class": "temp",
"SetPoint": 85.0,
@@ -3595,82 +3337,10 @@
"OutLimitMin": 25.0,
"OutLimitMax": 100.0,
"Inputs": [
- "CPU1_SOC_VRD_T"
- ],
- "Outputs": [],
- "Zones": [
- "Fan2Zone"
- ]
- },
- {
- "Name": "CPU1_DIMM_VRD_TEMP",
- "Type": "Pid",
- "Class": "temp",
- "SetPoint": 85.0,
- "FFGainCoefficient": 0.0,
- "FFOffCoefficient": 0.0,
- "PCoefficient": -2.0,
- "ICoefficient": -0.1,
- "ILimitMin": 0.0,
- "ILimitMax": 0.0,
- "PositiveHysteresis": 0.0,
- "NegativeHysteresis": 0.0,
- "SlewPos": 0.0,
- "SlewNeg": 0.0,
- "OutLimitMin": 25.0,
- "OutLimitMax": 100.0,
- "Inputs": [
- "CPU1_DIMM_VRD_T"
- ],
- "Outputs": [],
- "Zones": [
- "Fan2Zone"
- ]
- },
- {
- "Name": "CPU1_CORE_VRD_TEMP",
- "Type": "Pid",
- "Class": "temp",
- "SetPoint": 85.0,
- "FFGainCoefficient": 0.0,
- "FFOffCoefficient": 0.0,
- "PCoefficient": -2.0,
- "ICoefficient": -0.1,
- "ILimitMin": 0.0,
- "ILimitMax": 0.0,
- "PositiveHysteresis": 0.0,
- "NegativeHysteresis": 0.0,
- "SlewPos": 0.0,
- "SlewNeg": 0.0,
- "OutLimitMin": 25.0,
- "OutLimitMax": 100.0,
- "Inputs": [
- "CPU1_CORE_VRD_T"
- ],
- "Outputs": [],
- "Zones": [
- "Fan2Zone"
- ]
- },
- {
- "Name": "CPU1_DIMMG0_TEMP",
- "Type": "Pid",
- "Class": "temp",
- "SetPoint": 60.0,
- "FFGainCoefficient": 0.0,
- "FFOffCoefficient": 0.0,
- "PCoefficient": -2.0,
- "ICoefficient": -0.1,
- "ILimitMin": 0.0,
- "ILimitMax": 0.0,
- "PositiveHysteresis": 0.0,
- "NegativeHysteresis": 0.0,
- "SlewPos": 0.0,
- "SlewNeg": 0.0,
- "OutLimitMin": 25.0,
- "OutLimitMax": 100.0,
- "Inputs": [
- "CPU1_DIMMG0_T"
+ "CPU1_SOC_VRD_T",
+ "CPU1_DIMM_VRD_T",
+ "CPU1_CORE_VRD_T",
+ "CPU1_RCA_VR_T"
],
"Outputs": [],
"Zones": [
@@ -3678,7 +3348,7 @@
]
},
{
- "Name": "CPU1_DIMMG1_TEMP",
+ "Name": "CPU1_DIMMG_TEMP",
"Type": "Pid",
"Class": "temp",
"SetPoint": 60.0,
@@ -3695,7 +3365,7 @@
"OutLimitMin": 25.0,
"OutLimitMax": 100.0,
"Inputs": [
- "CPU1_DIMMG0_T"
+ "CPU1_DIMMG_T"
],
"Outputs": [],
"Zones": [
@@ -3728,7 +3398,7 @@
]
},
{
- "Name": "Mobo_NBM1_TEMP",
+ "Name": "CPU0_NBM_TEMP",
"Type": "Pid",
"Class": "temp",
"SetPoint": 75.0,
@@ -3745,7 +3415,7 @@
"OutLimitMin": 25.0,
"OutLimitMax": 100.0,
"Inputs": [
- "Mobo_NBM1_T"
+ "CPU0_NBM_T"
],
"Outputs": [],
"Zones": [
@@ -3753,7 +3423,7 @@
]
},
{
- "Name": "Mobo_NBM2_TEMP",
+ "Name": "CPU1_NBM_TEMP",
"Type": "Pid",
"Class": "temp",
"SetPoint": 75.0,
@@ -3770,7 +3440,7 @@
"OutLimitMin": 25.0,
"OutLimitMax": 100.0,
"Inputs": [
- "Mobo_NBM2_T"
+ "CPU1_NBM_T"
],
"Outputs": [],
"Zones": [
@@ -3778,7 +3448,7 @@
]
},
{
- "Name": "Mobo_NBM1_ZONE_TEMP",
+ "Name": "CPU0_NBM_ZONE_TEMP",
"Type": "Pid",
"Class": "temp",
"SetPoint": 60.0,
@@ -3795,7 +3465,7 @@
"OutLimitMin": 25.0,
"OutLimitMax": 100.0,
"Inputs": [
- "Mobo_NBM1_ZONE_T"
+ "CPU0_NBM_ZONE_T"
],
"Outputs": [],
"Zones": [
@@ -3803,7 +3473,7 @@
]
},
{
- "Name": "Mobo_NBM2_ZONE_TEMP",
+ "Name": "CPU1_NBM_ZONE_TEMP",
"Type": "Pid",
"Class": "temp",
"SetPoint": 60.0,
@@ -3820,7 +3490,7 @@
"OutLimitMin": 25.0,
"OutLimitMax": 100.0,
"Inputs": [
- "Mobo_NBM2_ZONE_T"
+ "CPU1_NBM_ZONE_T"
],
"Outputs": [],
"Zones": [
diff --git a/meta-fii/meta-kudo/recipes-phosphor/configuration/entity-manager_%.bbappend b/meta-fii/meta-kudo/recipes-phosphor/configuration/entity-manager_%.bbappend
index 58b52f50b..7daa029eb 100644
--- a/meta-fii/meta-kudo/recipes-phosphor/configuration/entity-manager_%.bbappend
+++ b/meta-fii/meta-kudo/recipes-phosphor/configuration/entity-manager_%.bbappend
@@ -1,7 +1,11 @@
FILESEXTRAPATHS_prepend_kudo := "${THISDIR}/${PN}:"
-SRC_URI_append_kudo = " file://kudo.json"
+SRC_URI_append_kudo = " \
+ file://kudo.json \
+ file://blacklist.json \
+ "
do_install_append_kudo () {
- install -m 0644 -D ${WORKDIR}/kudo.json ${D}/usr/share/entity-manager/configurations/kudo.json
+ install -m 0644 -D ${WORKDIR}/kudo.json ${D}${datadir}/${PN}/configurations/kudo.json
+ install -m 0644 -D ${WORKDIR}/blacklist.json ${D}${datadir}/${PN}/blacklist.json
}
diff --git a/meta-fii/meta-kudo/recipes-phosphor/console/obmc-console/kudo_uart_mux_ctrl.sh b/meta-fii/meta-kudo/recipes-phosphor/console/obmc-console/kudo_uart_mux_ctrl.sh
new file mode 100644
index 000000000..27407783e
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/console/obmc-console/kudo_uart_mux_ctrl.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+#
+# Copyright (c) 2020 Ampere Computing LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Ampere Computing LLC mtjade: UART MUX/DEMUX for CPU0 UART0,1,4 and CPU1 UART1
+# Usage: ampere_uartmux_ctrl.sh <CPU UART port number> <UARTx_MODE>
+# <UARTx_MODE> of 1 sets CPU To BSP
+# <UARTx_MODE> of 2 sets SCP1 to SI2
+function set_gpio_ctrl() {
+ echo $1 > /sys/class/gpio/export
+ echo $2 > /sys/class//gpio/gpio$1/direction
+ echo $3 > /sys/class/gpio/gpio$1/value
+ echo $1 > /sys/class/gpio/unexport
+}
+
+
+if [ $# -lt 1 ]; then
+ exit 1
+fi
+
+echo "Ampere UART MUX CTRL UART port $1 to mode" > /dev/ttyS0
+
+case "$1" in
+ ttyS1)
+ set_gpio_ctrl 167 out 1
+ ;;
+ ttyS3)
+ set_gpio_ctrl 161 out 1
+ set_gpio_ctrl 183 out 1
+ set_gpio_ctrl 198 out 0
+ ;;
+ *)
+ echo "Invalid tty passed to $0. Exiting!" > /dev/ttyS0
+ ;;
+esac
+
diff --git a/meta-fii/meta-kudo/recipes-phosphor/console/obmc-console/obmc-console@.service b/meta-fii/meta-kudo/recipes-phosphor/console/obmc-console/obmc-console@.service
new file mode 100644
index 000000000..695eec31c
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/console/obmc-console/obmc-console@.service
@@ -0,0 +1,18 @@
+[Unit]
+Description=Phosphor Console Muxer listening on device /dev/%I
+BindsTo=dev-%i.device
+After=dev-%i.device
+StartLimitBurst=3
+StartLimitIntervalSec=300
+
+[Service]
+ExecStartPre=/usr/sbin/kudo_uart_mux_ctrl.sh %i
+ExecStart=/usr/sbin/obmc-console-server --config /etc/obmc-console/server.%i.conf %i
+SyslogIdentifier=obmc-console-server
+Restart=always
+RestartSec=10
+TimeoutStartSec=60
+TimeoutStopSec=60
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-fii/meta-kudo/recipes-phosphor/console/obmc-console/server.ttyS1.conf b/meta-fii/meta-kudo/recipes-phosphor/console/obmc-console/server.ttyS1.conf
new file mode 100644
index 000000000..1751a0575
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/console/obmc-console/server.ttyS1.conf
@@ -0,0 +1,2 @@
+baud = 115200
+logfile = /var/log/obmc-console-cpu.log
diff --git a/meta-fii/meta-kudo/recipes-phosphor/console/obmc-console/server.ttyS3.conf b/meta-fii/meta-kudo/recipes-phosphor/console/obmc-console/server.ttyS3.conf
new file mode 100644
index 000000000..c8a9d973e
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/console/obmc-console/server.ttyS3.conf
@@ -0,0 +1,3 @@
+baud = 115200
+socket-id = ttyS3
+logfile = /var/log/obmc-console-scp.log
diff --git a/meta-fii/meta-kudo/recipes-phosphor/console/obmc-console_%.bbappend b/meta-fii/meta-kudo/recipes-phosphor/console/obmc-console_%.bbappend
new file mode 100644
index 000000000..9daae7c86
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/console/obmc-console_%.bbappend
@@ -0,0 +1,41 @@
+FILESEXTRAPATHS_prepend_kudo := "${THISDIR}/${PN}:"
+RDEPENDS_${PN}_append_kudo = " bash"
+
+# Remove what installed by common recipe
+OBMC_CONSOLE_HOST_TTY = ""
+SYSTEMD_SUBSTITUTIONS_remove_kudo = " OBMC_CONSOLE_HOST_TTY:${OBMC_CONSOLE_HOST_TTY}:${PN}-ssh@.service"
+SYSTEMD_SUBSTITUTIONS_remove_kudo = " OBMC_CONSOLE_HOST_TTY:${OBMC_CONSOLE_HOST_TTY}:${PN}-ssh.socket"
+
+# Declare port spcific conf and service files
+HOST_CONSOLE_TTY = "ttyS1 ttyS3"
+
+CONSOLE_CONF_FMT = "file://server.{0}.conf"
+SRC_URI_append_kudo = " ${@compose_list(d, 'CONSOLE_CONF_FMT', 'HOST_CONSOLE_TTY')}"
+SRC_URI_append_kudo = " file://${BPN}@.service"
+SRC_URI_append_kudo = " file://kudo_uart_mux_ctrl.sh"
+
+SYSTEMD_SERVICE_${PN}_append_kudo = " \
+ ${PN}@.service \
+ "
+
+do_install_append() {
+ for i in ${HOST_CONSOLE_TTY}
+ do
+ install -m 0644 ${WORKDIR}/server.${i}.conf ${D}${sysconfdir}/${BPN}/server.${i}.conf
+ done
+
+ # Deal with files installed by the base package's .bb install function
+ rm -f ${D}${sysconfdir}/${BPN}.conf
+ rm -f ${D}${sysconfdir}/${BPN}/server.ttyVUART0.conf
+
+ # Overwrite base package's obmc-console@.service with our own
+ install -m 0644 ${WORKDIR}/${BPN}@.service ${D}${systemd_unitdir}/system/${BPN}@.service
+ install -d ${D}/usr/sbin
+ install -m 0755 ${WORKDIR}/kudo_uart_mux_ctrl.sh ${D}/${sbindir}/kudo_uart_mux_ctrl.sh
+
+}
+
+pkg_postinst_${PN}_append () {
+ systemctl --root=$D enable obmc-console@ttyS1.service
+ systemctl --root=$D enable obmc-console@ttyS3.service
+}
diff --git a/meta-fii/meta-kudo/recipes-phosphor/image/obmc-phosphor-image.bbappend b/meta-fii/meta-kudo/recipes-phosphor/image/obmc-phosphor-image.bbappend
index 588803b3b..5ec39cde8 100644
--- a/meta-fii/meta-kudo/recipes-phosphor/image/obmc-phosphor-image.bbappend
+++ b/meta-fii/meta-kudo/recipes-phosphor/image/obmc-phosphor-image.bbappend
@@ -1,7 +1,13 @@
-OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " google-ipmi-sys"
-OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " google-ipmi-i2c"
OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " phosphor-ipmi-blobs"
+OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " phosphor-ipmi-blobs-binarystore"
OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " phosphor-ipmi-ethstats"
OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " phosphor-ipmi-flash"
+OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " phosphor-ipmi-net"
+OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " phosphor-ipmi-host"
+OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " phosphor-host-postd"
+OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " phosphor-logging"
+OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " phosphor-sel-logger"
OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " usb-network"
OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " entity-manager"
+OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " dbus-sensors"
+OBMC_IMAGE_EXTRA_INSTALL_append_kudo = " phosphor-virtual-sensor"
diff --git a/meta-fii/meta-kudo/recipes-phosphor/ipmi/phosphor-ipmi-blobs-binarystore/config.json b/meta-fii/meta-kudo/recipes-phosphor/ipmi/phosphor-ipmi-blobs-binarystore/config.json
new file mode 100644
index 000000000..38650a38f
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/ipmi/phosphor-ipmi-blobs-binarystore/config.json
@@ -0,0 +1,5 @@
+[{
+ "blobBaseId": "/skm/hss/",
+ "sysFilePath": "/sys/bus/i2c/devices/i2c-4/i2c-33/33-0055/eeprom",
+ "offsetBytes": 0
+}]
diff --git a/meta-fii/meta-kudo/recipes-phosphor/ipmi/phosphor-ipmi-blobs-binarystore_%.bbappend b/meta-fii/meta-kudo/recipes-phosphor/ipmi/phosphor-ipmi-blobs-binarystore_%.bbappend
new file mode 100644
index 000000000..f87ac040f
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/ipmi/phosphor-ipmi-blobs-binarystore_%.bbappend
@@ -0,0 +1,8 @@
+FILESEXTRAPATHS_prepend_kudo := "${THISDIR}/${PN}:"
+SRC_URI_append_kudo = " file://config.json"
+FILES_${PN}_append_kudo = " ${datadir}/binaryblob/config.json"
+
+do_install_append_kudo() {
+ install -d ${D}${datadir}/binaryblob/
+ install ${WORKDIR}/config.json ${D}${datadir}/binaryblob/config.json
+}
diff --git a/meta-fii/meta-kudo/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend b/meta-fii/meta-kudo/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend
new file mode 100644
index 000000000..5e0eddc71
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend
@@ -0,0 +1,8 @@
+FILESEXTRAPATHS_prepend_kudo := "${THISDIR}/${PN}:"
+
+#Add sensorhandler.hpp and selutilty.hpp since intel-ipmi-oem requires these libs
+do_install_append_kudo(){
+ install -d ${D}${includedir}/phosphor-ipmi-host
+ install -m 0644 -D ${S}/sensorhandler.hpp ${D}${includedir}/phosphor-ipmi-host
+ install -m 0644 -D ${S}/selutility.hpp ${D}${includedir}/phosphor-ipmi-host
+}
diff --git a/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/tla2024-enable.service b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/tla2024-enable.service
new file mode 100644
index 000000000..8d4259441
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/tla2024-enable.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=TLA2024 change scale property
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/tla2024-enable.sh
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/tla2024-enable.sh b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/tla2024-enable.sh
new file mode 100644
index 000000000..6c5b07aec
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/tla2024-enable.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+echo 2.000000 > /sys/bus/iio/devices/iio:device1/scale
diff --git a/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config.json b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config.json
new file mode 100644
index 000000000..c353e8216
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor/virtual_sensor_config.json
@@ -0,0 +1,394 @@
+[
+ {
+ "Desc":
+ {
+ "Name": "CPU0_NBM_T",
+ "SensorType": "temperature",
+ "MinValue": 0,
+ "MaxValue": 160
+ },
+ "Threshold" :
+ {
+ "CriticalHigh": 86,
+ "CriticalLow": 0,
+ "WarningHigh": 85,
+ "WarningLow": 0
+ },
+ "Params":
+ {
+ "DbusParam":
+ [
+ {
+ "ParamName": "V1",
+ "Desc":
+ {
+ "Name": "CPU0_NBM_V",
+ "SensorType": "voltage"
+ }
+ }
+ ]
+ },
+ "Expression": "(V1 - 2.73) * 100"
+ },
+ {
+ "Desc":
+ {
+ "Name": "CPU1_NBM_T",
+ "SensorType": "temperature",
+ "MinValue": 0,
+ "MaxValue": 160
+ },
+ "Threshold" :
+ {
+ "CriticalHigh": 86,
+ "CriticalLow": 0,
+ "WarningHigh": 85,
+ "WarningLow": 0
+ },
+ "Params":
+ {
+ "DbusParam":
+ [
+ {
+ "ParamName": "V2",
+ "Desc":
+ {
+ "Name": "CPU1_NBM_V",
+ "SensorType": "voltage"
+ }
+ }
+ ]
+ },
+ "Expression": "(V2 - 2.73) * 100"
+ },
+ {
+ "Desc":
+ {
+ "Name": "CPU0_DIMMG_T",
+ "SensorType": "temperature",
+ "MinValue": 0,
+ "MaxValue": 255
+ },
+ "Threshold" :
+ {
+ "CriticalHigh": 90,
+ "CriticalLow": 0,
+ "WarningHigh": 85,
+ "WarningLow": 0
+ },
+ "Params":
+ {
+ "DbusParam":
+ [
+ {
+ "ParamName": "CH0",
+ "Desc":
+ {
+ "Name": "CPU0_CH0DIMM_T",
+ "SensorType": "temperature"
+ }
+ },
+ {
+ "ParamName": "CH1",
+ "Desc":
+ {
+ "Name": "CPU0_CH1DIMM_T",
+ "SensorType": "temperature"
+ }
+ },
+ {
+ "ParamName": "CH2",
+ "Desc":
+ {
+ "Name": "CPU0_CH2DIMM_T",
+ "SensorType": "temperature"
+ }
+ },
+ {
+ "ParamName": "CH3",
+ "Desc":
+ {
+ "Name": "CPU0_CH3DIMM_T",
+ "SensorType": "temperature"
+ }
+ },
+ {
+ "ParamName": "CH4",
+ "Desc":
+ {
+ "Name": "CPU0_CH4DIMM_T",
+ "SensorType": "temperature"
+ }
+ },
+ {
+ "ParamName": "CH5",
+ "Desc":
+ {
+ "Name": "CPU0_CH5DIMM_T",
+ "SensorType": "temperature"
+ }
+ },
+ {
+ "ParamName": "CH6",
+ "Desc":
+ {
+ "Name": "CPU0_CH6DIMM_T",
+ "SensorType": "temperature"
+ }
+ },
+ {
+ "ParamName": "CH7",
+ "Desc":
+ {
+ "Name": "CPU0_CH7DIMM_T",
+ "SensorType": "temperature"
+ }
+ }
+ ]
+ },
+ "Expression": "max((CH0 == CH0) ? CH0 : 0,(CH1 == CH1) ? CH1 : 0,(CH2 == CH2) ? CH2 : 0,(CH3 == CH3) ? CH3 : 0,(CH4 == CH4) ? CH4 : 0,(CH5 == CH5) ? CH5 : 0,(CH6 == CH6) ? CH6 : 0,(CH7 == CH7) ? CH7 : 0)"
+ },
+ {
+ "Desc":
+ {
+ "Name": "CPU1_DIMMG_T",
+ "SensorType": "temperature",
+ "MinValue": 0,
+ "MaxValue": 255
+ },
+ "Threshold" :
+ {
+ "CriticalHigh": 90,
+ "CriticalLow": 0,
+ "WarningHigh": 85,
+ "WarningLow": 0
+ },
+ "Params":
+ {
+ "DbusParam":
+ [
+ {
+ "ParamName": "CH0",
+ "Desc":
+ {
+ "Name": "CPU1_CH0DIMM_T",
+ "SensorType": "temperature"
+ }
+ },
+ {
+ "ParamName": "CH1",
+ "Desc":
+ {
+ "Name": "CPU1_CH1DIMM_T",
+ "SensorType": "temperature"
+ }
+ },
+ {
+ "ParamName": "CH2",
+ "Desc":
+ {
+ "Name": "CPU1_CH2DIMM_T",
+ "SensorType": "temperature"
+ }
+ },
+ {
+ "ParamName": "CH3",
+ "Desc":
+ {
+ "Name": "CPU1_CH3DIMM_T",
+ "SensorType": "temperature"
+ }
+ },
+ {
+ "ParamName": "CH4",
+ "Desc":
+ {
+ "Name": "CPU1_CH4DIMM_T",
+ "SensorType": "temperature"
+ }
+ },
+ {
+ "ParamName": "CH5",
+ "Desc":
+ {
+ "Name": "CPU1_CH5DIMM_T",
+ "SensorType": "temperature"
+ }
+ },
+ {
+ "ParamName": "CH6",
+ "Desc":
+ {
+ "Name": "CPU1_CH6DIMM_T",
+ "SensorType": "temperature"
+ }
+ },
+ {
+ "ParamName": "CH7",
+ "Desc":
+ {
+ "Name": "CPU1_CH7DIMM_T",
+ "SensorType": "temperature"
+ }
+ }
+ ]
+ },
+ "Expression": "max((CH0 == CH0) ? CH0 : 0,(CH1 == CH1) ? CH1 : 0,(CH2 == CH2) ? CH2 : 0,(CH3 == CH3) ? CH3 : 0,(CH4 == CH4) ? CH4 : 0,(CH5 == CH5) ? CH5 : 0,(CH6 == CH6) ? CH6 : 0,(CH7 == CH7) ? CH7 : 0)"
+ },
+ {
+ "Desc":
+ {
+ "Name": "CPU0_DIMM_DDR_V",
+ "SensorType": "voltage",
+ "MinValue": 0,
+ "MaxValue": 5
+ },
+ "Threshold" :
+ {
+ "CriticalHigh": 2.999,
+ "CriticalLow": 0,
+ "WarningHigh": 0,
+ "WarningLow": 0
+ },
+ "Params":
+ {
+ "DbusParam":
+ [
+ {
+ "ParamName": "V1",
+ "Desc":
+ {
+ "Name": "CPU0_DIMM_VR1_V",
+ "SensorType": "voltage"
+ }
+ },
+ {
+ "ParamName": "V2",
+ "Desc":
+ {
+ "Name": "CPU0_DIMM_VR2_V",
+ "SensorType": "voltage"
+ }
+ }
+ ]
+ },
+ "Expression": "(V1 + V2) >= 0 ? (V1 + V2) : -1"
+ },
+ {
+ "Desc":
+ {
+ "Name": "CPU1_DIMM_DDR_V",
+ "SensorType": "voltage",
+ "MinValue": 0,
+ "MaxValue": 5
+ },
+ "Threshold" :
+ {
+ "CriticalHigh": 2.999,
+ "CriticalLow": 0,
+ "WarningHigh": 0,
+ "WarningLow": 0
+ },
+ "Params":
+ {
+ "DbusParam":
+ [
+ {
+ "ParamName": "V1",
+ "Desc":
+ {
+ "Name": "CPU1_DIMM_VR1_V",
+ "SensorType": "voltage"
+ }
+ },
+ {
+ "ParamName": "V2",
+ "Desc":
+ {
+ "Name": "CPU1_DIMM_VR2_V",
+ "SensorType": "voltage"
+ }
+ }
+ ]
+ },
+ "Expression": "(V1 + V2) >= 0 ? (V1 + V2) : -1"
+ },
+ {
+ "Desc":
+ {
+ "Name": "CPU0_MEM_PW",
+ "SensorType": "power",
+ "MinValue": 0,
+ "MaxValue": 80
+ },
+ "Threshold" :
+ {
+ "CriticalHigh": 29.987,
+ "CriticalLow": 0,
+ "WarningHigh": 0,
+ "WarningLow": 0
+ },
+ "Params":
+ {
+ "DbusParam":
+ [
+ {
+ "ParamName": "P1",
+ "Desc":
+ {
+ "Name": "CPU0_DIMM_VR1_PW",
+ "SensorType": "power"
+ }
+ },
+ {
+ "ParamName": "P2",
+ "Desc":
+ {
+ "Name": "CPU0_DIMM_VR2_PW",
+ "SensorType": "power"
+ }
+ }
+ ]
+ },
+ "Expression": "(P1 + P2) >= 0 ? (P1 + P2) : -1"
+ },
+ {
+ "Desc":
+ {
+ "Name": "CPU1_MEM_PW",
+ "SensorType": "power",
+ "MinValue": 0,
+ "MaxValue": 80
+ },
+ "Threshold" :
+ {
+ "CriticalHigh": 29.987,
+ "CriticalLow": 0,
+ "WarningHigh": 0,
+ "WarningLow": 0
+ },
+ "Params":
+ {
+ "DbusParam":
+ [
+ {
+ "ParamName": "P1",
+ "Desc":
+ {
+ "Name": "CPU1_DIMM_VR1_PW",
+ "SensorType": "power"
+ }
+ },
+ {
+ "ParamName": "P2",
+ "Desc":
+ {
+ "Name": "CPU1_DIMM_VR2_PW",
+ "SensorType": "power"
+ }
+ }
+ ]
+ },
+ "Expression": "(P1 + P2) >= 0 ? (P1 + P2) : -1"
+ }
+]
diff --git a/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor_%.bbappend b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor_%.bbappend
new file mode 100644
index 000000000..43f5f5660
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/sensors/phosphor-virtual-sensor_%.bbappend
@@ -0,0 +1,21 @@
+FILESEXTRAPATHS_prepend_kudo := "${THISDIR}/${PN}:"
+
+inherit systemd
+RDEPENDS_${PN} += "bash"
+SYSTEMD_SERVICE_${PN}_append_kudo = " tla2024-enable.service"
+
+SRC_URI_append_kudo = " \
+ file://virtual_sensor_config.json \
+ file://tla2024-enable.service \
+ file://tla2024-enable.sh \
+ "
+FILES_${PN}_append_kudo = " ${bindir}/tla2024-enable.sh"
+
+do_install_append_kudo() {
+ install -d ${D}${datadir}/${PN}
+ install -m 0644 ${WORKDIR}/virtual_sensor_config.json ${D}${datadir}/${PN}/virtual_sensor_config.json
+ install -m 0755 ${WORKDIR}/tla2024-enable.sh ${D}${bindir}/tla2024-enable.sh
+
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/tla2024-enable.service ${D}${systemd_system_unitdir}/tla2024-enable.service
+}
diff --git a/meta-google/recipes-connectivity/avahi/files/avahi-daemon.conf b/meta-google/recipes-connectivity/avahi/files/avahi-daemon.conf
index 9688ffb39..57520df7f 100644
--- a/meta-google/recipes-connectivity/avahi/files/avahi-daemon.conf
+++ b/meta-google/recipes-connectivity/avahi/files/avahi-daemon.conf
@@ -1,5 +1,5 @@
[server]
-allow-interfaces=mgmt
+allow-interfaces=mgmt,gbmcbr
[publish]
disable-user-service-publishing=yes
diff --git a/meta-google/recipes-core/dropbear/dropbear_%.bbappend b/meta-google/recipes-core/dropbear/dropbear_%.bbappend
index e93eba8b6..0b4349e00 100644
--- a/meta-google/recipes-core/dropbear/dropbear_%.bbappend
+++ b/meta-google/recipes-core/dropbear/dropbear_%.bbappend
@@ -5,13 +5,13 @@ SYSTEMD_AUTO_ENABLE_${PN}_prod = "disable"
FILESEXTRAPATHS_remove_gbmc_bandaid := "${THISDIR}/${PN}:"
SYSTEMD_AUTO_ENABLE_${PN}_bandaid_prod = "enable"
-# Allow SSH to the mgmt node on DEV builds
+# Allow SSH to the gbmc-bridge node on DEV builds
do_install_append_gbmc_dev() {
nftables_dir=${D}${sysconfdir}/nftables
rules=$nftables_dir/50-dropbear-dev.rules
install -d -m0755 $nftables_dir
echo 'table inet filter {' >"$rules"
- echo ' chain mgmt_pub_input {' >>"$rules"
+ echo ' chain gbmc_br_pub_input {' >>"$rules"
echo ' tcp dport 22 accept' >>"$rules"
echo ' }' >>"$rules"
echo '}' >>"$rules"
diff --git a/meta-google/recipes-extended/networking/sslh_git.bb b/meta-google/recipes-extended/networking/sslh_git.bb
index 749ee1d41..b683571c1 100644
--- a/meta-google/recipes-extended/networking/sslh_git.bb
+++ b/meta-google/recipes-extended/networking/sslh_git.bb
@@ -4,7 +4,7 @@ LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
SRC_URI = "git://github.com/yrutschle/sslh"
-SRCREV = "b72baa0622ae2d29152dc251d7c21fe80a3052da"
+SRCREV = "517e4ad5b4d57dae396790882bd4629947be1632"
S = "${WORKDIR}/git"
inherit perlnative
diff --git a/meta-google/recipes-google/google-misc/google-misc.inc b/meta-google/recipes-google/google-misc/google-misc.inc
index 95f52613a..85acb9353 100644
--- a/meta-google/recipes-google/google-misc/google-misc.inc
+++ b/meta-google/recipes-google/google-misc/google-misc.inc
@@ -6,7 +6,7 @@ LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://../../LICENSE;md5=34400b68072d710fecd0a2940a0d1658"
SRC_URI += "git://github.com/openbmc/google-misc"
-SRCREV = "4c68ffb8b08fa4484824586ef4a981bcfabd38bb"
+SRCREV = "4a0e2e3c10327dac1c923d263929be9a20478b24"
S = "${WORKDIR}/git/subprojects/${GOOGLE_MISC_PROJ}"
inherit meson
diff --git a/meta-google/recipes-google/ncsi/files/50-gbmc-ncsi.rules.in b/meta-google/recipes-google/ncsi/files/50-gbmc-ncsi.rules.in
index 33031f0db..938dca34b 100644
--- a/meta-google/recipes-google/ncsi/files/50-gbmc-ncsi.rules.in
+++ b/meta-google/recipes-google/ncsi/files/50-gbmc-ncsi.rules.in
@@ -3,12 +3,32 @@ table inet filter {
type filter hook input priority 0; policy drop;
iifname != @NCSI_IF@ accept
ct state established accept
+ ip6 daddr ff00::/8 goto ncsi_brd_input
+ ip6 daddr fe80::/64 goto ncsi_legacy_input
+ }
+ chain ncsi_gbmc_br_pub_input {
+ jump gbmc_br_pub_input
+ reject
+ }
+ chain gbmc_br_pub_input {
+ }
+ chain ncsi_legacy_input {
+ jump ncsi_brd_input
tcp dport 3959 accept
udp dport 3959 accept
tcp dport 3967 accept
udp dport 3967 accept
+ }
+ chain ncsi_brd_input {
icmpv6 type nd-neighbor-advert accept
icmpv6 type nd-neighbor-solicit accept
icmpv6 type nd-router-advert accept
}
+ chain ncsi_forward {
+ type filter hook forward priority 0; policy drop;
+ iifname != @NCSI_IF@ accept
+ oifname != gbmcbr drop
+ ip6 daddr fdb5:0481:10ce::/64 drop
+ ip6 saddr fdb5:0481:10ce::/64 drop
+ }
}
diff --git a/meta-google/recipes-google/ncsi/files/gbmc-ncsi-br-pub-addr.sh.in b/meta-google/recipes-google/ncsi/files/gbmc-ncsi-br-pub-addr.sh.in
new file mode 100644
index 000000000..961da5095
--- /dev/null
+++ b/meta-google/recipes-google/ncsi/files/gbmc-ncsi-br-pub-addr.sh.in
@@ -0,0 +1,101 @@
+# Copyright 2021 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+[ -z "${gbmc_ncsi_br_pub_addr_lib-}" ] || return
+
+gbmc_ncsi_br_pub_addr_init=
+gbmc_ncsi_br_pub_addr_lastip=
+
+gbmc_ncsi_br_pub_addr_update() {
+ [ -n "$gbmc_ncsi_br_pub_addr_init" ] || return
+
+ printf 'gBMC Bridge Pub Addr from NCSI: %s\n' \
+ "${gbmc_ncsi_br_pub_addr_lastip:-(deleted)}" >&2
+
+ local pfx_bytes=()
+ if [ -n "$gbmc_ncsi_br_pub_addr_lastip" ]; then
+ ip_to_bytes pfx_bytes "$gbmc_ncsi_br_pub_addr_lastip"
+ # Ensure we don't have more than a /64 address
+ local i
+ for (( i = 8; i < 16; ++i )); do
+ if (( pfx_bytes[$i] != 0 )); then
+ pfx_bytes=()
+ break
+ fi
+ done
+ fi
+
+ local contents='[Network]'$'\n'
+ if (( ${#pfx_bytes[@]} != 0 )); then
+ pfx_bytes[8]=0xfd
+ local stateless_pfx="$(ip_bytes_to_str pfx_bytes)"
+ pfx_bytes[9]=0x01
+ local ncsi_pfx="$(ip_bytes_to_str pfx_bytes)"
+ local here=
+ read -r -d '' here <<EOF
+Address=$ncsi_pfx/128
+IPv6PrefixDelegation=yes
+[IPv6PrefixDelegation]
+RouterLifetimeSec=60
+[IPv6Prefix]
+Prefix=$stateless_pfx/80
+PreferredLifetimeSec=60
+ValidLifetimeSec=60
+[IPv6RoutePrefix]
+Route=$ncsi_pfx/80
+LifetimeSec=60
+[Route]
+Destination=$stateless_pfx/72
+Type=unreachable
+Metric=1024
+EOF
+ contents+="$here"$'\n'
+ fi
+
+ local file
+ for file in /run/systemd/network/{00,}-bmc-gbmcbr.network.d/50-public.conf; do
+ mkdir -p -m 755 "$(dirname "$file")"
+ printf '%s' "$contents" >"$file"
+ done
+
+ # Ensure that systemd-networkd performs a reconfiguration as it doesn't
+ # currently check the mtime of drop-in files.
+ touch -c /lib/systemd/network/*-bmc-gbmcbr.network
+
+ if [ "$(systemctl is-active systemd-networkd)" != 'inactive' ]; then
+ networkctl reload
+ networkctl reconfigure gbmcbr
+ fi
+}
+
+gbmc_ncsi_br_pub_addr_hook() {
+ if [ "$change" = 'init' ]; then
+ gbmc_ncsi_br_pub_addr_init=1
+ gbmc_ncsi_br_pub_addr_update
+ elif [ "$change" = 'addr' -a "$intf" = '@NCSI_IF@' ] &&
+ [ "$scope" = 'global' -a "$fam" = 'inet6' ]; then
+ if [ "$action" = 'add' -a "$ip" != "$gbmc_ncsi_br_pub_addr_lastip" ]; then
+ gbmc_ncsi_br_pub_addr_lastip="$ip"
+ gbmc_ncsi_br_pub_addr_update
+ fi
+ if [ "$action" = 'del' -a "$ip" = "$gbmc_ncsi_br_pub_addr_lastip" ]; then
+ gbmc_ncsi_br_pub_addr_lastip=
+ gbmc_ncsi_br_pub_addr_update
+ fi
+ fi
+}
+
+GBMC_IP_MONITOR_HOOKS+=(gbmc_ncsi_br_pub_addr_hook)
+
+gbmc_ncsi_br_pub_addr_lib=1
diff --git a/meta-google/recipes-google/ncsi/files/gbmc-ncsi-nft.sh.in b/meta-google/recipes-google/ncsi/files/gbmc-ncsi-nft.sh.in
new file mode 100644
index 000000000..93d1a4ad2
--- /dev/null
+++ b/meta-google/recipes-google/ncsi/files/gbmc-ncsi-nft.sh.in
@@ -0,0 +1,101 @@
+# Copyright 2021 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+[ -z "${gbmc_ncsi_nft_lib-}" ] || return
+
+gbmc_ncsi_nft_init=
+gbmc_ncsi_nft_lastip4=
+gbmc_ncsi_nft_lastip6=
+
+gbmc_ncsi_nft_update() {
+ [ -n "$gbmc_ncsi_nft_init" ] || return
+
+ printf 'NCSI firewall for IPv4(%s) IPv6(%s)\n' \
+ "${gbmc_ncsi_nft_lastip4:-(deleted)}" \
+ "${gbmc_ncsi_nft_lastip6:-(deleted)}" >&2
+
+ local contents=
+ contents+='table inet filter {'$'\n'
+ contents+=' chain ncsi_input {'$'\n'
+
+ local ip4="$gbmc_ncsi_nft_lastip4"
+ if [ -n "$ip4" ]; then
+ contents+=" ip daddr $ip4 goto ncsi_legacy_input"$'\n'
+ fi
+
+ local ip6="$gbmc_ncsi_nft_lastip6"
+ if [ -n "$ip6" ]; then
+ contents+=" ip6 daddr $ip6/128 goto ncsi_legacy_input"$'\n'
+
+ local ip_bytes=()
+ ip_to_bytes ip_bytes "$ip6"
+ # If our address has enough spare bits for appending the BMC suffix
+ # then we add a rule that allows the BMC subnet. That is, we need a /64
+ # as input.
+ local i
+ for (( i = 8; i < 16; i++ )); do
+ if (( ip_bytes[$i] != 0 )); then
+ ip_bytes=()
+ break
+ fi
+ done
+ if (( ${#ip_bytes[@]} != 0 )); then
+ ip_bytes[8]=0xfd
+ local pfx="$(ip_bytes_to_str ip_bytes)"
+ contents+=" ip6 saddr != $pfx/72 ip6 daddr"
+ contents+=" $pfx/72 goto ncsi_gbmc_br_pub_input"$'\n'
+ fi
+ fi
+
+ contents+=' }'$'\n'
+ contents+=' chain ncsi_forward {'$'\n'
+ if [ -n "$pfx" ]; then
+ contents+=" ip6 saddr != $pfx/72 ip6 daddr $pfx/72 accept"$'\n'
+ fi
+ contents+=' }'$'\n'
+ contents+='}'$'\n'
+
+ local rfile=/run/nftables/40-gbmc-ncsi-in.rules
+ mkdir -p -m 755 "$(dirname "$rfile")"
+ printf '%s' "$contents" >"$rfile"
+
+ echo 'Restarting nftables' >&2
+ systemctl reset-failed nftables
+ systemctl --no-block restart nftables
+}
+
+gbmc_ncsi_nft_hook() {
+ if [ "$change" = 'init' ]; then
+ gbmc_ncsi_nft_init=1
+ gbmc_ncsi_nft_update
+ elif [ "$change" = 'addr' -a "$intf" = '@NCSI_IF@' -a "$scope" = 'global' ]; then
+ if [ "$fam" = 'inet6' ]; then
+ local -n lastip='gbmc_ncsi_nft_lastip6'
+ else
+ local -n lastip='gbmc_ncsi_nft_lastip4'
+ fi
+ if [ "$action" = 'add' -a "$ip" != "$lastip" ]; then
+ lastip="$ip"
+ gbmc_ncsi_nft_update
+ fi
+ if [ "$action" = 'del' -a "$ip" = "$lastip" ]; then
+ lastip=
+ gbmc_ncsi_nft_update
+ fi
+ fi
+}
+
+GBMC_IP_MONITOR_HOOKS+=(gbmc_ncsi_nft_hook)
+
+gbmc_ncsi_nft_lib=1
diff --git a/meta-google/recipes-google/ncsi/gbmc-ncsi-config.bb b/meta-google/recipes-google/ncsi/gbmc-ncsi-config.bb
index ecdda2cb6..098819988 100644
--- a/meta-google/recipes-google/ncsi/gbmc-ncsi-config.bb
+++ b/meta-google/recipes-google/ncsi/gbmc-ncsi-config.bb
@@ -9,17 +9,23 @@ SRC_URI += " \
file://50-gbmc-ncsi.rules.in \
file://gbmc-ncsi-sslh.socket.in \
file://gbmc-ncsi-sslh.service \
+ file://gbmc-ncsi-nft.sh.in \
+ file://gbmc-ncsi-br-pub-addr.sh.in \
"
S = "${WORKDIR}"
RDEPENDS_${PN} += " \
+ gbmc-ip-monitor \
ncsid \
nftables-systemd \
sslh \
"
-FILES_${PN} += "${systemd_unitdir}"
+FILES_${PN} += " \
+ ${datadir}/gbmc-ip-monitor \
+ ${systemd_unitdir} \
+ "
SYSTEMD_SERVICE_${PN} += " \
gbmc-ncsi-sslh.service \
@@ -50,7 +56,7 @@ do_install_append() {
nftdir=${D}${sysconfdir}/nftables
install -d -m0755 "$nftdir"
- sed "s,@NCSI_IF@,$if_name," ${WORKDIR}/50-gbmc-ncsi.rules.in \
+ sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/50-gbmc-ncsi.rules.in \
>"$nftdir"/50-gbmc-ncsi.rules
wantdir=${D}${systemd_system_unitdir}/multi-user.target.wants
@@ -58,6 +64,15 @@ do_install_append() {
ln -sv ../ncsid@.service "$wantdir"/ncsid@$if_name.service
install -m 0644 ${WORKDIR}/gbmc-ncsi-sslh.service ${D}${systemd_system_unitdir}
- sed "s,@NCSI_IF@,$if_name," ${WORKDIR}/gbmc-ncsi-sslh.socket.in \
+ sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-sslh.socket.in \
>${D}${systemd_system_unitdir}/gbmc-ncsi-sslh.socket
+
+ mondir=${D}${datadir}/gbmc-ip-monitor/
+ install -d -m0755 $mondir
+ sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-nft.sh.in \
+ >${WORKDIR}/gbmc-ncsi-nft.sh
+ install -m644 ${WORKDIR}/gbmc-ncsi-nft.sh $mondir
+ sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-br-pub-addr.sh.in \
+ >${WORKDIR}/gbmc-ncsi-br-pub-addr.sh
+ install -m644 ${WORKDIR}/gbmc-ncsi-br-pub-addr.sh $mondir
}
diff --git a/meta-google/recipes-google/networking/files/gbmc-ip-monitor.sh b/meta-google/recipes-google/networking/files/gbmc-ip-monitor.sh
index baeff9a85..e64c8675e 100755
--- a/meta-google/recipes-google/networking/files/gbmc-ip-monitor.sh
+++ b/meta-google/recipes-google/networking/files/gbmc-ip-monitor.sh
@@ -114,7 +114,7 @@ trap cleanup HUP INT QUIT ABRT TERM EXIT
return 0 2>/dev/null
while read line; do
- gbmc_ip_monitor_parse_line || continue
+ gbmc_ip_monitor_parse_line "$line" || continue
gbmc_ip_monitor_run_hooks || continue
if [ "$change" = 'init' ]; then
systemd-notify --ready
diff --git a/meta-google/recipes-google/networking/gbmc-bridge.bb b/meta-google/recipes-google/networking/gbmc-bridge.bb
new file mode 100644
index 000000000..37af84baf
--- /dev/null
+++ b/meta-google/recipes-google/networking/gbmc-bridge.bb
@@ -0,0 +1,105 @@
+SUMMARY = "Configures the gbmc bridge and filter rules"
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit systemd
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+SRC_URI += " \
+ file://-bmc-gbmcbr.netdev \
+ file://-bmc-gbmcbr.network.in \
+ file://-bmc-gbmcbrdummy.netdev \
+ file://-bmc-gbmcbrdummy.network \
+ file://+-bmc-gbmcbrusb.network \
+ file://ipmi.service.in \
+ file://50-gbmc-br.rules \
+ file://gbmc-br-ula.sh \
+ file://gbmc-br-from-ra.sh \
+ file://gbmc-br-ensure-ra.sh \
+ file://gbmc-br-ensure-ra.service \
+ file://gbmc-br-gw-src.sh \
+ file://gbmc-br-nft.sh \
+ "
+
+FILES_${PN}_append = " \
+ ${datadir}/gbmc-ip-monitor \
+ ${systemd_unitdir}/network \
+ ${sysconfdir}/nftables \
+ ${sysconfdir}/avahi/services \
+ "
+
+RDEPENDS_${PN}_append = " \
+ bash \
+ gbmc-ip-monitor \
+ mstpd-mstpd \
+ network-sh \
+ ndisc6-rdisc6 \
+ "
+
+SYSTEMD_SERVICE_${PN} += "gbmc-br-ensure-ra.service"
+
+GBMC_BR_MAC_ADDR ?= ""
+
+# Generated via https://cd34.com/rfc4193/ based on a MAC from a machine I own
+# and we allocated it downstream. Intended to only be used within a complete
+# system of multiple network endpoints.
+GBMC_ULA_PREFIX = "fdb5:0481:10ce:0"
+
+def mac_to_eui64(mac):
+ if not mac:
+ return ''
+ b = [int(c, 16) for c in mac.split(':')]
+ b[0] ^= 2
+ b.insert(3, 0xfe)
+ b.insert(3, 0xff)
+ idx = range(0, len(b)-1, 2)
+ return ':'.join([format((b[i] << 8) + b[i+1], '04x') for i in idx])
+
+do_install() {
+ netdir=${D}${systemd_unitdir}/network
+ install -d -m0755 $netdir
+
+ if [ ! -z "${GBMC_BR_MAC_ADDR}" ]; then
+ sfx='${@mac_to_eui64(GBMC_BR_MAC_ADDR)}'
+ addr="Address=${GBMC_ULA_PREFIX}:$sfx/64\nAddress=fe80::$sfx/64"
+ sed -i "s,@ADDR@,$addr," ${WORKDIR}/-bmc-gbmcbr.network.in
+ else
+ sed -i '/@ADDR@/d' ${WORKDIR}/-bmc-gbmcbr.network.in
+ fi
+
+ install -m0644 ${WORKDIR}/-bmc-gbmcbr.netdev $netdir/
+ install -m0644 ${WORKDIR}/-bmc-gbmcbr.network.in $netdir/-bmc-gbmcbr.network
+ install -m0644 ${WORKDIR}/-bmc-gbmcbrdummy.netdev $netdir/
+ install -m0644 ${WORKDIR}/-bmc-gbmcbrdummy.network $netdir/
+ install -m0644 ${WORKDIR}/+-bmc-gbmcbrusb.network $netdir/
+
+ nftables_dir=${D}${sysconfdir}/nftables
+ install -d -m0755 "$nftables_dir"
+ install -m0644 ${WORKDIR}/50-gbmc-br.rules $nftables_dir/
+
+ avahi_dir=${D}${sysconfdir}/avahi/services
+ install -d -m 0755 "$avahi_dir"
+ sed -i 's,@MACHINE@,${MACHINE},g' ${WORKDIR}/ipmi.service.in
+ sed -i 's,@EXTRA_ATTRS@,,g' ${WORKDIR}/ipmi.service.in
+ sed 's,@NAME@,bmc,g' ${WORKDIR}/ipmi.service.in >${avahi_dir}/bmc.ipmi.service
+ sed 's,@NAME@,${MACHINE}-bmc,g' ${WORKDIR}/ipmi.service.in >${avahi_dir}/${MACHINE}-bmc.ipmi.service
+
+ mondir=${D}${datadir}/gbmc-ip-monitor
+ install -d -m0755 "$mondir"
+ install -m0644 ${WORKDIR}/gbmc-br-ula.sh "$mondir"/
+ install -m0644 ${WORKDIR}/gbmc-br-from-ra.sh "$mondir"/
+ install -m0644 ${WORKDIR}/gbmc-br-gw-src.sh "$mondir"/
+ install -m0644 ${WORKDIR}/gbmc-br-nft.sh "$mondir"/
+
+ install -d -m0755 ${D}${libexecdir}
+ install -m0755 ${WORKDIR}/gbmc-br-ensure-ra.sh ${D}${libexecdir}/
+ install -d -m0755 ${D}${systemd_system_unitdir}
+ install -m0755 ${WORKDIR}/gbmc-br-ensure-ra.service ${D}${systemd_system_unitdir}/
+}
+
+do_rm_work_prepend() {
+ # HACK: Work around broken do_rm_work not properly calling rm with `--`
+ # It doesn't like filenames that start with `-`
+ rm -rf -- ${WORKDIR}/-*
+}
diff --git a/meta-google/recipes-google/networking/gbmc-bridge/+-bmc-gbmcbrusb.network b/meta-google/recipes-google/networking/gbmc-bridge/+-bmc-gbmcbrusb.network
new file mode 100644
index 000000000..e403334b4
--- /dev/null
+++ b/meta-google/recipes-google/networking/gbmc-bridge/+-bmc-gbmcbrusb.network
@@ -0,0 +1,8 @@
+[Match]
+Name=usb*
+[Network]
+Bridge=gbmcbr
+[Bridge]
+# USB speeds tend to be better than 100mbit (100 cost) but worse
+# than 1gbit (10 cost). Generally around 200mbit.
+Cost=85
diff --git a/meta-google/recipes-google/networking/gbmc-bridge/-bmc-gbmcbr.netdev b/meta-google/recipes-google/networking/gbmc-bridge/-bmc-gbmcbr.netdev
new file mode 100644
index 000000000..d890ef9ff
--- /dev/null
+++ b/meta-google/recipes-google/networking/gbmc-bridge/-bmc-gbmcbr.netdev
@@ -0,0 +1,5 @@
+[NetDev]
+Name=gbmcbr
+Kind=bridge
+[Bridge]
+STP=true
diff --git a/meta-google/recipes-google/networking/gbmc-bridge/-bmc-gbmcbr.network.in b/meta-google/recipes-google/networking/gbmc-bridge/-bmc-gbmcbr.network.in
new file mode 100644
index 000000000..c6097bbdb
--- /dev/null
+++ b/meta-google/recipes-google/networking/gbmc-bridge/-bmc-gbmcbr.network.in
@@ -0,0 +1,9 @@
+[Match]
+Name=gbmcbr
+[Network]
+@ADDR@
+DHCP=false
+IPv6AcceptRA=true
+LLMNR=true
+MulticastDNS=true
+LinkLocalAddressing=ipv6
diff --git a/meta-google/recipes-google/networking/gbmc-bridge/-bmc-gbmcbrdummy.netdev b/meta-google/recipes-google/networking/gbmc-bridge/-bmc-gbmcbrdummy.netdev
new file mode 100644
index 000000000..97c725812
--- /dev/null
+++ b/meta-google/recipes-google/networking/gbmc-bridge/-bmc-gbmcbrdummy.netdev
@@ -0,0 +1,3 @@
+[NetDev]
+Name=gbmcbrdummy
+Kind=dummy
diff --git a/meta-google/recipes-google/networking/gbmc-bridge/-bmc-gbmcbrdummy.network b/meta-google/recipes-google/networking/gbmc-bridge/-bmc-gbmcbrdummy.network
new file mode 100644
index 000000000..7d3f07197
--- /dev/null
+++ b/meta-google/recipes-google/networking/gbmc-bridge/-bmc-gbmcbrdummy.network
@@ -0,0 +1,4 @@
+[Match]
+Name=gbmcbrdummy
+[Network]
+Bridge=gbmcbr
diff --git a/meta-google/recipes-google/networking/gbmc-bridge/50-gbmc-br.rules b/meta-google/recipes-google/networking/gbmc-bridge/50-gbmc-br.rules
new file mode 100644
index 000000000..1a5e6331d
--- /dev/null
+++ b/meta-google/recipes-google/networking/gbmc-bridge/50-gbmc-br.rules
@@ -0,0 +1,27 @@
+table bridge filter {
+ chain gbmc_br_prerouting {
+ type filter hook prerouting priority 0;
+ iifname != gbmcbr accept
+ # Sometimes our links are over NCSI and we don't want to broadcast
+ # those packets over the entire bridge. They are only relevant P2P.
+ ether type 0x88F8 drop
+ }
+}
+
+table inet filter {
+ chain gbmc_br_input {
+ type filter hook input priority 0; policy drop;
+ iifname != gbmcbr accept
+ jump gbmc_br_int_input
+ jump gbmc_br_pub_input
+ reject
+ }
+ chain gbmc_br_int_input {
+ ip6 daddr ff00::/8 accept
+ ip6 daddr fe80::/64 accept
+ ip6 daddr fdb5:0481:10ce::/64 accept
+ }
+ chain gbmc_br_pub_input {
+ ip6 nexthdr icmpv6 accept
+ }
+}
diff --git a/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-ensure-ra.service b/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-ensure-ra.service
new file mode 100644
index 000000000..7f97cea48
--- /dev/null
+++ b/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-ensure-ra.service
@@ -0,0 +1,5 @@
+[Service]
+ExecStart=/usr/libexec/gbmc-br-ensure-ra.sh
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-ensure-ra.sh b/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-ensure-ra.sh
new file mode 100644
index 000000000..60e33d89b
--- /dev/null
+++ b/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-ensure-ra.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+# Copyright 2021 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Every 30 seconds, send out an RA so that the kernel will receive a response.
+# This ensures that all BMCs (even ones that think they are routers) get updated
+# information from the other systems on the network.
+w=30
+while true; do
+ start=$SECONDS
+ rdisc6 -m gbmcbr -r 1 -w $(( w * 1000 )) >/dev/null 2>/dev/null
+ # If rdisc6 exits early we still want to wait the full `w` time before
+ # starting again.
+ (( timeout = start + w - SECONDS ))
+ sleep $(( timeout < 0 ? 0 : timeout ))
+done
diff --git a/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-from-ra.sh b/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-from-ra.sh
new file mode 100644
index 000000000..18341fefb
--- /dev/null
+++ b/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-from-ra.sh
@@ -0,0 +1,96 @@
+# Copyright 2021 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+[ -z "${gbmc_br_from_ra_lib-}" ] || return
+
+source /usr/share/network/lib.sh || exit
+
+gbmc_br_from_ra_init=
+gbmc_br_from_ra_mac=
+declare -A gbmc_br_from_ra_pfxs=()
+declare -A gbmc_br_from_ra_prev_addrs=()
+
+gbmc_br_from_ra_update() {
+ [ -n "$gbmc_br_from_ra_init" -a -n "$gbmc_br_from_ra_mac" ] || return
+
+ local pfx
+ for pfx in "${!gbmc_br_from_ra_pfxs[@]}"; do
+ local cidr
+ if ! cidr="$(ip_pfx_to_cidr "$pfx")"; then
+ unset 'gbmc_br_from_ra_pfxs[$pfx]'
+ continue
+ fi
+ if (( cidr == 80 )); then
+ local sfx
+ if ! sfx="$(mac_to_eui48 "$gbmc_br_from_ra_mac")"; then
+ unset 'gbmc_br_from_ra_pfxs[$pfx]'
+ continue
+ fi
+ local addr
+ if ! addr="$(ip_pfx_concat "$pfx" "$sfx")"; then
+ unset 'gbmc_br_from_ra_pfxs[$pfx]'
+ continue
+ fi
+ else
+ unset 'gbmc_br_from_ra_pfxs[$pfx]'
+ continue
+ fi
+ local valid="${gbmc_br_from_ra_pfxs["$pfx"]}"
+ if (( valid > 0 )); then
+ if [ -z "${gbmc_br_from_ra_prev_addrs["$addr"]-}" ]; then
+ echo "gBMC Bridge RA Addr Add: $addr" >&2
+ gbmc_br_from_ra_prev_addrs["$addr"]=1
+ fi
+ ip addr replace "$addr" dev gbmcbr noprefixroute
+ else
+ if [ -n "${gbmc_br_from_ra_prev_addrs["$addr"]-}" ]; then
+ echo "gBMC Bridge RA Addr Del: $addr" >&2
+ unset 'gbmc_br_from_ra_prev_addrs[$addr]'
+ fi
+ ip addr del "$addr" dev gbmcbr
+ unset 'gbmc_br_from_ra_pfxs[$pfx]'
+ fi
+ done
+}
+
+gbmc_br_from_ra_hook() {
+ if [ "$change" = 'init' ]; then
+ gbmc_br_from_ra_init=1
+ gbmc_br_from_ra_update
+ elif [[ "$change" == 'route' && "$route" != *' via '* ]] &&
+ [[ "$route" =~ ^(.* dev gbmcbr proto ra .*)( +expires +([^ ]+)sec).*$ ]]; then
+ pfx="${route%% *}"
+ if [ "$action" = 'add' ]; then
+ gbmc_br_from_ra_pfxs["$pfx"]="${BASH_REMATCH[3]}"
+ gbmc_br_from_ra_update
+ elif [ "$action" = 'del' ]; then
+ gbmc_br_from_ra_pfxs["$pfx"]=0
+ gbmc_br_from_ra_update
+ fi
+ elif [ "$change" = 'link' -a "$intf" = 'gbmcbr' ]; then
+ rdisc6 -m gbmcbr -r 1 -w 100 >/dev/null 2>&1
+ if [ "$action" = 'add' -a "$mac" != "$gbmc_br_from_ra_mac" ]; then
+ gbmc_br_from_ra_mac="$mac"
+ gbmc_br_from_ra_update
+ fi
+ if [ "$action" = 'del' -a "$mac" = "$gbmc_br_from_ra_mac" ]; then
+ gbmc_br_from_ra_mac=
+ gbmc_br_from_ra_update
+ fi
+ fi
+}
+
+GBMC_IP_MONITOR_HOOKS+=(gbmc_br_from_ra_hook)
+
+gbmc_br_from_ra_lib=1
diff --git a/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-gw-src.sh b/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-gw-src.sh
new file mode 100644
index 000000000..cfe993f28
--- /dev/null
+++ b/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-gw-src.sh
@@ -0,0 +1,74 @@
+# Copyright 2021 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+[ -z "${gbmc_br_gw_src_lib-}" ] || return
+
+source /usr/share/network/lib.sh || exit
+
+gbmc_br_gw_src_ip=
+declare -A gbmc_br_gw_src_routes=()
+
+gbmc_br_gw_src_update() {
+ [ -n "$gbmc_br_gw_src_ip" ] || return
+
+ local route
+ for route in "${!gbmc_br_gw_src_routes[@]}"; do
+ [[ "$route" != *" src $gbmc_br_gw_src_ip "* ]] || continue
+ echo "gBMC Bridge Updating GW source [$gbmc_br_gw_src_ip]: $route" >&2
+ ip route change $route src "$gbmc_br_gw_src_ip"
+ unset 'gbmc_br_gw_src_routes[$route]'
+ done
+}
+
+gbmc_br_gw_src_hook() {
+ # We only want to match default gateway routes that are dynamic
+ # (have an expiration time). These will be updated with our preferred
+ # source.
+ if [[ "$change" == 'route' && "$route" == 'default '*':'* ]]; then
+ if [[ "$route" =~ ^(.*)( +expires +[^ ]+)(.*)$ ]]; then
+ route="${BASH_REMATCH[1]}${BASH_REMATCH[3]}"
+ fi
+ if [ "$action" = 'add' -a -z "${gbmc_br_gw_src_routes["$route"]}" ]; then
+ gbmc_br_gw_src_routes["$route"]=1
+ gbmc_br_gw_src_update
+ elif [ "$action" = 'del' -a -n "${gbmc_br_gw_src_routes["$route"]}" ]; then
+ unset 'gbmc_br_gw_src_routes[$route]'
+ gbmc_br_gw_src_update
+ fi
+ # Match only global IP addresses on the bridge that match the BMC stateless
+ # prefix (<mpfx>:fd00:). So 2002:af4:3480:2248:fd00:6345:3069:9186 would be
+ # matched as the preferred source IP for outoging traffic.
+ elif [ "$change" = 'addr' -a "$intf" = 'gbmcbr' -a "$scope" = 'global' ] &&
+ [[ "$fam" == 'inet6' && "$flags" != *tentative* ]]; then
+ local ip_bytes=()
+ if ! ip_to_bytes ip_bytes "$ip"; then
+ echo "gBMC Bridge Ensure RA Invalid IP: $ip" >&2
+ return 1
+ fi
+ if (( ip_bytes[8] != 0xfd || ip_bytes[9] != 0 )); then
+ return 0
+ fi
+ if [ "$action" = 'add' -a "$ip" != "$gbmc_br_gw_src_ip" ]; then
+ gbmc_br_gw_src_ip="$ip"
+ gbmc_br_gw_src_update
+ fi
+ if [ "$action" = 'del' -a "$ip" = "$gbmc_br_gw_src_ip" ]; then
+ gbmc_br_gw_src_ip=
+ fi
+ fi
+}
+
+GBMC_IP_MONITOR_HOOKS+=(gbmc_br_gw_src_hook)
+
+gbmc_br_gw_src_lib=1
diff --git a/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-nft.sh b/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-nft.sh
new file mode 100644
index 000000000..19b8f64a1
--- /dev/null
+++ b/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-nft.sh
@@ -0,0 +1,76 @@
+# Copyright 2021 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+[ -z "${gbmc_br_nft_lib-}" ] || return
+
+source /usr/share/network/lib.sh || exit
+
+gbmc_br_nft_init=
+gbmc_br_nft_pfx=
+
+gbmc_br_nft_update() {
+ printf 'gBMC Bridge input firewall for %s\n' \
+ "${gbmc_br_nft_pfx:-(deleted)}" >&2
+
+ local contents=
+ contents+='table inet filter {'$'\n'
+ contents+=' chain gbmc_br_int_input {'$'\n'
+ if [ -n "${gbmc_br_nft_pfx-}" ]; then
+ contents+=" ip6 saddr $gbmc_br_nft_pfx"
+ contents+=" ip6 daddr $gbmc_br_nft_pfx accept"$'\n'
+ fi
+ contents+=' }'$'\n'
+ contents+='}'$'\n'
+
+ local rfile=/run/nftables/40-gbmc-br-int.rules
+ mkdir -p -m 755 "$(dirname "$rfile")"
+ printf '%s' "$contents" >"$rfile"
+
+ echo 'Restarting nftables' >&2
+ systemctl reset-failed nftables
+ systemctl --no-block restart nftables
+}
+
+gbmc_br_nft_hook() {
+ if [ "$change" = 'init' ]; then
+ gbmc_br_nft_init=1
+ gbmc_br_nft_update
+ # Match only global IP addresses on the bridge that match the BMC prefix
+ # (<mpfx>:fdxx:). So 2002:af4:3480:2248:fd02:6345:3069:9186 would become
+ # a 2002:af4:3480:2248:fd00/72 rule.
+ elif [ "$change" = 'addr' -a "$intf" = 'gbmcbr' -a "$scope" = 'global' ] &&
+ [[ "$fam" == 'inet6' && "$flags" != *tentative* ]]; then
+ local ip_bytes=()
+ if ! ip_to_bytes ip_bytes "$ip"; then
+ echo "gBMC Bridge NFT Invalid IP: $ip" >&2
+ return 1
+ fi
+ if (( ip_bytes[8] != 0xfd )); then
+ return 0
+ fi
+ local i
+ for (( i=9; i<16; i++ )); do
+ ip_bytes[$i]=0
+ done
+ pfx="$(ip_bytes_to_str ip_bytes)/72"
+ if [ "$action" = "add" -a "$pfx" != "$gbmc_br_nft_pfx" ]; then
+ gbmc_br_nft_pfx="$pfx"
+ gbmc_br_nft_update
+ fi
+ fi
+}
+
+GBMC_IP_MONITOR_HOOKS+=(gbmc_br_nft_hook)
+
+gbmc_br_nft_lib=1
diff --git a/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-ula.sh b/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-ula.sh
new file mode 100644
index 000000000..8e28d3956
--- /dev/null
+++ b/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-ula.sh
@@ -0,0 +1,71 @@
+# Copyright 2021 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+[ -z "${gbmc_br_ula_lib-}" ] || return
+
+source /usr/share/network/lib.sh || exit
+
+gbmc_br_ula_init=
+gbmc_br_ula_mac=
+
+gbmc_br_ula_update() {
+ [ -n "$gbmc_br_ula_init" ] || return
+
+ echo "gBMC Bridge ULA MAC: ${gbmc_br_ula_mac:-(deleted)}" >&2
+
+ local addr=
+ contents='[Network]'$'\n'
+ if [ -n "$gbmc_br_ula_mac" ]; then
+ local sfx
+ if sfx="$(mac_to_eui64 "$gbmc_br_ula_mac")" &&
+ addr="$(ip_pfx_concat "fdb5:0481:10ce::/64" "$sfx")"; then
+ contents+="Address=$addr"$'\n'
+ fi
+ fi
+
+ local netfile
+ for netfile in /run/systemd/network/{00,}-bmc-gbmcbr.network.d/60-ula.conf; do
+ mkdir -p -m 755 "$(dirname "$netfile")"
+ printf '%s' "$contents" >"$netfile"
+ done
+
+ # Ensure that systemd-networkd performs a reconfiguration as it doesn't
+ # currently check the mtime of drop-in files.
+ touch -c /lib/systemd/network/*-bmc-gbmcbr.network
+
+ if [ "$(systemctl is-active systemd-networkd)" != 'inactive' ]; then
+ networkctl reload
+ networkctl reconfigure gbmcbr
+ fi
+}
+
+gbmc_br_ula_hook() {
+ if [ "$change" = 'init' ]; then
+ gbmc_br_ula_init=1
+ gbmc_br_ula_update
+ elif [ "$change" = 'link' -a "$intf" = 'gbmcbr' ]; then
+ if [ "$action" = 'add' -a "$mac" != "$gbmc_br_ula_mac" ]; then
+ gbmc_br_ula_mac="$mac"
+ gbmc_br_ula_update
+ fi
+ if [ "$action" = 'del' -a "$mac" = "$gbmc_br_ula_mac" ]; then
+ gbmc_br_ula_mac=
+ gbmc_br_ula_update
+ fi
+ fi
+}
+
+GBMC_IP_MONITOR_HOOKS+=(gbmc_br_ula_hook)
+
+gbmc_br_ula_lib=1
diff --git a/meta-google/recipes-google/networking/gbmc-bridge/ipmi.service.in b/meta-google/recipes-google/networking/gbmc-bridge/ipmi.service.in
new file mode 100644
index 000000000..0b940fa2d
--- /dev/null
+++ b/meta-google/recipes-google/networking/gbmc-bridge/ipmi.service.in
@@ -0,0 +1,11 @@
+<?xml version="1.0" ?>
+<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
+<service-group>
+ <name>@NAME@</name>
+ <service>
+ <type>_ipmi._udp</type>
+ <port>623</port>
+ <txt-record>Machine=@MACHINE@</txt-record>
+ @EXTRA_ATTRS@
+ </service>
+</service-group>
diff --git a/meta-google/recipes-google/networking/gbmc-iperf3.bb b/meta-google/recipes-google/networking/gbmc-iperf3.bb
index 5044e418b..27ebdb7e0 100644
--- a/meta-google/recipes-google/networking/gbmc-iperf3.bb
+++ b/meta-google/recipes-google/networking/gbmc-iperf3.bb
@@ -17,13 +17,13 @@ do_install() {
install -m 0644 ${WORKDIR}/iperf3.service ${D}${systemd_system_unitdir}
}
-# Allow IPERF3 to the mgmt node on DEV builds
+# Allow IPERF3 to run on the gbmcbr node on DEV builds
do_install_append_dev() {
nftables_dir=${D}${sysconfdir}/nftables
rules=$nftables_dir/50-gbmc-iperf3-dev.rules
install -d -m0755 $nftables_dir
echo 'table inet filter {' >"$rules"
- echo ' chain mgmt_pub_input {' >>"$rules"
+ echo ' chain gbmc_br_pub_input {' >>"$rules"
echo ' tcp dport 5201 accept' >>"$rules"
echo ' }' >>"$rules"
echo '}' >>"$rules"
diff --git a/meta-google/recipes-google/networking/network-sh/lib.sh b/meta-google/recipes-google/networking/network-sh/lib.sh
index f37f7196d..b5d9382fc 100644
--- a/meta-google/recipes-google/networking/network-sh/lib.sh
+++ b/meta-google/recipes-google/networking/network-sh/lib.sh
@@ -33,11 +33,11 @@ mac_to_bytes() {
}
mac_to_eui48() {
- local mac_bytes=()
+ local mac_bytes=(0 0 0 0 0 0 0 0 0 0)
mac_to_bytes mac_bytes "$1" || return
# Return the EUI-64 bytes in the IPv6 format
- printf '%02x%02x:%02x%02x:%02x%02x\n' "${mac_bytes[@]}"
+ ip_bytes_to_str mac_bytes
}
mac_to_eui64() {
@@ -47,6 +47,7 @@ mac_to_eui64() {
# Using EUI-64 conversion rules, create the suffix bytes from MAC bytes
# Invert bit-0 of the first byte, and insert 0xfffe in the middle.
local suffix_bytes=(
+ 0 0 0 0 0 0 0 0
$((mac_bytes[0] ^ 1))
${mac_bytes[@]:1:2}
$((0xff)) $((0xfe))
@@ -54,52 +55,239 @@ mac_to_eui64() {
)
# Return the EUI-64 bytes in the IPv6 format
- printf '%02x%02x:%02x%02x:%02x%02x:%02x%02x\n' "${suffix_bytes[@]}"
+ ip_bytes_to_str suffix_bytes
+}
+
+ip_to_bytes() {
+ local -n bytes_out="$1"
+ local str="$2"
+
+ local bytes=()
+ local oldifs="$IFS"
+ # Heuristic for V4 / V6, validity will be checked as it is parsed
+ if [[ "$str" == *.* ]]; then
+ # Ensure we don't start or end with IFS
+ [ "${str:0:1}" != '.' ] || return 1
+ [ "${str: -1}" != '.' ] || return 1
+
+ local v
+ # Split IPv4 address into octets
+ IFS=.
+ for v in $str; do
+ # IPv4 digits are always decimal numbers
+ if ! [[ "$v" =~ ^[0-9]+$ ]]; then
+ IFS="$oldifs"
+ return 1
+ fi
+ # Each octet is a single byte, make sure the number isn't larger
+ if (( v > 0xff )); then
+ IFS="$oldifs"
+ return 1
+ fi
+ bytes+=($v)
+ done
+ # IPv4 addresses must have all 4 bytes present
+ if (( "${#bytes[@]}" != 4 )); then
+ IFS="$oldifs"
+ return 1
+ fi
+ else
+ # Ensure we bound the padding in an outer byte for
+ # IFS splitting to work correctly
+ [ "${str:0:2}" = '::' ] && str="0$str"
+ [ "${str: -2}" = '::' ] && str="${str}0"
+
+ # Ensure we don't start or end with IFS
+ [ "${str:0:1}" != ':' ] || return 1
+ [ "${str: -1}" != ':' ] || return 1
+
+ # Stores the bytes that come before ::, if it exists
+ local bytesBeforePad=()
+ local v
+ # Split the Address into hextets
+ IFS=:
+ for v in $str; do
+ # Handle ::, which translates to an empty string
+ if [ -z "$v" ]; then
+ # Only allow a single :: sequence in an address
+ if (( "${#bytesBeforePad[@]}" > 0 )); then
+ IFS="$oldifs"
+ return 1
+ fi
+ # Store the already parsed upper bytes separately
+ # This allows us to calculate and insert padding
+ bytesBeforePad=("${bytes[@]}")
+ bytes=()
+ continue
+ fi
+ # IPv6 digits are always hex
+ if ! [[ "$v" =~ ^[[:xdigit:]]+$ ]]; then
+ IFS="$oldifs"
+ return 1
+ fi
+ # Ensure the number is no larger than a hextet
+ v="0x$v"
+ if (( v > 0xffff )); then
+ IFS="$oldifs"
+ return 1
+ fi
+ # Split the hextet into 2 bytes
+ bytes+=($(( v >> 8 )))
+ bytes+=($(( v & 0xff )))
+ done
+ # If we have ::, add padding
+ if (( "${#bytesBeforePad[@]}" > 0 )); then
+ # Fill the middle bytes with padding and store in `bytes`
+ while (( "${#bytes[@]}" + "${#bytesBeforePad[@]}" < 16 )); do
+ bytesBeforePad+=(0)
+ done
+ bytes=("${bytesBeforePad[@]}" "${bytes[@]}")
+ fi
+ # IPv6 addresses must have all 16 bytes present
+ if (( "${#bytes[@]}" != 16 )); then
+ IFS="$oldifs"
+ return 1
+ fi
+ fi
+
+ IFS="$oldifs"
+ bytes_out=("${bytes[@]}")
}
-ipv6_pfx_concat() {
+ip_bytes_to_str() {
+ local -n bytes="$1"
+
+ if (( "${#bytes[@]}" == 4 )); then
+ printf '%d.%d.%d.%d\n' "${bytes[@]}"
+ elif (( "${#bytes[@]}" == 16 )); then
+ # Track the starting position of the longest run of 0 hextets (2 bytes)
+ local longest_i=0
+ # Track the size of the longest run of 0 hextets
+ local longest_s=0
+ # The index of the first 0 byte in the current run of zeros
+ local first_zero=0
+ local i
+ # Find the location of the longest run of zero hextets, preferring same
+ # size runs later in the address.
+ for (( i=0; i<=16; i+=2 )); do
+ # Terminate the run of zeros if we are at the end of the array or
+ # have a non-zero hextet
+ if (( i == 16 || bytes[$i] != 0 || bytes[$((i+1))] != 0 )); then
+ local s=$((i - first_zero))
+ if (( s >= longest_s )); then
+ longest_i=$first_zero
+ longest_s=$s
+ fi
+ first_zero=$((i+2))
+ fi
+ done
+ # Build the address string by each hextet
+ for (( i=0; i<16; i+=2 )); do
+ # If we encountered a run of zeros, add the necessary :: at the end
+ # of the string. If not at the end, a single : is added since : is
+ # printed to subsequent hextets already.
+ if (( i == longest_i )); then
+ (( i += longest_s-2 ))
+ printf ':'
+ # End of string needs to be ::
+ if (( i == 14 )); then
+ printf ':'
+ fi
+ else
+ # Prepend : to all hextets except the first for separation
+ if (( i != 0 )); then
+ printf ':'
+ fi
+ printf '%x' $(( (bytes[$i]<<8) | bytes[$(($i+1))]))
+ fi
+ done
+ printf '\n'
+ else
+ echo "Invalid IP Bytes: ${bytes[*]}" >&2
+ return 1
+ fi
+}
+
+ip_pfx_concat() {
local pfx="$1"
local sfx="$2"
- # Validate the prefix
- if ! [[ "$pfx" =~ ^(([0-9a-fA-F]{1,4}:)+):/([0-9]+)$ ]]; then
- echo "Invalid IPv6 prefix: $pfx" >&2
+ # Parse the prefix
+ if ! [[ "$pfx" =~ ^([0-9a-fA-F:.]+)/([0-9]+)$ ]]; then
+ echo "Invalid IP prefix: $pfx" >&2
return 1
fi
local addr="${BASH_REMATCH[1]}"
- local cidr="${BASH_REMATCH[3]}"
+ local cidr="${BASH_REMATCH[2]}"
+
# Ensure prefix doesn't have too many bytes
- local nos="${addr//:/}"
- if (( ${#addr} - ${#nos} > (cidr+7)/16 )); then
- echo "Too many prefix bytes: $pfx" >&2
+ local pfx_bytes=()
+ if ! ip_to_bytes pfx_bytes "$addr"; then
+ echo "Invalid IP prefix: $pfx" >&2
+ return 1
+ fi
+ if (( ${#pfx_bytes[@]}*8 < cidr )); then
+ echo "Prefix CIDR too large" >&2
+ return 1
+ fi
+ # CIDR values might partially divide a byte so we need to mask out
+ # only the part of the byte we want to check for emptiness
+ if (( (pfx_bytes[cidr/8] & ~(~0 << (8-cidr%8))) != 0 )); then
+ echo "Invalid byte $((cidr/8)): $pfx" >&2
return 1
fi
+ local i
+ # Check the rest of the whole bytes to make sure they are empty
+ for (( i=cidr/8+1; i<${#pfx_bytes[@]}; i++ )); do
+ if (( pfx_bytes[$i] != 0 )); then
+ echo "Byte $i not 0: $pfx" >&2
+ return 1
+ fi
+ done
# Validate the suffix
- if ! [[ "$sfx" =~ ^[0-9a-fA-F]{1,4}(:[0-9a-fA-F]{1,4})*$ ]]; then
+ local sfx_bytes=()
+ if ! ip_to_bytes sfx_bytes "$sfx"; then
echo "Invalid IPv6 suffix: $sfx" >&2
return 1
fi
- # Ensure suffix doesn't have too many bytes
- local nos="${sfx//:/}"
- if (( ${#sfx} - ${#nos} >= (128-cidr)/16 )); then
- echo "Too many suffix bytes: $sfx" >&2
+ if (( "${#sfx_bytes[@]}" != "${#pfx_bytes[@]}" )); then
+ echo "Suffix not the same family as prefix: $pfx $sfx" >&2
return 1
fi
-
- local comb="$addr:$sfx"
- local nos="${comb//:/}"
- if (( ${#comb} - ${#nos} == 8 )); then
- comb="$addr$sfx"
+ # Check potential partially divided bytes for emptiness in the upper part
+ # based on the division specified in CIDR.
+ if (( (sfx_bytes[cidr/8] & (~0 << (8-cidr%8))) != 0 )); then
+ echo "Invalid byte $((cidr/8)): $sfx" >&2
+ return 1
fi
- echo "$comb/$cidr"
+ local i
+ # Check the bytes before the CIDR for emptiness to ensure they don't overlap
+ for (( i=0; i<cidr/8; i++ )); do
+ if (( sfx_bytes[$i] != 0 )); then
+ echo "Byte $i not 0: $sfx" >&2
+ return 1
+ fi
+ done
+
+ out_bytes=()
+ for (( i=0; i<${#pfx_bytes[@]}; i++ )); do
+ out_bytes+=($(( pfx_bytes[$i] | sfx_bytes[$i] )))
+ done
+ echo "$(ip_bytes_to_str out_bytes)/$cidr"
}
-ipv6_pfx_to_cidr() {
- [[ "$1" =~ ^[0-9a-fA-F:]+/([0-9]+)$ ]] || return
+ip_pfx_to_cidr() {
+ [[ "$1" =~ ^[0-9a-fA-F:.]+/([0-9]+)$ ]] || return
echo "${BASH_REMATCH[1]}"
}
+normalize_ip() {
+ local ip_bytes=()
+ ip_to_bytes ip_bytes "$1" || return
+ ip_bytes_to_str ip_bytes
+}
+
network_init=1
return 0 2>/dev/null
echo "network is a library, not executed directly" >&2
diff --git a/meta-google/recipes-google/networking/network-sh/test.sh b/meta-google/recipes-google/networking/network-sh/test.sh
index 57387c47c..2803c0978 100755
--- a/meta-google/recipes-google/networking/network-sh/test.sh
+++ b/meta-google/recipes-google/networking/network-sh/test.sh
@@ -21,6 +21,21 @@ else
fi
source lib.sh
+expect_array_numeq() {
+ local -n a1="$1"
+ local -n a2="$2"
+
+ if (( "${#a1[@]}" != "${#a2[@]}" )); then
+ echo " Line ${BASH_LINENO[0]} Array Size ${#a1[@]} != ${#a2[@]}" >&2
+ test_err=1
+ else
+ local i
+ for (( i=0; i < ${#a1[@]}; ++i )); do
+ expect_numeq "${a1[$i]}" "${a2[$i]}"
+ done
+ fi
+}
+
test_mac_to_bytes() {
out=()
expect_err 1 mac_to_bytes out ''
@@ -32,52 +47,154 @@ test_mac_to_bytes() {
expect_err 0 mac_to_bytes out 'a2:0:f:de:0:29'
expected=(0xa2 0 0xf 0xde 0 0x29)
- for (( i=0; i < ${#expected[@]}; ++i )); do
- expect_numeq "${out[$i]}" "${expected[$i]}"
- done
+ expect_array_numeq out expected
}
-test_mac_to_eui_48() {
+test_mac_to_eui48() {
str="$(mac_to_eui48 '12:34:56:78:90:af')" || fail
- expect_streq "$str" '1234:5678:90af'
+ expect_streq "$str" '::1234:5678:90af'
}
-test_eui_64() {
+test_mac_to_eui64() {
str="$(mac_to_eui64 '12:34:56:78:90:af')" || fail
- expect_streq "$str" '1334:56ff:fe78:90af'
+ expect_streq "$str" '::1334:56ff:fe78:90af'
+}
+
+test_ip4_to_bytes() {
+ out=()
+ expect_err 1 ip_to_bytes out ''
+ expect_err 1 ip_to_bytes out '10.0.0.'
+ expect_err 1 ip_to_bytes out '.0.1.1'
+ expect_err 1 ip_to_bytes out '10.0.0'
+ expect_err 1 ip_to_bytes out '10.0..0'
+ expect_err 1 ip_to_bytes out '.10.0.0.0'
+ expect_err 1 ip_to_bytes out '10.0.0.0.'
+ expect_err 1 ip_to_bytes out '10.0.0.256'
+ expect_err 1 ip_to_bytes out '10.0.0.0.256'
+ expect_err 1 ip_to_bytes out '10.0.0.0.1'
+
+ expect_err 0 ip_to_bytes out '10.0.0.1'
+ expected=(10 0 0 1)
+ expect_array_numeq out expected
}
-test_ipv6_pfx_concat() {
+test_ip6_to_bytes() {
+ out=()
+ expect_err 1 ip_to_bytes out ''
+ expect_err 1 ip_to_bytes out ':::'
+ expect_err 1 ip_to_bytes out '::z'
+ expect_err 1 ip_to_bytes out '1::1::1'
+ expect_err 1 ip_to_bytes out '1:1:1'
+ expect_err 1 ip_to_bytes out ':1::1'
+ expect_err 1 ip_to_bytes out '1::1:'
+
+ expect_err 0 ip_to_bytes out '::'
+ expected=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
+ expect_array_numeq out expected
+ out=()
+
+ expect_err 0 ip_to_bytes out '::1'
+ expected=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1)
+ expect_array_numeq out expected
+ out=()
+
+ expect_err 0 ip_to_bytes out 'fd00::'
+ expected=(0xfd 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
+ expect_array_numeq out expected
+ out=()
+
+ expect_err 0 ip_to_bytes out 'fd00:ffee::ddff:22'
+ expected=(0xfd 0 0xff 0xee 0 0 0 0 0 0 0 0 0xdd 0xff 0 0x22)
+ expect_array_numeq out expected
+ out=()
+
+ expect_err 0 ip_to_bytes out '1:2:3:4:5:6:7:8'
+ expected=(0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8)
+ expect_array_numeq out expected
+ out=()
+}
+
+test_ip4_bytes_str() {
+ in=(10 0 255 1)
+ str="$(ip_bytes_to_str in)" || fail
+ expect_streq "$str" '10.0.255.1'
+}
+
+test_ip6_bytes_str() {
+ in=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
+ str="$(ip_bytes_to_str in)" || fail
+ expect_streq "$str" '::'
+ in=(0xfd 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
+ str="$(ip_bytes_to_str in)" || fail
+ expect_streq "$str" 'fd00::'
+ in=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0xfd)
+ str="$(ip_bytes_to_str in)" || fail
+ expect_streq "$str" '::fd'
+ in=(0xfd 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1)
+ str="$(ip_bytes_to_str in)" || fail
+ expect_streq "$str" 'fd01::1'
+ in=(0xfd 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1)
+ str="$(ip_bytes_to_str in)" || fail
+ expect_streq "$str" 'fd01::1:0:0:1'
+ in=(0xfd 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1)
+ str="$(ip_bytes_to_str in)" || fail
+ expect_streq "$str" 'fd01:0:0:1:1::1'
+ in=(0 1 0 1 0xdd 0xdd 0 1 0 1 0 1 0 1 0 1)
+ str="$(ip_bytes_to_str in)" || fail
+ expect_streq "$str" '1:1:dddd:1:1:1:1:1'
+}
+
+test_ip_pfx_concat() {
# Invalid inputs
- expect_err 1 ipv6_pfx_concat 'fd/64' '1234:5678:90af'
- expect_err 1 ipv6_pfx_concat 'fd01::' '1234:5678:90af'
- expect_err 1 ipv6_pfx_concat 'fd01:' '1234:5678:90af'
- expect_err 1 ipv6_pfx_concat 'fd01::/a0' '1234:5678:90af'
- expect_err 1 ipv6_pfx_concat 'fd01::/64' ':1234:5678:90af'
- expect_err 1 ipv6_pfx_concat 'fd01::/64' '::'
+ expect_err 1 ip_pfx_concat 'fd/64' '::1234:5678:90af'
+ expect_err 1 ip_pfx_concat 'fd01::' '::1234:5678:90af'
+ expect_err 1 ip_pfx_concat 'fd01:' '::1234:5678:90af'
+ expect_err 1 ip_pfx_concat 'fd01::/a0' '::1234:5678:90af'
+ expect_err 1 ip_pfx_concat 'fd01::/64' ':1234:5678:90af'
+ expect_err 1 ip_pfx_concat 'fd01::/64' ''
+ expect_err 1 ip_pfx_concat 'fd01::/129' '::1'
# Too many address bits
- expect_err 1 ipv6_pfx_concat 'fd01:1:1:1:1::/64' '1234:5678:90af'
- expect_err 1 ipv6_pfx_concat 'fd01::/64' '1:0:1234:5678:90af'
- expect_err 1 ipv6_pfx_concat 'fd01::/65' '1:1234:5678:90af'
- expect_err 1 ipv6_pfx_concat 'fd01::/72' '1:1234:5678:90af'
+ expect_err 1 ip_pfx_concat 'fd01:1:1:1:1::/64' '::1234:5678:90af'
+ expect_err 1 ip_pfx_concat 'fd01::/64' '::1:0:1234:5678:90af'
+ expect_err 1 ip_pfx_concat 'fd01::/79' '::3:1234:5678:90af'
+ expect_err 1 ip_pfx_concat 'fd01::/15' '::3:1234:5678:90af'
+ expect_err 1 ip_pfx_concat '10.0.0.1/31' '0.0.0.0'
- str="$(ipv6_pfx_concat 'fd01::/64' '1')" || fail
+ str="$(ip_pfx_concat '::1/128' '::0')" || fail
+ expect_streq "$str" '::1/128'
+ str="$(ip_pfx_concat 'fd01::/64' '::1')" || fail
expect_streq "$str" 'fd01::1/64'
- str="$(ipv6_pfx_concat 'fd01::/72' '1234:5678:90af')" || fail
+ str="$(ip_pfx_concat 'fd01::/127' '::1')" || fail
+ expect_streq "$str" 'fd01::1/127'
+ str="$(ip_pfx_concat 'fd02::/15' '::1')" || fail
+ expect_streq "$str" 'fd02::1/15'
+ str="$(ip_pfx_concat 'fd01::/72' '::1234:5678:90af')" || fail
expect_streq "$str" 'fd01::1234:5678:90af/72'
- str="$(ipv6_pfx_concat 'fd01:eeee:aaaa:cccc::/64' 'a:1234:5678:90af')" || fail
+ str="$(ip_pfx_concat 'fd01:eeee:aaaa:cccc::/64' '::a:1234:5678:90af')" || fail
expect_streq "$str" 'fd01:eeee:aaaa:cccc:a:1234:5678:90af/64'
+ str="$(ip_pfx_concat 'fd01::fd00:0:0:0/80' '::1')" || fail
+ expect_streq "$str" 'fd01::fd00:0:0:1/80'
+
+ str="$(ip_pfx_concat '10.0.0.0/24' '0.0.0.1')" || fail
+ expect_streq "$str" '10.0.0.1/24'
}
-test_ipv6_pfx_to_cidr() {
- expect_err 1 ipv6_pfx_to_cidr 'z/64'
- expect_err 1 ipv6_pfx_to_cidr '64'
+test_ip_pfx_to_cidr() {
+ expect_err 1 ip_pfx_to_cidr 'z/64'
+ expect_err 1 ip_pfx_to_cidr '64'
- cidr="$(ipv6_pfx_to_cidr 'fd01::/64')" || fail
+ cidr="$(ip_pfx_to_cidr 'fd01::/64')" || fail
expect_numeq "$cidr" 64
- cidr="$(ipv6_pfx_to_cidr 'fd01:eeee:aaaa:cccc:a:1234:5678:90af/128')" || fail
+ cidr="$(ip_pfx_to_cidr 'fd01:eeee:aaaa:cccc:a:1234:5678:90af/128')" || fail
expect_numeq "$cidr" 128
+ cidr="$(ip_pfx_to_cidr '10.0.0.1/24')" || fail
+ expect_numeq "$cidr" 24
+}
+
+test_normalize_ip() {
+ ip="$(normalize_ip 'fd01:1::0:0:1')" || fail
+ expect_streq "$ip" 'fd01:1::1'
}
return 0 2>/dev/null
diff --git a/meta-google/recipes-google/systemd/files/40-gbmc-forward.conf b/meta-google/recipes-google/systemd/files/40-gbmc-forward.conf
new file mode 100644
index 000000000..9f8d1eb50
--- /dev/null
+++ b/meta-google/recipes-google/systemd/files/40-gbmc-forward.conf
@@ -0,0 +1,5 @@
+net.ipv4.ip_forward=1
+net.ipv4.conf.default.forwarding=1
+net.ipv4.conf.all.forwarding=1
+net.ipv6.conf.default.forwarding=1
+net.ipv6.conf.all.forwarding=1
diff --git a/meta-google/recipes-google/systemd/gbmc-systemd-config.bb b/meta-google/recipes-google/systemd/gbmc-systemd-config.bb
index 011b62edc..29d81f46a 100644
--- a/meta-google/recipes-google/systemd/gbmc-systemd-config.bb
+++ b/meta-google/recipes-google/systemd/gbmc-systemd-config.bb
@@ -10,11 +10,13 @@ S = "${WORKDIR}"
SRC_URI_append = " \
file://firmware-updates.target \
file://firmware-updates-pre.target \
+ file://40-gbmc-forward.conf \
"
FILES_${PN}_append = " \
${systemd_unitdir}/coredump.conf.d/40-gbmc-coredump.conf \
${systemd_unitdir}/resolved.conf.d/40-gbmc-nomdns.conf \
+ ${libdir}/sysctl.d/40-gbmc-forward.conf \
"
FILES_${PN}_append_dev = " \
@@ -28,22 +30,23 @@ SYSTEMD_SERVICE_${PN}_append = " \
# Put coredumps in the journal to ensure they stay in ram
do_install() {
- install -d -m 0755 ${D}${systemd_unitdir}/coredump.conf.d
- printf "[Coredump]\nStorage=journal\n" \
- >${D}${systemd_unitdir}/coredump.conf.d/40-gbmc-coredump.conf
+ install -d -m 0755 ${D}${systemd_unitdir}/coredump.conf.d
+ printf "[Coredump]\nStorage=journal\n" \
+ >${D}${systemd_unitdir}/coredump.conf.d/40-gbmc-coredump.conf
- install -d -m 0755 ${D}${systemd_unitdir}/resolved.conf.d
- printf "[Resolve]\nLLMNR=no\nMulticastDNS=resolve\n" \
- >${D}${systemd_unitdir}/resolved.conf.d/40-gbmc-nomdns.conf
+ install -d -m 0755 ${D}${systemd_unitdir}/resolved.conf.d
+ printf "[Resolve]\nLLMNR=no\nMulticastDNS=resolve\n" \
+ >${D}${systemd_unitdir}/resolved.conf.d/40-gbmc-nomdns.conf
- install -d -m 0755 ${D}${systemd_system_unitdir}
- install -m 0644 ${WORKDIR}/firmware-updates.target ${D}${systemd_system_unitdir}/
- install -m 0644 ${WORKDIR}/firmware-updates-pre.target ${D}${systemd_system_unitdir}/
+ install -d -m 0755 ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/firmware-updates.target ${D}${systemd_system_unitdir}/
+ install -m 0644 ${WORKDIR}/firmware-updates-pre.target ${D}${systemd_system_unitdir}/
+
+ install -d -m0755 ${D}${libdir}/sysctl.d
+ install -m 0644 ${WORKDIR}/40-gbmc-forward.conf ${D}${libdir}/sysctl.d/
}
do_install_append_dev() {
- install -d -m 0755 ${D}${libdir}/sysctl.d
- printf "kernel.sysrq = 1\n" \
- >${D}${libdir}/sysctl.d/40-gbmc-debug.conf
-
+ printf "kernel.sysrq = 1\n" \
+ >${D}${libdir}/sysctl.d/40-gbmc-debug.conf
}
diff --git a/meta-ibm/conf/machine/p10bmc.conf b/meta-ibm/conf/machine/p10bmc.conf
index 2cab74e4d..58319bf84 100644
--- a/meta-ibm/conf/machine/p10bmc.conf
+++ b/meta-ibm/conf/machine/p10bmc.conf
@@ -5,8 +5,6 @@ SPL_BINARY = "spl/u-boot-spl.bin"
OBMC_POWER_SUPPLY_INSTANCES = "0 1 2 3"
-# TODO remove the MACHINEOVERRIDES when the rainier.conf file is removed.
-MACHINEOVERRIDES =. "p10bmc:"
require conf/machine/include/ast2600.inc
require conf/machine/include/obmc-bsp-common.inc
require conf/machine/include/openpower.inc
@@ -15,6 +13,7 @@ require conf/distro/include/openpower-virtual-pnor.inc
require conf/distro/include/phosphor-mmc.inc
require conf/distro/include/ibm-mpreboot.inc
require conf/distro/include/ibm-yaml.inc
+DISTRO_FEATURES += "ibm-service-account-policy"
SERIAL_CONSOLES = "115200;ttyS4"
@@ -34,3 +33,23 @@ PREFERRED_PROVIDER_virtual/phosphor-fan-presence-config_df-mrw = \
SKIP_BROKEN_MRW = "1"
IMAGE_FEATURES_remove = "obmc-ikvm"
+
+UBOOT_SIGN_ENABLE = "1"
+SPL_SIGN_ENABLE = "1"
+SOCSEC_SIGN_ENABLE = "1"
+SOCSEC_SIGN_EXTRA_OPTS = "--stack_intersects_verification_region=false"
+SOCSEC_SIGN_KEY ?= "${WORKDIR}/rsa_oem_dss_key.pem"
+
+FIT_HASH_ALG = "sha512"
+FIT_SIGN_ALG = "rsa4096"
+FIT_SIGN_NUMBITS = "4096"
+UBOOT_FITIMAGE_ENABLE = "1"
+UBOOT_FIT_HASH_ALG = "sha512"
+UBOOT_FIT_SIGN_ALG = "rsa4096"
+UBOOT_FIT_SIGN_NUMBITS = "4096"
+
+UBOOT_SIGN_KEYNAME = "rsa_oem_fitimage_key"
+SPL_SIGN_KEYNAME = "rsa_oem_fitimage_key"
+
+UBOOT_SIGN_KEYDIR = "${WORKDIR}"
+SPL_SIGN_KEYDIR = "${WORKDIR}"
diff --git a/meta-ibm/conf/machine/rainier.conf b/meta-ibm/conf/machine/rainier.conf
deleted file mode 120000
index ddfb6ec6d..000000000
--- a/meta-ibm/conf/machine/rainier.conf
+++ /dev/null
@@ -1 +0,0 @@
-p10bmc.conf \ No newline at end of file
diff --git a/meta-ibm/conf/machine/witherspoon-tacoma.conf b/meta-ibm/conf/machine/witherspoon-tacoma.conf
index 9826d55ec..2d696ecd8 100644
--- a/meta-ibm/conf/machine/witherspoon-tacoma.conf
+++ b/meta-ibm/conf/machine/witherspoon-tacoma.conf
@@ -14,6 +14,7 @@ require conf/distro/include/ibm-yaml.inc
require conf/distro/include/openpower-virtual-pnor.inc
require conf/distro/include/phosphor-mmc.inc
require conf/distro/include/ibm-mpreboot.inc
+DISTRO_FEATURES += "ibm-service-account-policy"
SERIAL_CONSOLES = "115200;ttyS4"
diff --git a/meta-ibm/recipes-core/systemd/systemd/journald-size-policy-16MB.conf b/meta-ibm/recipes-core/systemd/systemd/journald-size-policy-16MB.conf
new file mode 100644
index 000000000..a9f1d5723
--- /dev/null
+++ b/meta-ibm/recipes-core/systemd/systemd/journald-size-policy-16MB.conf
@@ -0,0 +1,8 @@
+# This file overrides a default for journald
+#
+# - Set a maximum size for journald in filesystem
+#
+# See journald.conf(5) for details
+
+[Journal]
+SystemMaxUse=16M
diff --git a/meta-ibm/recipes-core/systemd/systemd/journald-size-policy.conf b/meta-ibm/recipes-core/systemd/systemd/journald-size-policy-2MB.conf
index fb84c6734..fb84c6734 100644
--- a/meta-ibm/recipes-core/systemd/systemd/journald-size-policy.conf
+++ b/meta-ibm/recipes-core/systemd/systemd/journald-size-policy-2MB.conf
diff --git a/meta-ibm/recipes-core/systemd/systemd_%.bbappend b/meta-ibm/recipes-core/systemd/systemd_%.bbappend
index a6ef71d29..3e490153d 100644
--- a/meta-ibm/recipes-core/systemd/systemd_%.bbappend
+++ b/meta-ibm/recipes-core/systemd/systemd_%.bbappend
@@ -1,11 +1,11 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI_append_ibm-ac-server = " file://journald-storage-policy.conf"
SRC_URI_append_ibm-ac-server = " file://systemd-journald-override.conf"
-SRC_URI_append_ibm-ac-server = " file://journald-size-policy.conf"
+SRC_URI_append_ibm-ac-server = " file://journald-size-policy-2MB.conf"
SRC_URI_append_p10bmc = " file://journald-storage-policy.conf"
SRC_URI_append_p10bmc = " file://systemd-journald-override.conf"
-SRC_URI_append_p10bmc = " file://journald-size-policy.conf"
+SRC_URI_append_p10bmc = " file://journald-size-policy-16MB.conf"
FILES_${PN}_append_ibm-ac-server = " ${systemd_unitdir}/journald.conf.d/journald-storage-policy.conf"
FILES_${PN}_append_ibm-ac-server = " ${systemd_system_unitdir}/systemd-journald.service.d/systemd-journald-override.conf"
@@ -18,10 +18,10 @@ FILES_${PN}_append_p10bmc = " ${systemd_unitdir}/journald.conf.d/journald-size-p
do_install_append_ibm-ac-server() {
install -m 644 -D ${WORKDIR}/journald-storage-policy.conf ${D}${systemd_unitdir}/journald.conf.d/journald-storage-policy.conf
install -m 644 -D ${WORKDIR}/systemd-journald-override.conf ${D}${systemd_system_unitdir}/systemd-journald.service.d/systemd-journald-override.conf
- install -m 644 -D ${WORKDIR}/journald-size-policy.conf ${D}${systemd_unitdir}/journald.conf.d/journald-size-policy.conf
+ install -m 644 -D ${WORKDIR}/journald-size-policy-2MB.conf ${D}${systemd_unitdir}/journald.conf.d/journald-size-policy.conf
}
do_install_append_p10bmc() {
install -m 644 -D ${WORKDIR}/journald-storage-policy.conf ${D}${systemd_unitdir}/journald.conf.d/journald-storage-policy.conf
install -m 644 -D ${WORKDIR}/systemd-journald-override.conf ${D}${systemd_system_unitdir}/systemd-journald.service.d/systemd-journald-override.conf
- install -m 644 -D ${WORKDIR}/journald-size-policy.conf ${D}${systemd_unitdir}/journald.conf.d/journald-size-policy.conf
+ install -m 644 -D ${WORKDIR}/journald-size-policy-16MB.conf ${D}${systemd_unitdir}/journald.conf.d/journald-size-policy.conf
}
diff --git a/meta-ibm/recipes-extended/sudo/sudo_%.bbappend b/meta-ibm/recipes-extended/sudo/sudo_%.bbappend
new file mode 100644
index 000000000..f4254e7ba
--- /dev/null
+++ b/meta-ibm/recipes-extended/sudo/sudo_%.bbappend
@@ -0,0 +1,8 @@
+# Allow passwordless use of sudo
+
+PACKAGECONFIG += "pam-wheel"
+
+do_install_append () {
+ # Allow members of the 'wheel' group to use passwordless sudo
+ sed -i 's/# \(%wheel ALL=(ALL) NOPASSWD: ALL\)/\1/' ${D}${sysconfdir}/sudoers
+}
diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/everest/config.json b/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/everest/config.json
index 74bcfc425..632c76b52 100644
--- a/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/everest/config.json
+++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/everest/config.json
@@ -2,8 +2,8 @@
"fans": [
{
"inventory": "/system/chassis/motherboard/fan0",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -12,18 +12,20 @@
"sensors": [
{
"name": "fan0_0",
+ "threshold": 30,
"has_target": true
},
{
"name": "fan0_1",
+ "threshold": 30,
"has_target": false
}
]
},
{
"inventory": "/system/chassis/motherboard/fan1",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -32,18 +34,20 @@
"sensors": [
{
"name": "fan1_0",
+ "threshold": 30,
"has_target": true
},
{
"name": "fan1_1",
+ "threshold": 30,
"has_target": false
}
]
},
{
"inventory": "/system/chassis/motherboard/fan2",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -52,18 +56,20 @@
"sensors": [
{
"name": "fan2_0",
+ "threshold": 30,
"has_target": true
},
{
"name": "fan2_1",
+ "threshold": 30,
"has_target": false
}
]
},
{
"inventory": "/system/chassis/motherboard/fan3",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -72,10 +78,12 @@
"sensors": [
{
"name": "fan3_0",
+ "threshold": 30,
"has_target": true
},
{
"name": "fan3_1",
+ "threshold": 30,
"has_target": false
}
]
diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/rainier-1s4u/config.json b/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/rainier-1s4u/config.json
index 737cb3f3b..eb519d9b4 100644
--- a/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/rainier-1s4u/config.json
+++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/rainier-1s4u/config.json
@@ -2,8 +2,8 @@
"fans": [
{
"inventory": "/system/chassis/motherboard/fan0",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -12,14 +12,15 @@
"sensors": [
{
"name": "fan0_0",
+ "threshold": 30,
"has_target": true
}
]
},
{
"inventory": "/system/chassis/motherboard/fan1",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -28,14 +29,15 @@
"sensors": [
{
"name": "fan1_0",
+ "threshold": 30,
"has_target": true
}
]
},
{
"inventory": "/system/chassis/motherboard/fan2",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -44,14 +46,15 @@
"sensors": [
{
"name": "fan2_0",
+ "threshold": 30,
"has_target": true
}
]
},
{
"inventory": "/system/chassis/motherboard/fan4",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -60,6 +63,7 @@
"sensors": [
{
"name": "fan4_0",
+ "threshold": 30,
"has_target": true
}
]
diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/rainier-2u/config.json b/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/rainier-2u/config.json
index 145e37f38..b4143adba 100644
--- a/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/rainier-2u/config.json
+++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/rainier-2u/config.json
@@ -2,8 +2,8 @@
"fans": [
{
"inventory": "/system/chassis/motherboard/fan0",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -12,20 +12,22 @@
"sensors": [
{
"name": "fan0_0",
- "has_target": true
+ "threshold": 30,
+ "has_target": true,
+ "factor": 0.627,
+ "offset": 750
},
{
"name": "fan0_1",
- "has_target": false,
- "factor": 1.45,
- "offset": -909
+ "threshold": 30,
+ "has_target": false
}
]
},
{
"inventory": "/system/chassis/motherboard/fan1",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -34,20 +36,22 @@
"sensors": [
{
"name": "fan1_0",
- "has_target": true
+ "threshold": 30,
+ "has_target": true,
+ "factor": 0.627,
+ "offset": 750
},
{
"name": "fan1_1",
- "has_target": false,
- "factor": 1.45,
- "offset": -909
+ "threshold": 30,
+ "has_target": false
}
]
},
{
"inventory": "/system/chassis/motherboard/fan2",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -56,20 +60,22 @@
"sensors": [
{
"name": "fan2_0",
- "has_target": true
+ "threshold": 30,
+ "has_target": true,
+ "factor": 0.627,
+ "offset": 750
},
{
"name": "fan2_1",
- "has_target": false,
- "factor": 1.45,
- "offset": -909
+ "threshold": 30,
+ "has_target": false
}
]
},
{
"inventory": "/system/chassis/motherboard/fan3",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -78,20 +84,22 @@
"sensors": [
{
"name": "fan3_0",
- "has_target": true
+ "threshold": 30,
+ "has_target": true,
+ "factor": 0.627,
+ "offset": 750
},
{
"name": "fan3_1",
- "has_target": false,
- "factor": 1.45,
- "offset": -909
+ "threshold": 30,
+ "has_target": false
}
]
},
{
"inventory": "/system/chassis/motherboard/fan4",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -100,20 +108,22 @@
"sensors": [
{
"name": "fan4_0",
- "has_target": true
+ "threshold": 30,
+ "has_target": true,
+ "factor": 0.627,
+ "offset": 750
},
{
"name": "fan4_1",
- "has_target": false,
- "factor": 1.45,
- "offset": -909
+ "threshold": 30,
+ "has_target": false
}
]
},
{
"inventory": "/system/chassis/motherboard/fan5",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -122,13 +132,15 @@
"sensors": [
{
"name": "fan5_0",
- "has_target": true
+ "threshold": 30,
+ "has_target": true,
+ "factor": 0.627,
+ "offset": 750
},
{
"name": "fan5_1",
- "has_target": false,
- "factor": 1.45,
- "offset": -909
+ "threshold": 30,
+ "has_target": false
}
]
}
diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/rainier-4u/config.json b/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/rainier-4u/config.json
index 71a489944..1bfb5378b 100644
--- a/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/rainier-4u/config.json
+++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/p10bmc/rainier-4u/config.json
@@ -2,8 +2,8 @@
"fans": [
{
"inventory": "/system/chassis/motherboard/fan0",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -12,14 +12,15 @@
"sensors": [
{
"name": "fan0_0",
+ "threshold": 30,
"has_target": true
}
]
},
{
"inventory": "/system/chassis/motherboard/fan1",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -28,14 +29,15 @@
"sensors": [
{
"name": "fan1_0",
+ "threshold": 30,
"has_target": true
}
]
},
{
"inventory": "/system/chassis/motherboard/fan2",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -44,14 +46,15 @@
"sensors": [
{
"name": "fan2_0",
+ "threshold": 30,
"has_target": true
}
]
},
{
"inventory": "/system/chassis/motherboard/fan3",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -60,14 +63,15 @@
"sensors": [
{
"name": "fan3_0",
+ "threshold": 30,
"has_target": true
}
]
},
{
"inventory": "/system/chassis/motherboard/fan4",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -76,14 +80,15 @@
"sensors": [
{
"name": "fan4_0",
+ "threshold": 30,
"has_target": true
}
]
},
{
"inventory": "/system/chassis/motherboard/fan5",
- "functional_delay": 5,
- "allowed_out_of_range_time": 30,
+ "method": "count",
+ "count_interval": 1,
"deviation": 15,
"num_sensors_nonfunc_for_fan_nonfunc": 1,
"monitor_start_delay": 30,
@@ -92,6 +97,7 @@
"sensors": [
{
"name": "fan5_0",
+ "threshold": 30,
"has_target": true
}
]
diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/everest/config.json b/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/everest/config.json
index 439aedcac..928eca25e 100644
--- a/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/everest/config.json
+++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/everest/config.json
@@ -6,7 +6,7 @@
{
"type": "gpio",
"key": 15,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a780.i2c-bus/i2c-14/i2c-30/30-0061",
+ "physpath": "/sys/bus/i2c/devices/30-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -28,7 +28,7 @@
{
"type": "gpio",
"key": 14,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a780.i2c-bus/i2c-14/i2c-30/30-0061",
+ "physpath": "/sys/bus/i2c/devices/30-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -50,7 +50,7 @@
{
"type": "gpio",
"key": 13,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a780.i2c-bus/i2c-14/i2c-30/30-0061",
+ "physpath": "/sys/bus/i2c/devices/30-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -72,7 +72,7 @@
{
"type": "gpio",
"key": 12,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a780.i2c-bus/i2c-14/i2c-30/30-0061",
+ "physpath": "/sys/bus/i2c/devices/30-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/rainier-1s4u/config.json b/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/rainier-1s4u/config.json
index 5bcda88b3..65697e557 100644
--- a/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/rainier-1s4u/config.json
+++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/rainier-1s4u/config.json
@@ -6,7 +6,7 @@
{
"type": "gpio",
"key": 6,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0061",
+ "physpath": "/sys/bus/i2c/devices/7-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -27,7 +27,7 @@
{
"type": "gpio",
"key": 7,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0061",
+ "physpath": "/sys/bus/i2c/devices/7-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -48,7 +48,7 @@
{
"type": "gpio",
"key": 8,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0061",
+ "physpath": "/sys/bus/i2c/devices/7-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -69,7 +69,7 @@
{
"type": "gpio",
"key": 10,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0061",
+ "physpath": "/sys/bus/i2c/devices/7-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/rainier-2u/config.json b/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/rainier-2u/config.json
index 726451028..a5cc1bf66 100644
--- a/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/rainier-2u/config.json
+++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/rainier-2u/config.json
@@ -6,7 +6,7 @@
{
"type": "gpio",
"key": 6,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0061",
+ "physpath": "/sys/bus/i2c/devices/7-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -28,7 +28,7 @@
{
"type": "gpio",
"key": 7,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0061",
+ "physpath": "/sys/bus/i2c/devices/7-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -50,7 +50,7 @@
{
"type": "gpio",
"key": 8,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0061",
+ "physpath": "/sys/bus/i2c/devices/7-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -72,7 +72,7 @@
{
"type": "gpio",
"key": 9,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0061",
+ "physpath": "/sys/bus/i2c/devices/7-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -94,7 +94,7 @@
{
"type": "gpio",
"key": 10,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0061",
+ "physpath": "/sys/bus/i2c/devices/7-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -116,7 +116,7 @@
{
"type": "gpio",
"key": 11,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0061",
+ "physpath": "/sys/bus/i2c/devices/7-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/rainier-4u/config.json b/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/rainier-4u/config.json
index 94e7e69f8..620a32907 100644
--- a/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/rainier-4u/config.json
+++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/p10bmc/rainier-4u/config.json
@@ -6,7 +6,7 @@
{
"type": "gpio",
"key": 6,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0061",
+ "physpath": "/sys/bus/i2c/devices/7-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -27,7 +27,7 @@
{
"type": "gpio",
"key": 7,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0061",
+ "physpath": "/sys/bus/i2c/devices/7-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -48,7 +48,7 @@
{
"type": "gpio",
"key": 8,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0061",
+ "physpath": "/sys/bus/i2c/devices/7-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -69,7 +69,7 @@
{
"type": "gpio",
"key": 9,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0061",
+ "physpath": "/sys/bus/i2c/devices/7-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -90,7 +90,7 @@
{
"type": "gpio",
"key": 10,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0061",
+ "physpath": "/sys/bus/i2c/devices/7-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -111,7 +111,7 @@
{
"type": "gpio",
"key": 11,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a400.i2c-bus/i2c-7/7-0061",
+ "physpath": "/sys/bus/i2c/devices/7-0061",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/witherspoon/config.json b/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/witherspoon/config.json
index 36cdae85b..52262fe35 100644
--- a/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/witherspoon/config.json
+++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/witherspoon/config.json
@@ -6,7 +6,7 @@
{
"type": "gpio",
"key": 4,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060",
+ "physpath": "/sys/bus/i2c/devices/3-0060",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -28,7 +28,7 @@
{
"type": "gpio",
"key": 5,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060",
+ "physpath": "/sys/bus/i2c/devices/3-0060",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -50,7 +50,7 @@
{
"type": "gpio",
"key": 6,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060",
+ "physpath": "/sys/bus/i2c/devices/3-0060",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
@@ -72,7 +72,7 @@
{
"type": "gpio",
"key": 7,
- "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060",
+ "physpath": "/sys/bus/i2c/devices/3-0060",
"devpath": "/dev/input/by-path/platform-gpio-keys-polled-event"
},
{
diff --git a/meta-ibm/recipes-phosphor/images/obmc-phosphor-image.bbappend b/meta-ibm/recipes-phosphor/images/obmc-phosphor-image.bbappend
index 403bfa0cc..57260f06b 100644
--- a/meta-ibm/recipes-phosphor/images/obmc-phosphor-image.bbappend
+++ b/meta-ibm/recipes-phosphor/images/obmc-phosphor-image.bbappend
@@ -5,3 +5,61 @@ OBMC_IMAGE_EXTRA_INSTALL_append_mihawk = " mboxd liberation-fonts uart-render-co
# remove so things fit in available flash space
IMAGE_FEATURES_remove_witherspoon = "obmc-user-mgmt-ldap"
+
+# Optionally configure IBM service accounts
+#
+# To configure your distro, add the following line to its config:
+# DISTRO_FEATURES += "ibm-service-account-policy"
+#
+# The service account policy is as follows:
+# root - The root account remains present. It is needed for internal
+# accounting purposes and for debugging service access.
+# admin - Provides administrative control over the BMC. The role is
+# SystemAdministrator. Admin users have access to interfaces including:
+# Redfish, REST APIs, Web. No access to the BMC via: the BMC's physical
+# console, SSH to the BMC's command line.
+# IPMI access is not granted by default, but admins can authorize
+# themselves and enable the IPMI service.
+# The admin has access to the host console: ssh -p2200 admin@${bmc}.
+# The admin account does not have a home directory.
+# service - Provides IBM service and support representatives (SSRs, formerly
+# known as customer engineers or CEs) access to the BMC. The role is
+# OemIBMServiceAgent. The service user has full admin access, plus access
+# to BMC interfaces intended only to service the BMC and host, including
+# SSH access to the BMC's command line.
+# The service account is not authorized to IPMI because of the inherent
+# security weakness in the IPMI spec and also because the IPMI
+# implementation was not enhanced to use the ACF support.
+# The service account does not have a home directory. The home directory is
+# set to / (the root directory) to allow dropbear ssh connections.
+
+inherit extrausers
+
+# The password hash used here is the traditional 0penBmc password.
+
+#IBM_EXTRA_USERS_PARAMS += " \
+# usermod -p '\$1\$UGMqyqdG\$FZiylVFmRRfl9Z0Ue8G7e/' root; \
+# "
+
+# Add group "wheel" (before adding the "service" account).
+IBM_EXTRA_USERS_PARAMS += " \
+ groupadd wheel; \
+ "
+
+# Add the "admin" account.
+IBM_EXTRA_USERS_PARAMS += " \
+ useradd -M -d / --groups priv-admin,redfish,web -s /sbin/nologin admin; \
+ usermod -p '\$1\$UGMqyqdG\$FZiylVFmRRfl9Z0Ue8G7e/' admin; \
+ "
+
+# Add the "service" account.
+IBM_EXTRA_USERS_PARAMS += " \
+ useradd -M -d / --groups priv-admin,redfish,web,wheel service; \
+ usermod -p '\$1\$UGMqyqdG\$FZiylVFmRRfl9Z0Ue8G7e/' service; \
+ "
+
+# This is recipe specific to ensure it takes effect.
+EXTRA_USERS_PARAMS_pn-obmc-phosphor-image += "${@bb.utils.contains('DISTRO_FEATURES', 'ibm-service-account-policy', "${IBM_EXTRA_USERS_PARAMS}", '', d)}"
+
+# The service account needs sudo.
+IMAGE_INSTALL_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'ibm-service-account-policy', 'sudo', '', d)}"
diff --git a/meta-ibm/recipes-phosphor/inventory/phosphor-inventory-manager/p10bmc/ibm,everest_associations.json b/meta-ibm/recipes-phosphor/inventory/phosphor-inventory-manager/p10bmc/ibm,everest_associations.json
index bf797d94c..e1c085a3c 100644
--- a/meta-ibm/recipes-phosphor/inventory/phosphor-inventory-manager/p10bmc/ibm,everest_associations.json
+++ b/meta-ibm/recipes-phosphor/inventory/phosphor-inventory-manager/p10bmc/ibm,everest_associations.json
@@ -25,6 +25,28 @@
"/xyz/openbmc_project/sensors/fan_tach/fan0_0",
"/xyz/openbmc_project/sensors/fan_tach/fan0_1"
]
+ },
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/fan0_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/fan0_identify"
+ ]
}
]
},
@@ -43,6 +65,28 @@
"/xyz/openbmc_project/sensors/fan_tach/fan1_0",
"/xyz/openbmc_project/sensors/fan_tach/fan1_1"
]
+ },
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/fan1_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/fan1_identify"
+ ]
}
]
},
@@ -61,6 +105,28 @@
"/xyz/openbmc_project/sensors/fan_tach/fan2_0",
"/xyz/openbmc_project/sensors/fan_tach/fan2_1"
]
+ },
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/fan2_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/fan2_identify"
+ ]
}
]
},
@@ -79,6 +145,28 @@
"/xyz/openbmc_project/sensors/fan_tach/fan3_0",
"/xyz/openbmc_project/sensors/fan_tach/fan3_1"
]
+ },
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/fan3_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/fan3_identify"
+ ]
}
]
},
@@ -105,7 +193,1002 @@
]
}
]
+ },
+ {
+ "path": "system/chassis/motherboard/powersupply0",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/powersupply0_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/powersupply0_identify"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/powersupply1",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/powersupply1_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/powersupply1_identify"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/powersupply2",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/powersupply2_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/powersupply2_identify"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/powersupply3",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/powersupply3_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/powersupply3_identify"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/planar_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/planar_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/bmc",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/bmc_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/bmc_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/bmc/tod_battery",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/rtc_battery_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/rtc_battery_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/vrm0",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm0_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm0_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/vrm1",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm1_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm1_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/vrm2",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm2_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm2_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/vrm3",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm3_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm3_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/vrm4",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm4_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm4_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/vrm5",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm5_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm5_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/vrm6",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm6_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm6_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/vrm7",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm7_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm7_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/vrm8",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm8_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm8_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/vrm9",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm9_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm9_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/vrm10",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm10_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm10_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/vrm11",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm11_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm11_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/vrm12",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm12_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm12_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/vrm13",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm13_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm13_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/vrm14",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm14_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm14_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/vrm15",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm15_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/vrm15_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/tpm",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/tpm_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/tpm_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/power_distribution",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/power_distribution_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/power_distribution_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/cpu0",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/cpu0_c14_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/cpu0_c14_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/cpu1",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/cpu0_c14_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/cpu0_c14_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/cpu2",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/cpu1_c19_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/cpu1_c19_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/cpu3",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/cpu1_c19_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/cpu1_c19_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/cpu4",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/cpu2_c56_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/cpu2_c56_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/cpu5",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/cpu2_c56_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/cpu2_c56_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/cpu6",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/cpu3_c61_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/cpu3_c61_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/cpu7",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/cpu3_c61_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/cpu3_c61_identify"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/dasd_backplane",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/dasd_backplane_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/dasd_backplane_identify"
+ ]
+ }
+ ]
}
]
}
-
diff --git a/meta-ibm/recipes-phosphor/inventory/phosphor-inventory-manager/p10bmc/ibm,rainier-2u_associations.json b/meta-ibm/recipes-phosphor/inventory/phosphor-inventory-manager/p10bmc/ibm,rainier-2u_associations.json
index 348cb9755..65f389998 100644
--- a/meta-ibm/recipes-phosphor/inventory/phosphor-inventory-manager/p10bmc/ibm,rainier-2u_associations.json
+++ b/meta-ibm/recipes-phosphor/inventory/phosphor-inventory-manager/p10bmc/ibm,rainier-2u_associations.json
@@ -272,7 +272,28 @@
"/xyz/openbmc_project/sensors/fan_tach/fan3_0",
"/xyz/openbmc_project/sensors/fan_tach/fan3_1",
"/xyz/openbmc_project/sensors/fan_tach/fan4_0",
- "/xyz/openbmc_project/sensors/fan_tach/fan4_1"
+ "/xyz/openbmc_project/sensors/fan_tach/fan4_1",
+ "/xyz/openbmc_project/sensors/fan_tach/fan5_0",
+ "/xyz/openbmc_project/sensors/fan_tach/fan5_1"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "assembly"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/vdd_vrm0",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/vdd_vrm1",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/tpm_wilson",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/tod_battery",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/base_op_panel_blyth",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/lcd_op_panel_hill",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane2"
]
}
]
@@ -302,6 +323,17 @@
[
"/xyz/openbmc_project/led/groups/powersupply0_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -330,6 +362,17 @@
[
"/xyz/openbmc_project/led/groups/powersupply1_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1590,6 +1633,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot0_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1618,6 +1672,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot1_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1646,6 +1711,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot2_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1674,6 +1750,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot3_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1702,6 +1789,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot4_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1730,6 +1828,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot6_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1758,6 +1867,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot7_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1786,6 +1906,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot8_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1814,6 +1945,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot9_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1842,6 +1984,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot10_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1870,6 +2023,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot11_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2206,6 +2370,17 @@
[
"/xyz/openbmc_project/led/groups/nvme0_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2234,6 +2409,17 @@
[
"/xyz/openbmc_project/led/groups/nvme1_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2262,6 +2448,17 @@
[
"/xyz/openbmc_project/led/groups/nvme2_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2290,6 +2487,17 @@
[
"/xyz/openbmc_project/led/groups/nvme3_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2318,6 +2526,17 @@
[
"/xyz/openbmc_project/led/groups/nvme4_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2346,6 +2565,17 @@
[
"/xyz/openbmc_project/led/groups/nvme5_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2374,6 +2604,17 @@
[
"/xyz/openbmc_project/led/groups/nvme6_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2402,6 +2643,17 @@
[
"/xyz/openbmc_project/led/groups/nvme7_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2430,6 +2682,17 @@
[
"/xyz/openbmc_project/led/groups/nvme8_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2458,6 +2721,17 @@
[
"/xyz/openbmc_project/led/groups/nvme9_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2486,6 +2760,17 @@
[
"/xyz/openbmc_project/led/groups/nvme10_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2514,6 +2799,17 @@
[
"/xyz/openbmc_project/led/groups/nvme11_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2542,6 +2838,17 @@
[
"/xyz/openbmc_project/led/groups/nvme12_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2570,6 +2877,17 @@
[
"/xyz/openbmc_project/led/groups/nvme13_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2598,6 +2916,17 @@
[
"/xyz/openbmc_project/led/groups/nvme14_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2626,6 +2955,17 @@
[
"/xyz/openbmc_project/led/groups/nvme15_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2654,6 +2994,17 @@
[
"/xyz/openbmc_project/led/groups/nvme16_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2682,6 +3033,17 @@
[
"/xyz/openbmc_project/led/groups/nvme17_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2710,6 +3072,17 @@
[
"/xyz/openbmc_project/led/groups/nvme18_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2738,6 +3111,17 @@
[
"/xyz/openbmc_project/led/groups/nvme19_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2766,6 +3150,17 @@
[
"/xyz/openbmc_project/led/groups/nvme20_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2794,6 +3189,17 @@
[
"/xyz/openbmc_project/led/groups/nvme21_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2822,6 +3228,17 @@
[
"/xyz/openbmc_project/led/groups/nvme22_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2850,6 +3267,17 @@
[
"/xyz/openbmc_project/led/groups/nvme23_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
}
diff --git a/meta-ibm/recipes-phosphor/inventory/phosphor-inventory-manager/p10bmc/ibm,rainier-4u_associations.json b/meta-ibm/recipes-phosphor/inventory/phosphor-inventory-manager/p10bmc/ibm,rainier-4u_associations.json
index 7841a966a..5cda22d66 100644
--- a/meta-ibm/recipes-phosphor/inventory/phosphor-inventory-manager/p10bmc/ibm,rainier-4u_associations.json
+++ b/meta-ibm/recipes-phosphor/inventory/phosphor-inventory-manager/p10bmc/ibm,rainier-4u_associations.json
@@ -261,7 +261,27 @@
"/xyz/openbmc_project/sensors/fan_tach/fan1_0",
"/xyz/openbmc_project/sensors/fan_tach/fan2_0",
"/xyz/openbmc_project/sensors/fan_tach/fan3_0",
- "/xyz/openbmc_project/sensors/fan_tach/fan4_0"
+ "/xyz/openbmc_project/sensors/fan_tach/fan4_0",
+ "/xyz/openbmc_project/sensors/fan_tach/fan5_0"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "assembly"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/vdd_vrm0",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/vdd_vrm1",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/tpm_wilson",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/tod_battery",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/base_op_panel_blyth",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/lcd_op_panel_hill",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane0",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane1",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/disk_backplane2"
]
}
]
@@ -291,6 +311,17 @@
[
"/xyz/openbmc_project/led/groups/powersupply0_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -319,6 +350,95 @@
[
"/xyz/openbmc_project/led/groups/powersupply1_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/powersupply2",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/powersupply2_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/powersupply2_identify"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
+ }
+ ]
+ },
+ {
+ "path": "system/chassis/motherboard/powersupply3",
+ "endpoints":
+ [
+ {
+ "types":
+ {
+ "rType": "fault_inventory_object",
+ "fType": "fault_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/powersupply3_fault"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "identify_inventory_object",
+ "fType": "identify_led_group"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/led/groups/powersupply3_identify"
+ ]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1579,6 +1699,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot0_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1607,6 +1738,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot1_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1635,6 +1777,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot2_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1663,6 +1816,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot3_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1691,6 +1855,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot4_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1719,6 +1894,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot6_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1747,6 +1933,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot7_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1775,6 +1972,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot8_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1803,6 +2011,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot9_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1831,6 +2050,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot10_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -1859,6 +2089,17 @@
[
"/xyz/openbmc_project/led/groups/pcieslot11_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2195,6 +2436,17 @@
[
"/xyz/openbmc_project/led/groups/nvme0_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2223,6 +2475,17 @@
[
"/xyz/openbmc_project/led/groups/nvme1_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2251,6 +2514,17 @@
[
"/xyz/openbmc_project/led/groups/nvme2_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2279,6 +2553,17 @@
[
"/xyz/openbmc_project/led/groups/nvme3_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2307,6 +2592,17 @@
[
"/xyz/openbmc_project/led/groups/nvme4_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2335,6 +2631,17 @@
[
"/xyz/openbmc_project/led/groups/nvme5_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2363,6 +2670,17 @@
[
"/xyz/openbmc_project/led/groups/nvme6_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2391,6 +2709,17 @@
[
"/xyz/openbmc_project/led/groups/nvme7_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2419,6 +2748,17 @@
[
"/xyz/openbmc_project/led/groups/nvme8_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2447,6 +2787,17 @@
[
"/xyz/openbmc_project/led/groups/nvme9_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2475,6 +2826,17 @@
[
"/xyz/openbmc_project/led/groups/nvme10_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2503,6 +2865,17 @@
[
"/xyz/openbmc_project/led/groups/nvme11_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2531,6 +2904,17 @@
[
"/xyz/openbmc_project/led/groups/nvme12_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2559,6 +2943,17 @@
[
"/xyz/openbmc_project/led/groups/nvme13_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2587,6 +2982,17 @@
[
"/xyz/openbmc_project/led/groups/nvme14_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2615,6 +3021,17 @@
[
"/xyz/openbmc_project/led/groups/nvme15_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2643,6 +3060,17 @@
[
"/xyz/openbmc_project/led/groups/nvme16_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2671,6 +3099,17 @@
[
"/xyz/openbmc_project/led/groups/nvme17_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2699,6 +3138,17 @@
[
"/xyz/openbmc_project/led/groups/nvme18_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2727,6 +3177,17 @@
[
"/xyz/openbmc_project/led/groups/nvme19_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2755,6 +3216,17 @@
[
"/xyz/openbmc_project/led/groups/nvme20_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2783,6 +3255,17 @@
[
"/xyz/openbmc_project/led/groups/nvme21_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2811,6 +3294,17 @@
[
"/xyz/openbmc_project/led/groups/nvme22_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
},
@@ -2839,6 +3333,17 @@
[
"/xyz/openbmc_project/led/groups/nvme23_identify"
]
+ },
+ {
+ "types":
+ {
+ "rType": "inventory",
+ "fType": "chassis"
+ },
+ "paths":
+ [
+ "/xyz/openbmc_project/inventory/system/chassis"
+ ]
}
]
}
diff --git a/meta-ibm/recipes-phosphor/network/phosphor-network_%.bbappend b/meta-ibm/recipes-phosphor/network/phosphor-network_%.bbappend
index cf88f2282..a79dae669 100644
--- a/meta-ibm/recipes-phosphor/network/phosphor-network_%.bbappend
+++ b/meta-ibm/recipes-phosphor/network/phosphor-network_%.bbappend
@@ -4,7 +4,7 @@ SRC_URI += " file://ncsi-netlink.service"
SYSTEMD_SERVICE_${PN} += " ncsi-netlink.service"
FILES_${PN} += "${datadir}/network/*.json"
-EXTRA_OECONF += "--enable-sync-mac"
+PACKAGECONFIG_append = " sync-mac"
install_network_configuration(){
install -d ${D}${systemd_system_unitdir}
diff --git a/meta-ibm/recipes-phosphor/power/phosphor-power_%.bbappend b/meta-ibm/recipes-phosphor/power/phosphor-power_%.bbappend
index c8084b39e..c2f5b2cc5 100644
--- a/meta-ibm/recipes-phosphor/power/phosphor-power_%.bbappend
+++ b/meta-ibm/recipes-phosphor/power/phosphor-power_%.bbappend
@@ -11,6 +11,10 @@ EXTRA_OEMESON_append_mihawk = " -Dpower_sequencer=mihawk-cpld"
DEPENDS_append_ibm-ac-server = " power-sequencer"
DEPENDS_append_p10bmc = " power-sequencer"
+PACKAGECONFIG_append_ibm-ac-server = " monitor"
+PACKAGECONFIG_append_swift = " monitor"
+PACKAGECONFIG_append_mihawk = " monitor"
+
do_install_append(){
install -D ${WORKDIR}/psu.json ${D}${datadir}/phosphor-power/psu.json
}
diff --git a/meta-intel-openbmc/meta-common/recipes-intel/ipmi/intel-ipmi-oem_git.bb b/meta-intel-openbmc/meta-common/recipes-intel/ipmi/intel-ipmi-oem_git.bb
index 3a86b5657..9466b22a8 100755
--- a/meta-intel-openbmc/meta-common/recipes-intel/ipmi/intel-ipmi-oem_git.bb
+++ b/meta-intel-openbmc/meta-common/recipes-intel/ipmi/intel-ipmi-oem_git.bb
@@ -5,7 +5,7 @@ LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=a6a4edad4aed50f39a66d098d74b265b"
SRC_URI = "git://github.com/openbmc/intel-ipmi-oem"
-SRCREV = "01fbd0176c403feb29bf2a9ddd17469d0a27c3ef"
+SRCREV = "fb9f1aa1ea3c944fbba17b51ab26264af1c67a25"
S = "${WORKDIR}/git"
PV = "0.1+git${SRCPV}"
diff --git a/meta-intel-openbmc/meta-common/recipes-phosphor/leds/intel-led-manager-config-native.bb b/meta-intel-openbmc/meta-common/recipes-phosphor/leds/intel-led-manager-config-native.bb
index 20df1185b..0d6bfd367 100644
--- a/meta-intel-openbmc/meta-common/recipes-phosphor/leds/intel-led-manager-config-native.bb
+++ b/meta-intel-openbmc/meta-common/recipes-phosphor/leds/intel-led-manager-config-native.bb
@@ -1,8 +1,8 @@
SUMMARY = "Phosphor LED Group Management for Intel"
PR = "r1"
-inherit native
inherit obmc-phosphor-utils
+inherit native
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
diff --git a/meta-lenovo/meta-hr630/recipes-phosphor/network/phosphor-network_%.bbappend b/meta-lenovo/meta-hr630/recipes-phosphor/network/phosphor-network_%.bbappend
index ac2c4ccd3..7d3b0eddf 100644
--- a/meta-lenovo/meta-hr630/recipes-phosphor/network/phosphor-network_%.bbappend
+++ b/meta-lenovo/meta-hr630/recipes-phosphor/network/phosphor-network_%.bbappend
@@ -1,6 +1,4 @@
#"Copyright (c) 2019-present Lenovo
#Licensed under BSD-3, see COPYING.BSD file for details."
-
-FILESEXTRAPATHS_prepend_hr630 := "${THISDIR}/${PN}:"
-
-EXTRA_OECONF_append_hr630 = "--disable-link-local-autoconfiguration"
+PACKAGECONFIG_remove_hr630 = "default-link-local-autoconf"
+PACKAGECONFIG_remove_hr630 = "default-ipv6-accept-ra"
diff --git a/meta-lenovo/meta-hr855xg2/recipes-phosphor/network/phosphor-network_%.bbappend b/meta-lenovo/meta-hr855xg2/recipes-phosphor/network/phosphor-network_%.bbappend
index 0c4285949..88d07339b 100644
--- a/meta-lenovo/meta-hr855xg2/recipes-phosphor/network/phosphor-network_%.bbappend
+++ b/meta-lenovo/meta-hr855xg2/recipes-phosphor/network/phosphor-network_%.bbappend
@@ -1,6 +1,4 @@
#"Copyright (c) 2019-present Lenovo
#Licensed under BSD-3, see COPYING.BSD file for details."
-
-FILESEXTRAPATHS_prepend_hr855xg2 := "${THISDIR}/${PN}:"
-
-EXTRA_OECONF_append_hr855xg2 = " --disable-link-local-autoconfiguration"
+PACKAGECONFIG_remove_hr855xg2 = "default-link-local-autoconf"
+PACKAGECONFIG_remove_hr855xg2 = "default-ipv6-accept-ra"
diff --git a/meta-nuvoton/MAINTAINERS b/meta-nuvoton/MAINTAINERS
index 3698cf2e6..4207abdfe 100644
--- a/meta-nuvoton/MAINTAINERS
+++ b/meta-nuvoton/MAINTAINERS
@@ -45,3 +45,8 @@ START OF MAINTAINERS LIST
M: Benjamin Fair <benjaminfair@google.com> <benjaminfair!>
R: Fran Hsu <fran.hsu@quantatw.com> <franhsu!>
R: Tomer Maimon <tmaimon77@gmail.com>
+R: Tyrone Ting <kfting@nuvoton.com>
+R: Joseph Liu <kwliu@nuvoton.com>
+R: Samuel Jiang <chyishian.jiang@gmail.com>
+R: Stanley Chu <yschu@nuvoton.com>
+R: George Hung <george.hung@quantatw.com>
diff --git a/meta-nuvoton/recipes-kernel/linux/linux-nuvoton_git.bb b/meta-nuvoton/recipes-kernel/linux/linux-nuvoton_git.bb
index 3a06a3e4d..efaabff37 100644
--- a/meta-nuvoton/recipes-kernel/linux/linux-nuvoton_git.bb
+++ b/meta-nuvoton/recipes-kernel/linux/linux-nuvoton_git.bb
@@ -1,6 +1,6 @@
KBRANCH ?= "dev-5.10"
-LINUX_VERSION ?= "5.10.23"
+LINUX_VERSION ?= "5.10.30"
-SRCREV="395847787d8f955f03bcb350ed9f852346fcda4d"
+SRCREV="4c64c5ceebe8210bb838e74500077a0e944ca825"
require linux-nuvoton.inc
diff --git a/meta-openpower/classes/openpower-software-manager-virtual-pnor.bbclass b/meta-openpower/classes/openpower-software-manager-virtual-pnor.bbclass
index 1e76efa45..375ef681c 100644
--- a/meta-openpower/classes/openpower-software-manager-virtual-pnor.bbclass
+++ b/meta-openpower/classes/openpower-software-manager-virtual-pnor.bbclass
@@ -1,5 +1,9 @@
PACKAGECONFIG_append = " virtual_pnor"
+RDEPENDS_${PN} += " \
+ bash \
+"
+
SYSTEMD_SERVICE_${PN} += " \
obmc-vpnor-updatesymlinks.service \
obmc-vpnor-check-clearvolatile@.service \
diff --git a/meta-openpower/recipes-phosphor/flash/openpower-software-manager_git.bb b/meta-openpower/recipes-phosphor/flash/openpower-software-manager_git.bb
index 051931c31..86005732b 100644
--- a/meta-openpower/recipes-phosphor/flash/openpower-software-manager_git.bb
+++ b/meta-openpower/recipes-phosphor/flash/openpower-software-manager_git.bb
@@ -59,7 +59,7 @@ S = "${WORKDIR}/git"
SRC_URI += "git://github.com/openbmc/openpower-pnor-code-mgmt"
-SRCREV = "a7b1f4caa49390064d0b66de04764547f3aa41c9"
+SRCREV = "067876aa2af9629161c4f367750828aec5e0cd63"
DBUS_SERVICE_${PN} += "org.open_power.Software.Host.Updater.service"
diff --git a/meta-openpower/recipes-phosphor/host/op-proc-control_git.bb b/meta-openpower/recipes-phosphor/host/op-proc-control_git.bb
index 33fe0025c..12ebbea49 100644
--- a/meta-openpower/recipes-phosphor/host/op-proc-control_git.bb
+++ b/meta-openpower/recipes-phosphor/host/op-proc-control_git.bb
@@ -11,7 +11,7 @@ inherit autotools obmc-phosphor-utils pkgconfig
inherit systemd
SRC_URI += "git://github.com/openbmc/openpower-proc-control"
-SRCREV = "854d05ab9d42720b420154d09508778d8504ca20"
+SRCREV = "1b607c35462ae5e2c00406a646aeedbbd26d4631"
DEPENDS += " \
autoconf-archive-native \
diff --git a/meta-openpower/recipes-phosphor/ipmi/openpower-host-ipmi-flash_git.bb b/meta-openpower/recipes-phosphor/ipmi/openpower-host-ipmi-flash_git.bb
index f730d700e..1dfa048dd 100644
--- a/meta-openpower/recipes-phosphor/ipmi/openpower-host-ipmi-flash_git.bb
+++ b/meta-openpower/recipes-phosphor/ipmi/openpower-host-ipmi-flash_git.bb
@@ -21,7 +21,7 @@ HOSTIPMI_PROVIDER_LIBRARY += "libhiomap.so"
S = "${WORKDIR}/git"
SRC_URI += "git://github.com/openbmc/openpower-host-ipmi-flash"
-SRCREV = "80d5bcaf032606a2e4593969d036cc6108b16003"
+SRCREV = "61e18614a64866026b5da05b11e51df2b8653bc4"
FILES_${PN}_append = " ${libdir}/ipmid-providers/lib*${SOLIBS}"
FILES_${PN}_append = " ${libdir}/host-ipmid/lib*${SOLIBS}"
diff --git a/meta-openpower/recipes-phosphor/logging/openpower-hw-diags_git.bb b/meta-openpower/recipes-phosphor/logging/openpower-hw-diags_git.bb
index 4a6cc049f..6202c3621 100644
--- a/meta-openpower/recipes-phosphor/logging/openpower-hw-diags_git.bb
+++ b/meta-openpower/recipes-phosphor/logging/openpower-hw-diags_git.bb
@@ -16,7 +16,7 @@ inherit meson systemd
S = "${WORKDIR}/git"
SRC_URI = "git://github.com/openbmc/openpower-hw-diags"
-SRCREV = "2d5c63d90c14793e333c4eee6d0b8002fdf0c7ba"
+SRCREV = "5c5db65a37d953cb9393f257aab90a0a209d4861"
SYSTEMD_SERVICE_${PN} = "attn_handler.service"
diff --git a/meta-openpower/recipes-phosphor/logging/openpower-libhei_git.bb b/meta-openpower/recipes-phosphor/logging/openpower-libhei_git.bb
index 645155558..59ed91c25 100644
--- a/meta-openpower/recipes-phosphor/logging/openpower-libhei_git.bb
+++ b/meta-openpower/recipes-phosphor/logging/openpower-libhei_git.bb
@@ -8,10 +8,10 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
SRC_URI = "git://github.com/openbmc/openpower-libhei"
PV = "0.1+git${SRCPV}"
-SRCREV = "552992a66a275a046a93922dc14fa551da5a7f05"
+SRCREV = "0a905012d0e90ea32ca651883413cd84b56804d1"
S = "${WORKDIR}/git"
inherit perlnative
-DEPENDS += "libxml2-native libxml-simple-perl-native"
+DEPENDS += "libxml2-native libxml-simple-perl-native libjson-perl-native"
diff --git a/meta-openpower/recipes-phosphor/occ/openpower-occ-control.inc b/meta-openpower/recipes-phosphor/occ/openpower-occ-control.inc
index 3549355e5..cd31b488c 100644
--- a/meta-openpower/recipes-phosphor/occ/openpower-occ-control.inc
+++ b/meta-openpower/recipes-phosphor/occ/openpower-occ-control.inc
@@ -2,4 +2,4 @@ HOMEPAGE = "https://github.com/openbmc/openpower-occ-control"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SRC_URI += "git://github.com/openbmc/openpower-occ-control"
-SRCREV = "a17f6e8c209363268871b3473654c506c749c810"
+SRCREV = "4c1079e71ae3ecbce8a9ddc33ee4e7d623d66568"
diff --git a/meta-openpower/recipes-phosphor/vpd/openpower-fru-vpd.inc b/meta-openpower/recipes-phosphor/vpd/openpower-fru-vpd.inc
index 58192eae1..0d0d53ba7 100644
--- a/meta-openpower/recipes-phosphor/vpd/openpower-fru-vpd.inc
+++ b/meta-openpower/recipes-phosphor/vpd/openpower-fru-vpd.inc
@@ -2,4 +2,4 @@ HOMEPAGE = "https://github.com/openbmc/openpower-vpd-parser"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SRC_URI += "git://github.com/openbmc/openpower-vpd-parser"
-SRCREV = "a504c3ee9e939a0c33d3c37c1cab59614c3ddb46"
+SRCREV = "33c61c2d634c116d9b31b0a3d7c69860e9dbcaab"
diff --git a/meta-phosphor/classes/phosphor-networkd-rev.bbclass b/meta-phosphor/classes/phosphor-networkd-rev.bbclass
deleted file mode 100644
index 94d599fa0..000000000
--- a/meta-phosphor/classes/phosphor-networkd-rev.bbclass
+++ /dev/null
@@ -1,2 +0,0 @@
-SRC_URI += "git://github.com/openbmc/phosphor-networkd"
-SRCREV = "a1b897e2a38b0ead01fb02cc647326c1d1035870"
diff --git a/meta-phosphor/recipes-extended/pam/pam-ipmi_git.bb b/meta-phosphor/recipes-extended/pam/pam-ipmi_git.bb
index 3f282ec70..30bcf6afb 100644
--- a/meta-phosphor/recipes-extended/pam/pam-ipmi_git.bb
+++ b/meta-phosphor/recipes-extended/pam/pam-ipmi_git.bb
@@ -8,7 +8,7 @@ LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
SRC_URI += "git://github.com/openbmc/pam-ipmi"
-SRCREV = "9dbd02268dfc40603e4a4985ba2fdf75b253dbf0"
+SRCREV = "1ea8be7fe6afbb1c5c94e90e49412f6553295be7"
S = "${WORKDIR}/git"
inherit autotools pkgconfig
diff --git a/meta-phosphor/recipes-extended/sdbusplus/sdbusplus-rev.inc b/meta-phosphor/recipes-extended/sdbusplus/sdbusplus-rev.inc
index 7978520e7..d3989866a 100644
--- a/meta-phosphor/recipes-extended/sdbusplus/sdbusplus-rev.inc
+++ b/meta-phosphor/recipes-extended/sdbusplus/sdbusplus-rev.inc
@@ -3,4 +3,4 @@ PR = "r1"
PV = "1.0+git${SRCPV}"
SRC_URI += "git://github.com/openbmc/sdbusplus"
-SRCREV = "533218b426ce2b393248591c234e2bb734fd0c43"
+SRCREV = "8db46a0fb0984f807f7e3b5c611af1ed31b17557"
diff --git a/meta-phosphor/recipes-extended/stdplus/stdplus_git.bb b/meta-phosphor/recipes-extended/stdplus/stdplus_git.bb
index 81141abac..3cc661b01 100644
--- a/meta-phosphor/recipes-extended/stdplus/stdplus_git.bb
+++ b/meta-phosphor/recipes-extended/stdplus/stdplus_git.bb
@@ -17,6 +17,6 @@ EXTRA_OEMESON = " \
"
SRC_URI += "git://github.com/openbmc/stdplus"
-SRCREV = "fd0f551cbdd26229dcdcfde2d6195bdf9f258197"
+SRCREV = "af0e0e81a1d7958bc9c49b0b0edae7e1f190d74e"
S = "${WORKDIR}/git"
diff --git a/meta-phosphor/recipes-graphics/obmc-ikvm/obmc-ikvm_git.bb b/meta-phosphor/recipes-graphics/obmc-ikvm/obmc-ikvm_git.bb
index c8190131c..77400aa3a 100644
--- a/meta-phosphor/recipes-graphics/obmc-ikvm/obmc-ikvm_git.bb
+++ b/meta-phosphor/recipes-graphics/obmc-ikvm/obmc-ikvm_git.bb
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=75859989545e37968a99b631ef42722e"
DEPENDS = " libvncserver systemd sdbusplus phosphor-logging phosphor-dbus-interfaces"
SRC_URI = "git://github.com/openbmc/obmc-ikvm"
-SRCREV = "861337e8ec92767c4c88237ec5db494a2a67fa8d"
+SRCREV = "673ac2eb1117a7d692460f808f1d947495d033db"
PV = "1.0+git${SRCPV}"
diff --git a/meta-phosphor/recipes-phosphor/certificate/phosphor-certificate-manager_git.bb b/meta-phosphor/recipes-phosphor/certificate/phosphor-certificate-manager_git.bb
index e9c62f664..9885240c4 100644
--- a/meta-phosphor/recipes-phosphor/certificate/phosphor-certificate-manager_git.bb
+++ b/meta-phosphor/recipes-phosphor/certificate/phosphor-certificate-manager_git.bb
@@ -9,7 +9,7 @@ LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
SRC_URI = "git://github.com/openbmc/phosphor-certificate-manager"
-SRCREV = "ebd1d8a8294659c788e2822ddee1ca923791c531"
+SRCREV = "811a29e1941db0157f49d2e05491be945f7b2f07"
inherit autotools \
pkgconfig \
diff --git a/meta-phosphor/recipes-phosphor/configuration/entity-manager_git.bb b/meta-phosphor/recipes-phosphor/configuration/entity-manager_git.bb
index f6a6eae47..ee301e26b 100644
--- a/meta-phosphor/recipes-phosphor/configuration/entity-manager_git.bb
+++ b/meta-phosphor/recipes-phosphor/configuration/entity-manager_git.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "Entity Manager provides d-bus configuration data \
and configures system sensors"
SRC_URI = "git://github.com/openbmc/entity-manager.git file://blocklist.json"
-SRCREV = "9fd87e54f5a65f3103b996114e052470dd1afd03"
+SRCREV = "cda147301b0fa7eac99eee3a7565604dbd6f74dd"
PV = "0.1+git${SRCPV}"
LICENSE = "Apache-2.0"
diff --git a/meta-phosphor/recipes-phosphor/console/obmc-console_git.bb b/meta-phosphor/recipes-phosphor/console/obmc-console_git.bb
index 4b6abb5a2..5d6e33351 100644
--- a/meta-phosphor/recipes-phosphor/console/obmc-console_git.bb
+++ b/meta-phosphor/recipes-phosphor/console/obmc-console_git.bb
@@ -26,7 +26,7 @@ DEPENDS += "autoconf-archive-native \
SRC_URI += "git://github.com/openbmc/obmc-console"
SRC_URI += "file://${BPN}.conf"
-SRCREV = "d802b11942abc8a4641976e70d567758ef0bbd58"
+SRCREV = "cabd9db06da91ecf2198c1baaf20360d1424c2f3"
PV = "1.0+git${SRCPV}"
REGISTERED_SERVICES_${PN} += "obmc_console:tcp:2200:"
diff --git a/meta-phosphor/recipes-phosphor/datetime/phosphor-time-manager/xyz.openbmc_project.Time.Manager.service b/meta-phosphor/recipes-phosphor/datetime/phosphor-time-manager/xyz.openbmc_project.Time.Manager.service
deleted file mode 100644
index aaf7abe4d..000000000
--- a/meta-phosphor/recipes-phosphor/datetime/phosphor-time-manager/xyz.openbmc_project.Time.Manager.service
+++ /dev/null
@@ -1,16 +0,0 @@
-[Unit]
-Description=Phosphor Time Manager daemon
-Wants=mapper-wait@-xyz-openbmc_project-time-sync_method.service
-After=mapper-wait@-xyz-openbmc_project-time-sync_method.service
-Wants=mapper-wait@-xyz-openbmc_project-state-host0.service
-After=mapper-wait@-xyz-openbmc_project-state-host0.service
-
-[Service]
-Restart=always
-ExecStart=/usr/bin/env phosphor-timemanager
-SyslogIdentifier=phosphor-timemanager
-Type=dbus
-BusName={BUSNAME}
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta-phosphor/recipes-phosphor/datetime/phosphor-time-manager_git.bb b/meta-phosphor/recipes-phosphor/datetime/phosphor-time-manager_git.bb
index dbe32cc89..503439a77 100644
--- a/meta-phosphor/recipes-phosphor/datetime/phosphor-time-manager_git.bb
+++ b/meta-phosphor/recipes-phosphor/datetime/phosphor-time-manager_git.bb
@@ -5,7 +5,7 @@ PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
-inherit autotools pkgconfig python3native
+inherit meson pkgconfig python3native
inherit obmc-phosphor-dbus-service
DEPENDS += "autoconf-archive-native"
@@ -20,7 +20,7 @@ RDEPENDS_${PN} += "phosphor-network"
RDEPENDS_${PN} += "phosphor-mapper"
SRC_URI += "git://github.com/openbmc/phosphor-time-manager"
-SRCREV = "7252bea64c7f3b03c4d80bb449f82f05a30baa71"
+SRCREV = "9c02e7ec0afff8e9a1cd7ecff6060c85f0ad70b7"
PV = "1.0+git${SRCPV}"
S = "${WORKDIR}/git"
diff --git a/meta-phosphor/recipes-phosphor/dbus/phosphor-dbus-interfaces_git.bb b/meta-phosphor/recipes-phosphor/dbus/phosphor-dbus-interfaces_git.bb
index 86467f6a1..dc4b652db 100644
--- a/meta-phosphor/recipes-phosphor/dbus/phosphor-dbus-interfaces_git.bb
+++ b/meta-phosphor/recipes-phosphor/dbus/phosphor-dbus-interfaces_git.bb
@@ -18,7 +18,7 @@ DEPENDS += " \
"
SRC_URI = "git://github.com/openbmc/phosphor-dbus-interfaces"
-SRCREV = "32fbd5df095c9b0262a013bedae8cef51f1d35fe"
+SRCREV = "33458d4432a8323616622881f314a73cf0b04d97"
# Process OBMC_ORG_YAML_SUBDIRS to create Meson config options.
# ex. xyz/openbmc_project -> -Ddata_xyz_openbmc_project=true
diff --git a/meta-phosphor/recipes-phosphor/dbus/phosphor-dbus-monitor_git.bb b/meta-phosphor/recipes-phosphor/dbus/phosphor-dbus-monitor_git.bb
index 0ac2c1dcc..cc0b5c631 100644
--- a/meta-phosphor/recipes-phosphor/dbus/phosphor-dbus-monitor_git.bb
+++ b/meta-phosphor/recipes-phosphor/dbus/phosphor-dbus-monitor_git.bb
@@ -7,7 +7,7 @@ HOMEPAGE = "http://github.com/openbmc/phosphor-dbus-monitor"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SRC_URI = "git://github.com/openbmc/phosphor-dbus-monitor"
-SRCREV = "f3367686f8139cfb4566d6df205ceff4d2c33463"
+SRCREV = "995060c14f7c017db6ebf3a33d622ff0858b6ba2"
inherit autotools \
pkgconfig \
diff --git a/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector.inc b/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector.inc
index b9d04f800..784e57cdc 100644
--- a/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector.inc
+++ b/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector.inc
@@ -2,4 +2,4 @@ HOMEPAGE = "https://github.com/openbmc/phosphor-debug-collector"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SRC_URI += "git://github.com/openbmc/phosphor-debug-collector"
-SRCREV = "0af74a5e46bfc1b2014cfe54261b2a9926a7cecc"
+SRCREV = "6341919fc147335ce64d838435d4a7b9bc625f62"
diff --git a/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector_git.bb b/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector_git.bb
index 9854f05bc..374d32a07 100644
--- a/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector_git.bb
+++ b/meta-phosphor/recipes-phosphor/dump/phosphor-debug-collector_git.bb
@@ -161,6 +161,7 @@ def install_dreport_user_script(script_path, d):
linkname = "E" + priority + script
destlink = os.path.join(destdir, linkname)
os.symlink(srclink, destlink)
+ file.close()
#Make the links for all the plugins
python install_dreport_user_scripts() {
diff --git a/meta-phosphor/recipes-phosphor/fans/phosphor-fan.inc b/meta-phosphor/recipes-phosphor/fans/phosphor-fan.inc
index 135e0f6f8..7899ef1b1 100644
--- a/meta-phosphor/recipes-phosphor/fans/phosphor-fan.inc
+++ b/meta-phosphor/recipes-phosphor/fans/phosphor-fan.inc
@@ -2,4 +2,4 @@ HOMEPAGE = "https://github.com/openbmc/phosphor-fan-presence"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SRC_URI += "git://github.com/openbmc/phosphor-fan-presence"
-SRCREV = "a3584bd2559e291cf329ff6b4f179ad92b7aeaa0"
+SRCREV = "3efec61c8f0ba530a24ad46e6c10d8827fbf9219"
diff --git a/meta-phosphor/recipes-phosphor/fans/phosphor-pid-control_git.bb b/meta-phosphor/recipes-phosphor/fans/phosphor-pid-control_git.bb
index f4ca8b075..1c7eeb798 100644
--- a/meta-phosphor/recipes-phosphor/fans/phosphor-pid-control_git.bb
+++ b/meta-phosphor/recipes-phosphor/fans/phosphor-pid-control_git.bb
@@ -13,7 +13,7 @@ inherit systemd
S = "${WORKDIR}/git"
SRC_URI = "git://github.com/openbmc/phosphor-pid-control"
-SRCREV = "e39bbe9f03177f1653b33d1ccaf8b2bd0a3f89c6"
+SRCREV = "18d5bb18dcb4ebf7340b0b7a0b39daa887d530ce"
# Each platform will need a service file that starts
# at an appropriate time per system. For instance, if
diff --git a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager.inc b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager.inc
index 2f57adae7..1b11fb137 100644
--- a/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager.inc
+++ b/meta-phosphor/recipes-phosphor/flash/phosphor-software-manager.inc
@@ -2,4 +2,4 @@ HOMEPAGE = "https://github.com/openbmc/phosphor-bmc-code-mgmt"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SRC_URI += "git://github.com/openbmc/phosphor-bmc-code-mgmt"
-SRCREV = "6e9fb1d6ec428d1cc05c78b9b394b214b46c0364"
+SRCREV = "cfb4b2099f840f75aebd4b8ce9a054aa2b62ad2a"
diff --git a/meta-phosphor/recipes-phosphor/initrdscripts/phosphor-mmc-init/mmc-init.sh b/meta-phosphor/recipes-phosphor/initrdscripts/phosphor-mmc-init/mmc-init.sh
index 061757519..3fad5e6fa 100644
--- a/meta-phosphor/recipes-phosphor/initrdscripts/phosphor-mmc-init/mmc-init.sh
+++ b/meta-phosphor/recipes-phosphor/initrdscripts/phosphor-mmc-init/mmc-init.sh
@@ -31,8 +31,7 @@ done
# Move the secondary GPT to the end of the device if needed. Look for the GPT
# header signature "EFI PART" located 512 bytes from the end of the device.
-magic=$(tail -c 512 "${mmcdev}" | hexdump -C -n 8 | grep "EFI PART")
-if test -z "${magic}"; then
+if ! tail -c 512 "${mmcdev}" | hexdump -C -n 8 | grep -q "EFI PART"; then
sgdisk -e "${mmcdev}"
partprobe
fi
@@ -63,4 +62,4 @@ for f in $fslist; do
mount --move $f $rodir/$f
done
-exec chroot $rodir /sbin/init
+exec switch_root $rodir /sbin/init
diff --git a/meta-phosphor/recipes-phosphor/interfaces/bmcweb_git.bb b/meta-phosphor/recipes-phosphor/interfaces/bmcweb_git.bb
index 0e0abb236..ece4493de 100644
--- a/meta-phosphor/recipes-phosphor/interfaces/bmcweb_git.bb
+++ b/meta-phosphor/recipes-phosphor/interfaces/bmcweb_git.bb
@@ -13,7 +13,7 @@ LIC_FILES_CHKSUM = "file://LICENCE;md5=a6a4edad4aed50f39a66d098d74b265b"
SRC_URI = "git://github.com/openbmc/bmcweb.git"
PV = "1.0+git${SRCPV}"
-SRCREV = "1a6258dc985cde406d9098130e4a2d683e82beb2"
+SRCREV = "cb0d27e012456fc954be1649325402819bacb6a7"
S = "${WORKDIR}/git"
diff --git a/meta-phosphor/recipes-phosphor/inventory/phosphor-inventory-manager.inc b/meta-phosphor/recipes-phosphor/inventory/phosphor-inventory-manager.inc
index 79b0fd9fc..2612175a9 100644
--- a/meta-phosphor/recipes-phosphor/inventory/phosphor-inventory-manager.inc
+++ b/meta-phosphor/recipes-phosphor/inventory/phosphor-inventory-manager.inc
@@ -2,4 +2,4 @@ HOMEPAGE = "http://github.com/openbmc/phosphor-inventory-manager"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SRC_URI = "git://github.com/openbmc/phosphor-inventory-manager"
-SRCREV = "ffa2b7ec19d7721295e8a05d202c7c0ca38a912f"
+SRCREV = "ab1f8b520a9fb2248ae6fe1e385b5154620bdd39"
diff --git a/meta-phosphor/recipes-phosphor/ipmi/ipmi-blob-tool_git.bb b/meta-phosphor/recipes-phosphor/ipmi/ipmi-blob-tool_git.bb
index f07a14586..83df346f5 100644
--- a/meta-phosphor/recipes-phosphor/ipmi/ipmi-blob-tool_git.bb
+++ b/meta-phosphor/recipes-phosphor/ipmi/ipmi-blob-tool_git.bb
@@ -14,4 +14,4 @@ EXTRA_OECONF = "--disable-tests"
S = "${WORKDIR}/git"
SRC_URI = "git://github.com/openbmc/ipmi-blob-tool"
-SRCREV = "f9ee95f52be13be8ed11cba0bfec79da6375113a"
+SRCREV = "8da5f72db5a9d3374570cb860f52f35d518ac1c2"
diff --git a/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-blobs_git.bb b/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-blobs_git.bb
index bac96c456..3e2710eb4 100644
--- a/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-blobs_git.bb
+++ b/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-blobs_git.bb
@@ -16,7 +16,7 @@ DEPENDS += "ipmi-blob-tool"
S = "${WORKDIR}/git"
SRC_URI = "git://github.com/openbmc/phosphor-ipmi-blobs"
-SRCREV = "a533a3756f084ab6c5a80375074178440ba7c905"
+SRCREV = "52b75fb3927d46b75e75fd6040577c914476e6f1"
FILES_${PN}_append = " ${libdir}/ipmid-providers/lib*${SOLIBS}"
FILES_${PN}_append = " ${libdir}/host-ipmid/lib*${SOLIBS}"
diff --git a/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-bt_git.bb b/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-bt_git.bb
index e702d2481..6c7c82668 100644
--- a/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-bt_git.bb
+++ b/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-bt_git.bb
@@ -19,4 +19,4 @@ DEPENDS += "systemd"
S = "${WORKDIR}/git"
SRC_URI += "git://github.com/openbmc/btbridge"
-SRCREV="aa5511d28ff9acee4a404c6397d09f5187812ed8"
+SRCREV="0a47d9a057c94438380142ff08e892e4df633d87"
diff --git a/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-flash_git.bb b/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-flash_git.bb
index 67a8aa45e..bb6ae0e6e 100644
--- a/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-flash_git.bb
+++ b/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-flash_git.bb
@@ -48,7 +48,7 @@ EXTRA_OECONF_append = " MAPPED_ADDRESS=${IPMI_FLASH_BMC_ADDRESS}"
S = "${WORKDIR}/git"
SRC_URI = "git://github.com/openbmc/phosphor-ipmi-flash"
-SRCREV = "a3f65698000d366b57d2916eae67518f89c1298b"
+SRCREV = "f450486f238d6402b3ff9680ff50d2987b4f2d3d"
SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE_${PN} += "phosphor-ipmi-flash-bmc-prepare.target \
diff --git a/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-host.inc b/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-host.inc
index 51d2da791..6ac3784ef 100644
--- a/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-host.inc
+++ b/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-host.inc
@@ -2,4 +2,4 @@ HOMEPAGE = "http://github.com/openbmc/phosphor-host-ipmid"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=fa818a259cbed7ce8bc2a22d35a464fc"
SRC_URI += "git://github.com/openbmc/phosphor-host-ipmid"
-SRCREV = "916d4232a432b9f9ee5ddd3d0bbce05c1f3909f6"
+SRCREV = "7a0e5dfcfa49f4a60e2d0ddd9f90c64d177a7f14"
diff --git a/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-host_git.bb b/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-host_git.bb
index 56df13bdd..5e937648e 100644
--- a/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-host_git.bb
+++ b/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-host_git.bb
@@ -21,6 +21,9 @@ def ipmi_whitelists(d):
whitelists = [ '{}-whitelist-native'.format(x) for x in whitelists ]
return ' '.join(whitelists)
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[dynamic-sensors] = "--enable-dynamic-sensors,--disable-dynamic-sensors"
+
DEPENDS += "autoconf-archive-native"
DEPENDS += "nlohmann-json"
DEPENDS += "phosphor-state-manager"
diff --git a/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-kcs_git.bb b/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-kcs_git.bb
index a684c4807..df1cfd76e 100644
--- a/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-kcs_git.bb
+++ b/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-kcs_git.bb
@@ -5,7 +5,7 @@ PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=b1beb00e508e89da1ed2a541934f28c0"
-inherit autotools pkgconfig
+inherit meson pkgconfig
inherit systemd
PV = "1.0+git${SRCPV}"
@@ -20,7 +20,6 @@ RPROVIDES_${PN} += "virtual-obmc-host-ipmi-hw"
RRECOMMENDS_${PN} += "phosphor-ipmi-host"
DEPENDS += " \
- autoconf-archive-native \
systemd \
sdbusplus \
boost \
@@ -30,4 +29,4 @@ DEPENDS += " \
S = "${WORKDIR}/git"
SRC_URI = "git://github.com/openbmc/kcsbridge.git"
-SRCREV = "4a4d1d03d99fabe089e649aa226ad4c61e71684e"
+SRCREV = "4f5ba642295ab2d215e4d2e11e177edacd4a7ff5"
diff --git a/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-net_git.bb b/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-net_git.bb
index 8db745ecc..7377142c0 100644
--- a/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-net_git.bb
+++ b/meta-phosphor/recipes-phosphor/ipmi/phosphor-ipmi-net_git.bb
@@ -18,7 +18,7 @@ DEPENDS += "phosphor-ipmi-host"
RRECOMMENDS_${PN} = "pam-ipmi"
SRC_URI += "git://github.com/openbmc/phosphor-net-ipmid"
-SRCREV = "d4a4bed525f79c39705fa526b20ab663bb2c2069"
+SRCREV = "7b645018775b85a0c61148e592d951841809eef9"
S = "${WORKDIR}/git"
diff --git a/meta-phosphor/recipes-phosphor/leds/phosphor-led-manager.inc b/meta-phosphor/recipes-phosphor/leds/phosphor-led-manager.inc
index d296166c1..ad43e3d7f 100644
--- a/meta-phosphor/recipes-phosphor/leds/phosphor-led-manager.inc
+++ b/meta-phosphor/recipes-phosphor/leds/phosphor-led-manager.inc
@@ -2,4 +2,4 @@ HOMEPAGE = "http://github.com/openbmc/phosphor-led-manager"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SRC_URI += "git://github.com/openbmc/phosphor-led-manager"
-SRCREV = "c105f279ebf2de11ca3941559c91c53e43bc646f"
+SRCREV = "cc9a575399bfcdb42f4ec3b78d840ca06f48ad58"
diff --git a/meta-phosphor/recipes-phosphor/leds/phosphor-led-sysfs_git.bb b/meta-phosphor/recipes-phosphor/leds/phosphor-led-sysfs_git.bb
index 03cdb9636..8e14d766d 100644
--- a/meta-phosphor/recipes-phosphor/leds/phosphor-led-sysfs_git.bb
+++ b/meta-phosphor/recipes-phosphor/leds/phosphor-led-sysfs_git.bb
@@ -19,7 +19,7 @@ DBUS_SERVICE_${PN} += "xyz.openbmc_project.led.controller@.service"
SRC_URI += "git://github.com/openbmc/phosphor-led-sysfs"
SRC_URI += "file://70-leds.rules"
-SRCREV = "a8a275f635ff876186ce5783308e93368f205898"
+SRCREV = "45eba6fc25260a3da68b6c4268af25be28c734c7"
S = "${WORKDIR}/git"
do_install_append() {
diff --git a/meta-phosphor/recipes-phosphor/logging/phosphor-logging/xyz.openbmc_project.Logging.service b/meta-phosphor/recipes-phosphor/logging/phosphor-logging/xyz.openbmc_project.Logging.service
deleted file mode 100644
index 77936c72d..000000000
--- a/meta-phosphor/recipes-phosphor/logging/phosphor-logging/xyz.openbmc_project.Logging.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=Phosphor Log Manager
-
-[Service]
-ExecStart=/usr/bin/env phosphor-log-manager
-SyslogIdentifier=phosphor-log-manager
-Restart=always
-Type=dbus
-BusName={BUSNAME}
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta-phosphor/recipes-phosphor/logging/phosphor-logging/xyz.openbmc_project.Syslog.Config.service b/meta-phosphor/recipes-phosphor/logging/phosphor-logging/xyz.openbmc_project.Syslog.Config.service
deleted file mode 100644
index e1b1d667a..000000000
--- a/meta-phosphor/recipes-phosphor/logging/phosphor-logging/xyz.openbmc_project.Syslog.Config.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=Rsyslog config updater
-
-[Service]
-ExecStart=/usr/bin/env phosphor-rsyslog-conf
-SyslogIdentifier=phosphor-rsyslog-conf
-Restart=always
-Type=dbus
-BusName={BUSNAME}
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta-phosphor/recipes-phosphor/logging/phosphor-logging_git.bb b/meta-phosphor/recipes-phosphor/logging/phosphor-logging_git.bb
index 5fa7f7a03..4e47e373b 100644
--- a/meta-phosphor/recipes-phosphor/logging/phosphor-logging_git.bb
+++ b/meta-phosphor/recipes-phosphor/logging/phosphor-logging_git.bb
@@ -7,13 +7,12 @@ PV = "1.0+git${SRCPV}"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
-inherit autotools pkgconfig
+inherit meson
inherit python3native
inherit obmc-phosphor-dbus-service
inherit phosphor-logging
inherit phosphor-dbus-yaml
-DEPENDS += "autoconf-archive-native"
DEPENDS += "systemd"
DEPENDS += "${PYTHON_PN}-mako-native"
DEPENDS += "${PYTHON_PN}-pyyaml-native"
@@ -39,8 +38,11 @@ ALLOW_EMPTY_${PN} = "1"
PACKAGE_BEFORE_PN += "${LOGGING_PACKAGES}"
SYSTEMD_PACKAGES = "${LOGGING_PACKAGES}"
DBUS_PACKAGES = "${LOGGING_PACKAGES}"
+USERADD_PACKAGES = "${PN}-base"
+GROUPADD_PARAM_${PN}-base = "-r phosphor-logging"
FILES_${PN}-base += " \
+ ${sysconfdir}/dbus-1 \
${bindir}/phosphor-log-manager \
${libdir}/libphosphor_logging.so.* \
"
@@ -52,25 +54,20 @@ FILES_phosphor-rsyslog-config += " \
"
SRC_URI += "git://github.com/openbmc/phosphor-logging"
-SRCREV = "6b3f345b3f265036ec339d097f9d60d12998015d"
+SRCREV = "0b08776a882357d7e96ee072d14ba0940287ca93"
S = "${WORKDIR}/git"
-PACKAGECONFIG ??= "metadata-processing"
-
-PACKAGECONFIG[metadata-processing] = " \
- --enable-metadata-processing, \
- --disable-metadata-processing, , \
- "
+PACKAGECONFIG ??= ""
PACKAGECONFIG[openpower-pels] = " \
- --enable-openpower-pel-extension, \
- --disable-openpower-pel-extension, \
+ -Dopenpower-pel-extension=enabled, \
+ -Dopenpower-pel-extension=disabled, \
nlohmann-json cli11 pldm, \
python3, \
"
-EXTRA_OECONF = " \
- YAML_DIR=${STAGING_DIR_TARGET}${yaml_dir} \
- CALLOUTS_YAML=${STAGING_DIR_NATIVE}${callouts_datadir}/callouts.yaml \
+EXTRA_OEMESON = " \
+ -Dyamldir=${STAGING_DIR_TARGET}${yaml_dir} \
+ -Dcallout_yaml=${STAGING_DIR_NATIVE}${callouts_datadir}/callouts.yaml \
"
diff --git a/meta-phosphor/recipes-phosphor/mboxd/mboxd_git.bb b/meta-phosphor/recipes-phosphor/mboxd/mboxd_git.bb
index b15eb4973..22d38b83f 100644
--- a/meta-phosphor/recipes-phosphor/mboxd/mboxd_git.bb
+++ b/meta-phosphor/recipes-phosphor/mboxd/mboxd_git.bb
@@ -18,7 +18,7 @@ SRC_URI += "git://github.com/openbmc/mboxbridge.git"
SRC_URI += "file://99-aspeed-lpc-ctrl.rules"
-SRCREV="5ff50e3cbd7702aefc185264e4adfb9952040575"
+SRCREV="5c9264daedf1aff690e1957c4578d8395b549cff"
PROVIDES += "mboxctl"
diff --git a/meta-phosphor/recipes-phosphor/mctp/mctp_git.bb b/meta-phosphor/recipes-phosphor/mctp/mctp_git.bb
index ff3c098a9..475d2a284 100644
--- a/meta-phosphor/recipes-phosphor/mctp/mctp_git.bb
+++ b/meta-phosphor/recipes-phosphor/mctp/mctp_git.bb
@@ -11,7 +11,7 @@ LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=0d30807bb7a4f16d36e96b78f9ed8fae"
SRC_URI = "git://github.com/openbmc/libmctp \
file://default"
-SRCREV = "eba19a3b122a39ef2b5dbda49b418a202f78a48d"
+SRCREV = "9f5b47a5844023719b84855cb6c554271c95ee4a"
CONFFILES_${PN} = "${sysconfdir}/default/mctp"
DEPENDS += "autoconf-archive-native \
diff --git a/meta-phosphor/recipes-phosphor/misc/phosphor-misc_git.bb b/meta-phosphor/recipes-phosphor/misc/phosphor-misc_git.bb
index ee5bc4f64..e646d46b7 100644
--- a/meta-phosphor/recipes-phosphor/misc/phosphor-misc_git.bb
+++ b/meta-phosphor/recipes-phosphor/misc/phosphor-misc_git.bb
@@ -6,7 +6,7 @@ PR = "r1"
PV = "1.0+git${SRCPV}"
SRC_URI = "git://github.com/openbmc/phosphor-misc"
-SRCREV = "75d4734fb8bc390d97106544af8f2ffd2d9bf02c"
+SRCREV = "688e9134a83379393ddde6aab0602c64e956153d"
S = "${WORKDIR}/git"
diff --git a/meta-phosphor/recipes-phosphor/network/phosphor-network_git.bb b/meta-phosphor/recipes-phosphor/network/phosphor-network_git.bb
index 72f49a5bc..630dc6bcd 100644
--- a/meta-phosphor/recipes-phosphor/network/phosphor-network_git.bb
+++ b/meta-phosphor/recipes-phosphor/network/phosphor-network_git.bb
@@ -8,9 +8,10 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=fa818a259cbed7ce8bc2a22d35a464fc"
inherit autotools pkgconfig
inherit python3native
-inherit phosphor-networkd-rev
inherit systemd
+SRC_URI += "git://github.com/openbmc/phosphor-networkd"
+SRCREV = "de433b74ec5bce22043ea44c55e83d9be3dc5372"
DEPENDS += "systemd"
DEPENDS += "autoconf-archive-native"
@@ -22,10 +23,14 @@ DEPENDS += "libnl"
DEPENDS += "stdplus"
DEPENDS += "nlohmann-json"
-PACKAGECONFIG ??= "uboot-env"
+PACKAGECONFIG ??= "uboot-env default-link-local-autoconf default-ipv6-accept-ra"
UBOOT_ENV_RDEPENDS = "${@d.getVar('PREFERRED_PROVIDER_u-boot-fw-utils', True) or 'u-boot-fw-utils'}"
PACKAGECONFIG[uboot-env] = "--with-uboot-env,--without-uboot-env,,${UBOOT_ENV_RDEPENDS}"
+PACKAGECONFIG[default-link-local-autoconf] = "--enable-link-local-autoconfiguration,--disable-link-local-autoconfiguration,,"
+PACKAGECONFIG[default-ipv6-accept-ra] = "--enable-ipv6-accept-ra,--disable-ipv6-accept-ra,,"
+PACKAGECONFIG[nic-ethtool] = "--enable-nic-ethtool,--disable-nic-ethtool,,"
+PACKAGECONFIG[sync-mac] = "--enable-sync-mac,--disable-sync-mac,,"
S = "${WORKDIR}/git"
diff --git a/meta-phosphor/recipes-phosphor/network/phosphor-snmp_git.bb b/meta-phosphor/recipes-phosphor/network/phosphor-snmp_git.bb
index 9c17974fc..61c581680 100644
--- a/meta-phosphor/recipes-phosphor/network/phosphor-snmp_git.bb
+++ b/meta-phosphor/recipes-phosphor/network/phosphor-snmp_git.bb
@@ -12,7 +12,7 @@ LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${WORKDIR}/git/LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
SRC_URI += "git://github.com/openbmc/phosphor-snmp"
-SRCREV = "0d5094bf65f5102af6fc896e60a6fc6fbb1770b5"
+SRCREV = "33a34f04ba608276442cdaba2c02d203d09ac75b"
DBUS_SERVICE_${PN} += "xyz.openbmc_project.Network.SNMP.service"
diff --git a/meta-phosphor/recipes-phosphor/pldm/pldm.inc b/meta-phosphor/recipes-phosphor/pldm/pldm.inc
index 3f21adc20..45df9f489 100644
--- a/meta-phosphor/recipes-phosphor/pldm/pldm.inc
+++ b/meta-phosphor/recipes-phosphor/pldm/pldm.inc
@@ -2,4 +2,4 @@ HOMEPAGE = "https://github.com/openbmc/pldm"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
SRC_URI = "git://github.com/openbmc/pldm"
-SRCREV = "a1d27606bc7da14081770ca310012768b933f6e7"
+SRCREV = "144ef2bd474b518de0568d3d70cf5ef33eddf0b8"
diff --git a/meta-phosphor/recipes-phosphor/power/phosphor-power.inc b/meta-phosphor/recipes-phosphor/power/phosphor-power.inc
index f0ab969aa..3a7cd175b 100644
--- a/meta-phosphor/recipes-phosphor/power/phosphor-power.inc
+++ b/meta-phosphor/recipes-phosphor/power/phosphor-power.inc
@@ -2,4 +2,4 @@ HOMEPAGE = "https://github.com/openbmc/phosphor-power"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SRC_URI += "git://github.com/openbmc/phosphor-power"
-SRCREV = "e2f14a5748e2bedc926bdd7a855ff4fb368ae1a5"
+SRCREV = "ce540f3c9fb61f9711726cbbe86f42f55e768d42"
diff --git a/meta-phosphor/recipes-phosphor/power/phosphor-power_git.bb b/meta-phosphor/recipes-phosphor/power/phosphor-power_git.bb
index 012b4939e..a01a99752 100644
--- a/meta-phosphor/recipes-phosphor/power/phosphor-power_git.bb
+++ b/meta-phosphor/recipes-phosphor/power/phosphor-power_git.bb
@@ -41,6 +41,10 @@ DEPENDS += " \
boost \
"
+# The monitor package uses an org.open_power D-Bus interface and so
+# should only build when told to.
+PACKAGECONFIG[monitor] = "-Dsupply-monitor=true, -Dsupply-monitor=false"
+
SEQ_MONITOR_SVC = "pseq-monitor.service"
SEQ_PGOOD_SVC = "pseq-monitor-pgood.service"
PSU_MONITOR_TMPL = "power-supply-monitor@.service"
@@ -51,7 +55,7 @@ REGS_MON_ENA_SVC = "phosphor-regulators-monitor-enable.service"
REGS_MON_DIS_SVC = "phosphor-regulators-monitor-disable.service"
SYSTEMD_SERVICE_${PN}-sequencer = "${SEQ_MONITOR_SVC} ${SEQ_PGOOD_SVC}"
-SYSTEMD_SERVICE_${PN}-monitor = "${PSU_MONITOR_TMPL}"
+SYSTEMD_SERVICE_${PN}-monitor = "${@bb.utils.contains('PACKAGECONFIG', 'monitor', '${PSU_MONITOR_TMPL}', '', d)}"
SYSTEMD_SERVICE_${PN}-psu-monitor = "${PSU_MONITOR_SVC}"
SYSTEMD_SERVICE_${PN}-regulators = "${REGS_SVC} ${REGS_CONF_SVC} ${REGS_MON_ENA_SVC} ${REGS_MON_DIS_SVC}"
diff --git a/meta-phosphor/recipes-phosphor/sensors/dbus-sensors_git.bb b/meta-phosphor/recipes-phosphor/sensors/dbus-sensors_git.bb
index e3ab1f339..ada607648 100644
--- a/meta-phosphor/recipes-phosphor/sensors/dbus-sensors_git.bb
+++ b/meta-phosphor/recipes-phosphor/sensors/dbus-sensors_git.bb
@@ -2,7 +2,7 @@ SUMMARY = "dbus-sensors"
DESCRIPTION = "Dbus Sensor Services Configured from D-Bus"
SRC_URI = "git://github.com/openbmc/dbus-sensors.git"
-SRCREV = "eb0b84de9fd39a74a4a67990de6054b9d9f49833"
+SRCREV = "13b63f8f597d396db8b5bd182ac2e5814d599e2f"
PV = "0.1+git${SRCPV}"
diff --git a/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/70-hwmon.rules b/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/70-hwmon.rules
deleted file mode 100644
index 503b2d002..000000000
--- a/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/70-hwmon.rules
+++ /dev/null
@@ -1,2 +0,0 @@
-SUBSYSTEM=="hwmon", ACTION=="add", RUN="/usr/bin/start_hwmon.sh start %p %E{OF_FULLNAME}"
-SUBSYSTEM=="hwmon", ACTION=="remove", RUN="/usr/bin/start_hwmon.sh stop %p %E{OF_FULLNAME}"
diff --git a/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/70-iio.rules b/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/70-iio.rules
deleted file mode 100644
index 45fb4b0fb..000000000
--- a/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/70-iio.rules
+++ /dev/null
@@ -1,2 +0,0 @@
-SUBSYSTEM=="iio", ACTION=="add", RUN="/usr/bin/start_hwmon.sh start %p %E{OF_FULLNAME}"
-SUBSYSTEM=="iio", ACTION=="remove", RUN="/usr/bin/start_hwmon.sh stop %p %E{OF_FULLNAME}"
diff --git a/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/phosphor-max31785-msl@.service b/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/phosphor-max31785-msl@.service
deleted file mode 100644
index c007f1188..000000000
--- a/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/phosphor-max31785-msl@.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=Phosphor MAX31785 MSL
-ConditionFileNotEmpty={envfiledir}/obmc/hwmon-max31785/%I.conf
-Wants=mapper-wait@-xyz-openbmc_project-inventory.service
-After=mapper-wait@-xyz-openbmc_project-inventory.service
-
-[Service]
-Type=oneshot
-ExecStart=/usr/bin/env max31785-msl -p "${{PATHS}}" -b ${{BUS}} -r ${{REVISION}}
-EnvironmentFile={envfiledir}/obmc/hwmon-max31785/%I.conf
-SyslogIdentifier=max31785-msl
-RemainAfterExit=yes
diff --git a/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/start_hwmon.sh b/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/start_hwmon.sh
deleted file mode 100755
index 2e346d0fb..000000000
--- a/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/start_hwmon.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash
-
-action=$1
-devpath=$2
-of_fullname=$3
-
-#Use of_fullname if it's there, otherwise use devpath.
-
-path=$of_fullname
-if [ -z "$path" ]
-then
- path=$devpath
-
- if [[ "$path" =~ (.*)/hwmon/hwmon[0-9]+$ ]];
- then
- path=${BASH_REMATCH[1]}
- fi
-fi
-
-# Needed to re-do escaping used to avoid bitbake separator conflicts
-path="${path//:/--}"
-# Needed to escape prior to being used as a unit argument
-path="$(systemd-escape "$path")"
-systemctl --no-block "$action" "xyz.openbmc_project.Hwmon@$path.service"
diff --git a/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/xyz.openbmc_project.Hwmon@.service b/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/xyz.openbmc_project.Hwmon@.service
deleted file mode 100644
index b930b5711..000000000
--- a/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon/xyz.openbmc_project.Hwmon@.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=Phosphor Hwmon Poller
-ConditionFileNotEmpty=/etc/default/obmc/hwmon/%I.conf
-After=xyz.openbmc_project.ObjectMapper.service
-
-[Service]
-Restart=on-failure
-ExecStart=/usr/bin/env phosphor-hwmon-readd -o %I
-SyslogIdentifier=phosphor-hwmon-readd
-EnvironmentFile=/etc/default/obmc/hwmon/%I.conf
diff --git a/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon_git.bb b/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon_git.bb
index 4e90977b4..0d163c164 100644
--- a/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon_git.bb
+++ b/meta-phosphor/recipes-phosphor/sensors/phosphor-hwmon_git.bb
@@ -5,10 +5,11 @@ PV = "1.0+git${SRCPV}"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=fa818a259cbed7ce8bc2a22d35a464fc"
-inherit meson pkgconfig
+inherit meson
inherit obmc-phosphor-systemd
PACKAGECONFIG ??= ""
+# Meson configure option to enable/disable max31785-msl
PACKAGECONFIG[max31785-msl] = "-Denable-max31785-msl=true, -Denable-max31785-msl=false"
PACKAGE_BEFORE_PN = "max31785-msl"
@@ -17,7 +18,6 @@ SYSTEMD_PACKAGES = "${PN} max31785-msl"
SYSTEMD_SERVICE_${PN} = "xyz.openbmc_project.Hwmon@.service"
SYSTEMD_SERVICE_max31785-msl = "${@bb.utils.contains('PACKAGECONFIG', 'max31785-msl', 'phosphor-max31785-msl@.service', '', d)}"
-DEPENDS += "autoconf-archive-native"
DEPENDS += " \
sdbusplus \
sdeventplus \
@@ -28,31 +28,68 @@ DEPENDS += " \
cli11 \
"
-
+FILES_${PN} += "${base_libdir}/systemd/system/xyz.openbmc_project.Hwmon@.service"
RDEPENDS_${PN} += "\
bash \
"
RRECOMMENDS_${PN} += "${VIRTUAL-RUNTIME_phosphor-hwmon-config}"
-FILES_max31785-msl = "${bindir}/max31785-msl"
+FILES_max31785-msl = "\
+ ${base_libdir}/systemd/system/phosphor-max31785-msl@.service \
+ ${bindir}/max31785-msl \
+ "
RDEPENDS_max31785-msl = "${VIRTUAL-RUNTIME_base-utils} i2c-tools bash"
SRC_URI += "git://github.com/openbmc/phosphor-hwmon"
-SRC_URI += "file://70-hwmon.rules"
-SRC_URI += "file://70-iio.rules"
-SRC_URI += "file://start_hwmon.sh"
-SRCREV = "73769099e215de68fbb6c82664eb682cacce9f56"
+SRCREV = "e32ce16bb6cc527b2e46b6e90ef7ac47404da173"
S = "${WORKDIR}/git"
-do_install_append() {
+# The following postinstall script iterate over hwmon env files:
+# 1. It adds HW_SENSOR_ID value if not set. The value being calculated
+# as sha256sum.
+# 2. For each hwmon the script generates busconfig ACLs.
+pkg_postinst_${PN}() {
+ hwmon_dir="$D/etc/default/obmc/hwmon"
+ dbus_dir="$D/etc/dbus-1/system.d"
+
+ if [ -n "$D" -a -d "${hwmon_dir}" ]; then
+ # Remove existing links and replace with actual copy of the file to prevent
+ # HW_SENSOR_ID variable override for different sensors' instances.
+ find "${hwmon_dir}" -type l -name \*.conf | while read f; do
+ path="$(readlink -f $f)"
+ rm -f "${f}"
+ cp "${path}" "${f}"
+ done
+
+ find "${hwmon_dir}" -type f -name \*.conf | while read f; do
+ path="/${f##${hwmon_dir}/}"
+ path="${path%.conf}"
+ sensor_id="$(printf "%s" "${path}" | sha256sum | cut -d\ -f1)"
+ acl_file="${dbus_dir}/xyz.openbmc_project.Hwmon-${sensor_id}.conf"
+
+ egrep -q '^HW_SENSOR_ID\s*=' "${f}" ||
+ printf "\n# Sensor id for %s\nHW_SENSOR_ID = \"%s\"\n" "${path}" "${sensor_id}" >> "${f}"
+
+ # Extract HW_SENSOR_ID that could be either quoted or unquoted string.
+ sensor_id="$(sed -n 's,^HW_SENSOR_ID\s*=\s*"\?\(.[^" ]\+\)\s*"\?,\1,p' "${f}")"
- install -d ${D}/${base_libdir}/udev/rules.d/
- install -m 0644 ${WORKDIR}/70-hwmon.rules ${D}/${base_libdir}/udev/rules.d/
- install -m 0644 ${WORKDIR}/70-iio.rules ${D}/${base_libdir}/udev/rules.d/
+ [ ! -f "${acl_file}" ] || continue
+ path_s="$(echo "${path}" | sed 's,\-\-,\\-\\-,g')"
- install -d ${D}${bindir}
- install -m 0755 ${WORKDIR}/start_hwmon.sh ${D}${bindir}
+ cat <<EOF>"${acl_file}"
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+ <policy user="root">
+ <!-- ${path_s} -->
+ <allow own="xyz.openbmc_project.Hwmon-${sensor_id}.Hwmon1"/>
+ <allow send_destination="xyz.openbmc_project.Hwmon-${sensor_id}.Hwmon1"/>
+ </policy>
+</busconfig>
+EOF
+ done
+ fi
}
diff --git a/meta-phosphor/recipes-phosphor/sensors/phosphor-nvme_git.bb b/meta-phosphor/recipes-phosphor/sensors/phosphor-nvme_git.bb
index fb4035406..027de2762 100644
--- a/meta-phosphor/recipes-phosphor/sensors/phosphor-nvme_git.bb
+++ b/meta-phosphor/recipes-phosphor/sensors/phosphor-nvme_git.bb
@@ -15,7 +15,7 @@ DEPENDS += "phosphor-logging"
DEPENDS += "nlohmann-json"
SRC_URI = "git://github.com/openbmc/phosphor-nvme.git;protocol=git"
-SRCREV = "fdffe5c37f0d1feaa90558433f688c3757d2e79a"
+SRCREV = "d5838d1bbb26e9aa7ffc19c4fc57f4ee1237e22a"
S = "${WORKDIR}/git"
SYSTEMD_SERVICE_${PN} = "xyz.openbmc_project.nvme.manager.service"
diff --git a/meta-phosphor/recipes-phosphor/sensors/phosphor-virtual-sensor_git.bb b/meta-phosphor/recipes-phosphor/sensors/phosphor-virtual-sensor_git.bb
index 3eee4dbaa..e70e1b066 100644
--- a/meta-phosphor/recipes-phosphor/sensors/phosphor-virtual-sensor_git.bb
+++ b/meta-phosphor/recipes-phosphor/sensors/phosphor-virtual-sensor_git.bb
@@ -16,7 +16,7 @@ DEPENDS += "nlohmann-json"
DEPENDS += "exprtk"
SRC_URI = "git://github.com/openbmc/phosphor-virtual-sensor.git;protocol=git"
-SRCREV = "a55a907e7220bede5f4c76ca6d99fad2a0c1f00d"
+SRCREV = "543bf6687779c34f0f495eebae7e1819ced27577"
S = "${WORKDIR}/git"
SYSTEMD_SERVICE_${PN} = "phosphor-virtual-sensor.service"
diff --git a/meta-phosphor/recipes-phosphor/settings/phosphor-settings-manager.inc b/meta-phosphor/recipes-phosphor/settings/phosphor-settings-manager.inc
index 77ba32545..2ecfd1fe8 100644
--- a/meta-phosphor/recipes-phosphor/settings/phosphor-settings-manager.inc
+++ b/meta-phosphor/recipes-phosphor/settings/phosphor-settings-manager.inc
@@ -2,4 +2,4 @@ HOMEPAGE = "http://github.com/openbmc/phosphor-settingsd"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=fa818a259cbed7ce8bc2a22d35a464fc"
SRC_URI += "git://github.com/openbmc/phosphor-settingsd"
-SRCREV = "9cca1ef0b1ab359e9745975bfb1aad01fb61f2a2"
+SRCREV = "235526310114281794f37e177eab34456d059c7a"
diff --git a/meta-phosphor/recipes-phosphor/settings/phosphor-settings-manager_git.bb b/meta-phosphor/recipes-phosphor/settings/phosphor-settings-manager_git.bb
index 5fcaa5902..a0773a3a9 100644
--- a/meta-phosphor/recipes-phosphor/settings/phosphor-settings-manager_git.bb
+++ b/meta-phosphor/recipes-phosphor/settings/phosphor-settings-manager_git.bb
@@ -15,6 +15,7 @@ DBUS_SERVICE_${PN} = "xyz.openbmc_project.Settings.service"
DEPENDS += "${PYTHON_PN}-pyyaml-native"
DEPENDS += "${PYTHON_PN}-mako-native"
+DEPENDS += "${PYTHON_PN}-sdbus++-native"
DEPENDS += "autoconf-archive-native"
DEPENDS += "virtual/phosphor-settings-defaults"
DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'obmc-mrw', 'phosphor-settings-read-settings-mrw-native', '', d)}"
diff --git a/meta-phosphor/recipes-phosphor/state/phosphor-state-manager_git.bb b/meta-phosphor/recipes-phosphor/state/phosphor-state-manager_git.bb
index e93f12f7b..5375d7cda 100644
--- a/meta-phosphor/recipes-phosphor/state/phosphor-state-manager_git.bb
+++ b/meta-phosphor/recipes-phosphor/state/phosphor-state-manager_git.bb
@@ -182,6 +182,6 @@ SYSTEMD_LINK_${PN}-obmc-targets += "${@compose_list(d, 'FAN_LINK_FMT', 'OBMC_CHA
SYSTEMD_LINK_${PN}-obmc-targets += "${@compose_list(d, 'QUIESCE_FMT', 'HOST_ERROR_TARGETS', 'OBMC_HOST_INSTANCES')}"
SRC_URI += "git://github.com/openbmc/phosphor-state-manager"
-SRCREV = "aaa2e11057d89feadba173a6fea70325102cce21"
+SRCREV = "cd0ebe867b0592e9386650abc44696161da7bc8a"
S = "${WORKDIR}/git"
diff --git a/meta-phosphor/recipes-phosphor/users/phosphor-user-manager_git.bb b/meta-phosphor/recipes-phosphor/users/phosphor-user-manager_git.bb
index 3708e67ce..5c54a9b65 100644
--- a/meta-phosphor/recipes-phosphor/users/phosphor-user-manager_git.bb
+++ b/meta-phosphor/recipes-phosphor/users/phosphor-user-manager_git.bb
@@ -36,5 +36,5 @@ DBUS_SERVICE_phosphor-ldap = " \
xyz.openbmc_project.LDAP.PrivilegeMapper.service \
"
SRC_URI += "git://github.com/openbmc/phosphor-user-manager"
-SRCREV = "18c1b42c1612e0e8d8f5cd9973bba09b447c7185"
+SRCREV = "a260f187436837aec493baef0a5e7063fe11ee92"
S = "${WORKDIR}/git"
diff --git a/meta-phosphor/recipes-phosphor/watchdog/phosphor-watchdog_git.bb b/meta-phosphor/recipes-phosphor/watchdog/phosphor-watchdog_git.bb
index 7f327d152..c6de6e004 100644
--- a/meta-phosphor/recipes-phosphor/watchdog/phosphor-watchdog_git.bb
+++ b/meta-phosphor/recipes-phosphor/watchdog/phosphor-watchdog_git.bb
@@ -20,7 +20,7 @@ DEPENDS += "phosphor-logging"
DEPENDS += "systemd"
SRC_URI += "git://github.com/openbmc/phosphor-watchdog"
-SRCREV = "18d3e6525cf412af8b940ad1f8e70afd7e907980"
+SRCREV = "459b6c798effc032cf41ae77c45cd63bbaad180b"
S = "${WORKDIR}/git"
EXTRA_OEMESON = " \
diff --git a/meta-phosphor/recipes-phosphor/webui/webui-vue_git.bb b/meta-phosphor/recipes-phosphor/webui/webui-vue_git.bb
index 481f7b6cc..3ffe5024d 100644
--- a/meta-phosphor/recipes-phosphor/webui/webui-vue_git.bb
+++ b/meta-phosphor/recipes-phosphor/webui/webui-vue_git.bb
@@ -6,7 +6,7 @@ LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SRC_URI = "git://github.com/openbmc/webui-vue.git"
-SRCREV = "5ed21f2d1e8b82be699a623bfdef550dfd598dbb"
+SRCREV = "71114feb9a800d42f6eeddfa477077a8ab8e44f6"
S = "${WORKDIR}/git"
DEPENDS_prepend = "nodejs-native "
diff --git a/meta-phosphor/recipes-x86/chassis/x86-power-control_git.bb b/meta-phosphor/recipes-x86/chassis/x86-power-control_git.bb
index 8765dd573..fa695a80f 100755
--- a/meta-phosphor/recipes-x86/chassis/x86-power-control_git.bb
+++ b/meta-phosphor/recipes-x86/chassis/x86-power-control_git.bb
@@ -2,7 +2,7 @@ SUMMARY = "Chassis Power Control service for Intel based platforms"
DESCRIPTION = "Chassis Power Control service for Intel based platforms"
SRC_URI = "git://github.com/openbmc/x86-power-control.git;protocol=ssh"
-SRCREV = "92caa4c639903ef076e2f09e985291781edd927d"
+SRCREV = "afd04f0283bfc4854c0100c56ccf8bc1c10c799a"
PV = "1.0+git${SRCPV}"
diff --git a/meta-quanta/meta-common/recipes-phosphor/health/files/bmc_health_config.json b/meta-quanta/meta-common/recipes-phosphor/health/files/bmc_health_config.json
new file mode 100755
index 000000000..373b5d50f
--- /dev/null
+++ b/meta-quanta/meta-common/recipes-phosphor/health/files/bmc_health_config.json
@@ -0,0 +1,15 @@
+{
+ "CPU" : {
+ "Frequency" : 1,
+ "Window_size": 120
+ },
+ "Memory" : {
+ "Frequency" : 1,
+ "Window_size": 120
+ },
+ "Storage_RW" : {
+ "Path" : "/run/initramfs/rw",
+ "Frequency" : 1,
+ "Window_size": 120
+ }
+}
diff --git a/meta-quanta/meta-common/recipes-phosphor/health/phosphor-health-monitor_%.bbappend b/meta-quanta/meta-common/recipes-phosphor/health/phosphor-health-monitor_%.bbappend
new file mode 100755
index 000000000..1d8bb4ecd
--- /dev/null
+++ b/meta-quanta/meta-common/recipes-phosphor/health/phosphor-health-monitor_%.bbappend
@@ -0,0 +1,9 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+SRC_URI_append = " file://bmc_health_config.json \
+ "
+
+do_install_append() {
+ install -d ${D}/${sysconfdir}/healthMon/
+ install -m 0644 ${WORKDIR}/bmc_health_config.json ${D}/${sysconfdir}/healthMon/
+}
+
diff --git a/meta-quanta/meta-gbs/conf/machine/gbs.conf b/meta-quanta/meta-gbs/conf/machine/gbs.conf
index e9456b5ec..6f54e383b 100644
--- a/meta-quanta/meta-gbs/conf/machine/gbs.conf
+++ b/meta-quanta/meta-gbs/conf/machine/gbs.conf
@@ -10,12 +10,13 @@ MACHINEOVERRIDES .= ":npcm7xx"
require conf/machine/include/npcm7xx.inc
require conf/machine/include/obmc-bsp-common.inc
+SERIAL_CONSOLES = "115200;ttyS0"
GBMC_NCSI_IF_NAME = "eth0"
GBMC_KCS_DEV = "ipmi-kcs1"
# Overwrite flash offsets
-FLASH_ROFS_OFFSET = "7296"
-FLASH_RWFS_OFFSET = "61440"
+FLASH_ROFS_OFFSET = "7168"
+FLASH_RWFS_OFFSET = "62400"
FLASH_SIZE = "65536"
OBMC_MACHINE_FEATURES += "\
@@ -37,6 +38,7 @@ PREFERRED_PROVIDER_virtual/obmc-fan-mgmt = "packagegroup-gbs-apps"
PREFERRED_PROVIDER_virtual/obmc-flash-mgmt = "packagegroup-gbs-apps"
PREFERRED_PROVIDER_virtual/obmc-host-ipmi-hw = "gbmc-kcs-config"
PREFERRED_PROVIDER_virtual/phosphor-led-manager-config-native = "gbs-led-manager-config-native"
+PREFERRED_PROVIDER_virtual/bios-update = "gbs-bios-update"
# Remove unneeded binaries from image
IMAGE_FEATURES_remove = "obmc-fan-control"
diff --git a/meta-quanta/meta-gbs/recipes-bsp/u-boot/u-boot-fw-utils-nuvoton/fw_env.config b/meta-quanta/meta-gbs/recipes-bsp/u-boot/u-boot-fw-utils-nuvoton/fw_env.config
deleted file mode 100644
index 0c384273f..000000000
--- a/meta-quanta/meta-gbs/recipes-bsp/u-boot/u-boot-fw-utils-nuvoton/fw_env.config
+++ /dev/null
@@ -1,24 +0,0 @@
-# Configuration file for fw_(printenv/setenv) utility.
-# Up to two entries are valid, in this case the redundant
-# environment sector is assumed present.
-# Notice, that the "Number of sectors" is not required on NOR and SPI-dataflash.
-# Futhermore, if the Flash sector size is ommitted, this value is assumed to
-# be the same as the Environment size, which is valid for NOR and SPI-dataflash
-
-# NOR example
-# MTD device name Device offset Env. size Flash sector size Number of sectors
-/dev/mtd2 0x0000 0x40000 0x4000
-
-# MTD SPI-dataflash example
-# MTD device name Device offset Env. size Flash sector size Number of sectors
-#/dev/mtd5 0x4200 0x4200
-#/dev/mtd6 0x4200 0x4200
-
-# NAND example
-#/dev/mtd0 0x4000 0x4000 0x20000 2
-
-# Block device example
-#/dev/mmcblk0 0xc0000 0x20000
-
-# VFAT example
-#/boot/uboot.env 0x0000 0x4000
diff --git a/meta-quanta/meta-gbs/recipes-bsp/u-boot/u-boot-fw-utils-nuvoton_%.bbappend b/meta-quanta/meta-gbs/recipes-bsp/u-boot/u-boot-fw-utils-nuvoton_%.bbappend
deleted file mode 100644
index 8b66271a5..000000000
--- a/meta-quanta/meta-gbs/recipes-bsp/u-boot/u-boot-fw-utils-nuvoton_%.bbappend
+++ /dev/null
@@ -1,6 +0,0 @@
-FILESEXTRAPATHS_prepend_gbs := "${THISDIR}/${PN}:"
-SRC_URI_append_gbs = " file://fw_env.config"
-
-do_install_append_gbs() {
- install -m 644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}/fw_env.config
-}
diff --git a/meta-quanta/meta-gbs/recipes-gbs/gbs-bios-update/gbs-bios-update.bb b/meta-quanta/meta-gbs/recipes-gbs/gbs-bios-update/gbs-bios-update.bb
index 32b9d512b..0ea731c35 100644
--- a/meta-quanta/meta-gbs/recipes-gbs/gbs-bios-update/gbs-bios-update.bb
+++ b/meta-quanta/meta-gbs/recipes-gbs/gbs-bios-update/gbs-bios-update.bb
@@ -12,6 +12,9 @@ DEPENDS += "systemd"
DEPENDS += "phosphor-ipmi-flash"
RDEPENDS_${PN} += "bash"
+PROVIDES += "virtual/bios-update"
+RPROVIDES_${PN} += "virtual/bios-update"
+
SRC_URI += " file://bios-verify.sh \
file://bios-update.sh \
file://phosphor-ipmi-flash-bios-verify.service \
diff --git a/meta-quanta/meta-gbs/recipes-gbs/gbs-nvme-pwr-ctrl/gbs-nvme-pwr-ctrl.bb b/meta-quanta/meta-gbs/recipes-gbs/gbs-nvme-pwr-ctrl/gbs-nvme-pwr-ctrl.bb
index a3f0c58d9..21ef52c49 100644
--- a/meta-quanta/meta-gbs/recipes-gbs/gbs-nvme-pwr-ctrl/gbs-nvme-pwr-ctrl.bb
+++ b/meta-quanta/meta-gbs/recipes-gbs/gbs-nvme-pwr-ctrl/gbs-nvme-pwr-ctrl.bb
@@ -12,7 +12,7 @@ DEPENDS += "boost"
DEPENDS += "libgpiod"
SRC_URI = "git://github.com/quanta-bmc/nvme-power-control;protocol=git"
-SRCREV = "f7d2dbd6b48f3992d4a2fb1c0fe2afd746b8428a"
+SRCREV = "3b39e92a8340d8ba1bd40a03af3f5a9049da3bc7"
S = "${WORKDIR}/git"
diff --git a/meta-quanta/meta-gbs/recipes-gbs/gbs-sysinit/gbs-sysinit.bb b/meta-quanta/meta-gbs/recipes-gbs/gbs-sysinit/gbs-sysinit.bb
index 68a9cf181..c9d595a3d 100644
--- a/meta-quanta/meta-gbs/recipes-gbs/gbs-sysinit/gbs-sysinit.bb
+++ b/meta-quanta/meta-gbs/recipes-gbs/gbs-sysinit/gbs-sysinit.bb
@@ -8,8 +8,9 @@ inherit systemd
DEPENDS += "systemd"
RDEPENDS_${PN} += "bash"
-RDEPENDS_${PN} += "libsystemd"
+RDEPENDS_${PN} += "i2c-tools"
RDEPENDS_${PN} += "jq"
+RDEPENDS_${PN} += "libsystemd"
SRC_URI = "file://gbs-sysinit.sh \
file://gbs-gpio-common.sh \
diff --git a/meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/gbs-hotswap-power-cycle.bb b/meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/gbs-hotswap-power-cycle.bb
index 6bf7bb69f..7c28dc28d 100644
--- a/meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/gbs-hotswap-power-cycle.bb
+++ b/meta-quanta/meta-gbs/recipes-gbs/hotswap-power-cycle/gbs-hotswap-power-cycle.bb
@@ -8,6 +8,7 @@ inherit systemd
DEPENDS += "systemd"
RDEPENDS_${PN} += "bash"
+RDEPENDS_${PN} += "libgpiod-tools"
SRC_URI = " file://hotswap-power-cycle.service \
file://tray_powercycle.sh \
diff --git a/meta-quanta/meta-gbs/recipes-google/acpi-power-state/acpi-power-state-daemon/gbs-host-s0-set-failsafe.service b/meta-quanta/meta-gbs/recipes-google/acpi-power-state/acpi-power-state-daemon/gbs-host-s0-set-failsafe.service
index 263cafaa2..ccc6a1c20 100644
--- a/meta-quanta/meta-gbs/recipes-google/acpi-power-state/acpi-power-state-daemon/gbs-host-s0-set-failsafe.service
+++ b/meta-quanta/meta-gbs/recipes-google/acpi-power-state/acpi-power-state-daemon/gbs-host-s0-set-failsafe.service
@@ -8,8 +8,8 @@ After=mapper-wait@-xyz-openbmc_project-settings-fanctrl.service
[Service]
Type=oneshot
-# 230: 90% duty cycle
-ExecStart=/usr/bin/gbs-set-failsafe.sh 230
+# 255: 100% duty cycle
+ExecStart=/usr/bin/gbs-set-failsafe.sh 255
[Install]
WantedBy=host-s0-state.target
diff --git a/meta-quanta/meta-gbs/recipes-kernel/linux/linux-nuvoton/0003-Add-basic-support-for-SB-TSI-sensors.patch b/meta-quanta/meta-gbs/recipes-kernel/linux/linux-nuvoton/0003-Add-basic-support-for-SB-TSI-sensors.patch
deleted file mode 100644
index b690a9813..000000000
--- a/meta-quanta/meta-gbs/recipes-kernel/linux/linux-nuvoton/0003-Add-basic-support-for-SB-TSI-sensors.patch
+++ /dev/null
@@ -1,327 +0,0 @@
-SB Temperature Sensor Interface (SB-TSI) is an SMBus compatible
-interface that reports AMD SoC's Ttcl (normalized temperature),
-and resembles a typical 8-pin remote temperature sensor's I2C interface
-to BMC.
-
-This commit adds basic support using this interface to read CPU
-temperature, and read/write high/low CPU temp thresholds.
-
-To instantiate this driver on an AMD CPU with SB-TSI
-support, the i2c bus number would be the bus connected from the board
-management controller (BMC) to the CPU. The i2c address is specified in
-Section 6.3.1 of the spec [1]: The SB-TSI address is normally 98h for socket 0
-and 90h for socket 1, but it could vary based on hardware address select pins.
-
-[1]: https://www.amd.com/system/files/TechDocs/56255_OSRR.pdf
-
-Test status: tested reading temp1_input, and reading/writing
-temp1_max/min.
-
-Signed-off-by: Kun Yi <kunyi at google.com>
----
- drivers/hwmon/Kconfig | 10 ++
- drivers/hwmon/Makefile | 1 +
- drivers/hwmon/sbtsi_temp.c | 259 +++++++++++++++++++++++++++++++++++++
- 3 files changed, 270 insertions(+)
- create mode 100644 drivers/hwmon/sbtsi_temp.c
-
-diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
-index 05a30832c6ba..9585dcd01d1b 100644
---- a/drivers/hwmon/Kconfig
-+++ b/drivers/hwmon/Kconfig
-@@ -1412,6 +1412,16 @@ config SENSORS_RASPBERRYPI_HWMON
- This driver can also be built as a module. If so, the module
- will be called raspberrypi-hwmon.
-
-+config SENSORS_SBTSI
-+ tristate "Emulated SB-TSI temperature sensor"
-+ depends on I2C
-+ help
-+ If you say yes here you get support for emulated temperature
-+ sensors on AMD SoCs with SB-TSI interface connected to a BMC device.
-+
-+ This driver can also be built as a module. If so, the module will
-+ be called sbtsi_temp.
-+
- config SENSORS_SHT15
- tristate "Sensiron humidity and temperature sensors. SHT15 and compat."
- depends on GPIOLIB || COMPILE_TEST
-diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
-index b0b9c8e57176..cd109f003ce4 100644
---- a/drivers/hwmon/Makefile
-+++ b/drivers/hwmon/Makefile
-@@ -152,6 +152,7 @@ obj-$(CONFIG_SENSORS_POWR1220) += powr1220.o
- obj-$(CONFIG_SENSORS_PWM_FAN) += pwm-fan.o
- obj-$(CONFIG_SENSORS_RASPBERRYPI_HWMON) += raspberrypi-hwmon.o
- obj-$(CONFIG_SENSORS_S3C) += s3c-hwmon.o
-+obj-$(CONFIG_SENSORS_SBTSI) += sbtsi_temp.o
- obj-$(CONFIG_SENSORS_SCH56XX_COMMON)+= sch56xx-common.o
- obj-$(CONFIG_SENSORS_SCH5627) += sch5627.o
- obj-$(CONFIG_SENSORS_SCH5636) += sch5636.o
-diff --git a/drivers/hwmon/sbtsi_temp.c b/drivers/hwmon/sbtsi_temp.c
-new file mode 100644
-index 000000000000..e3ad6a9f7ec1
---- /dev/null
-+++ b/drivers/hwmon/sbtsi_temp.c
-@@ -0,0 +1,259 @@
-+// SPDX-License-Identifier: GPL-2.0-or-later
-+/*
-+ * sbtsi_temp.c - hwmon driver for a SBI Temperature Sensor Interface (SB-TSI)
-+ * compliant AMD SoC temperature device.
-+ *
-+ * Copyright (c) 2020, Google Inc.
-+ * Copyright (c) 2020, Kun Yi <kunyi at google.com>
-+ */
-+
-+#include <linux/err.h>
-+#include <linux/i2c.h>
-+#include <linux/init.h>
-+#include <linux/hwmon.h>
-+#include <linux/module.h>
-+#include <linux/mutex.h>
-+#include <linux/of_device.h>
-+#include <linux/of.h>
-+
-+/*
-+ * SB-TSI registers only support SMBus byte data access. "_INT" registers are
-+ * the integer part of a temperature value or limit, and "_DEC" registers are
-+ * corresponding decimal parts.
-+ */
-+#define SBTSI_REG_TEMP_INT 0x01 /* RO */
-+#define SBTSI_REG_STATUS 0x02 /* RO */
-+#define SBTSI_REG_CONFIG 0x03 /* RO */
-+#define SBTSI_REG_TEMP_HIGH_INT 0x07 /* RW */
-+#define SBTSI_REG_TEMP_LOW_INT 0x08 /* RW */
-+#define SBTSI_REG_TEMP_DEC 0x10 /* RW */
-+#define SBTSI_REG_TEMP_HIGH_DEC 0x13 /* RW */
-+#define SBTSI_REG_TEMP_LOW_DEC 0x14 /* RW */
-+#define SBTSI_REG_REV 0xFF /* RO */
-+
-+#define SBTSI_CONFIG_READ_ORDER_SHIFT 5
-+
-+#define SBTSI_TEMP_MIN 0
-+#define SBTSI_TEMP_MAX 255875
-+#define SBTSI_REV_MAX_VALID_ID 4
-+
-+/* Each client has this additional data */
-+struct sbtsi_data {
-+ struct i2c_client *client;
-+ struct mutex lock;
-+};
-+
-+/*
-+ * From SB-TSI spec: CPU temperature readings and limit registers encode the
-+ * temperature in increments of 0.125 from 0 to 255.875. The "high byte"
-+ * register encodes the base-2 of the integer portion, and the upper 3 bits of
-+ * the "low byte" encode in base-2 the decimal portion.
-+ *
-+ * e.g. INT=0x19, DEC=0x20 represents 25.125 degrees Celsius
-+ *
-+ * Therefore temperature in millidegree Celsius =
-+ * (INT + DEC / 256) * 1000 = (INT * 8 + DEC / 32) * 125
-+ */
-+static inline int sbtsi_reg_to_mc(s32 integer, s32 decimal)
-+{
-+ return ((integer << 3) + (decimal >> 5)) * 125;
-+}
-+
-+/*
-+ * Inversely, given temperature in millidegree Celsius
-+ * INT = (TEMP / 125) / 8
-+ * DEC = ((TEMP / 125) % 8) * 32
-+ * Caller have to make sure temp doesn't exceed 255875, the max valid value.
-+ */
-+static inline void sbtsi_mc_to_reg(s32 temp, u8 *integer, u8 *decimal)
-+{
-+ temp /= 125;
-+ *integer = temp >> 3;
-+ *decimal = (temp & 0x7) << 5;
-+}
-+
-+static int sbtsi_read(struct device *dev, enum hwmon_sensor_types type,
-+ u32 attr, int channel, long *val)
-+{
-+ struct sbtsi_data *data = dev_get_drvdata(dev);
-+ s32 temp_int, temp_dec;
-+ int err, reg_int, reg_dec;
-+ u8 read_order;
-+
-+ if (type != hwmon_temp)
-+ return -EINVAL;
-+
-+ read_order = 0;
-+ switch (attr) {
-+ case hwmon_temp_input:
-+ /*
-+ * ReadOrder bit specifies the reading order of integer and
-+ * decimal part of CPU temp for atomic reads. If bit == 0,
-+ * reading integer part triggers latching of the decimal part,
-+ * so integer part should be read first. If bit == 1, read
-+ * order should be reversed.
-+ */
-+ err = i2c_smbus_read_byte_data(data->client, SBTSI_REG_CONFIG);
-+ if (err < 0)
-+ return err;
-+
-+ read_order = (u8)err & BIT(SBTSI_CONFIG_READ_ORDER_SHIFT);
-+ reg_int = SBTSI_REG_TEMP_INT;
-+ reg_dec = SBTSI_REG_TEMP_DEC;
-+ break;
-+ case hwmon_temp_max:
-+ reg_int = SBTSI_REG_TEMP_HIGH_INT;
-+ reg_dec = SBTSI_REG_TEMP_HIGH_DEC;
-+ break;
-+ case hwmon_temp_min:
-+ reg_int = SBTSI_REG_TEMP_LOW_INT;
-+ reg_dec = SBTSI_REG_TEMP_LOW_DEC;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ if (read_order == 0) {
-+ temp_int = i2c_smbus_read_byte_data(data->client, reg_int);
-+ temp_dec = i2c_smbus_read_byte_data(data->client, reg_dec);
-+ } else {
-+ temp_dec = i2c_smbus_read_byte_data(data->client, reg_dec);
-+ temp_int = i2c_smbus_read_byte_data(data->client, reg_int);
-+ }
-+
-+ if (temp_int < 0)
-+ return temp_int;
-+ if (temp_dec < 0)
-+ return temp_dec;
-+
-+ *val = sbtsi_reg_to_mc(temp_int, temp_dec);
-+
-+ return 0;
-+}
-+
-+static int sbtsi_write(struct device *dev, enum hwmon_sensor_types type,
-+ u32 attr, int channel, long val)
-+{
-+ struct sbtsi_data *data = dev_get_drvdata(dev);
-+ int reg_int, reg_dec, err;
-+ u8 temp_int, temp_dec;
-+
-+ if (type != hwmon_temp)
-+ return -EINVAL;
-+
-+ switch (attr) {
-+ case hwmon_temp_max:
-+ reg_int = SBTSI_REG_TEMP_HIGH_INT;
-+ reg_dec = SBTSI_REG_TEMP_HIGH_DEC;
-+ break;
-+ case hwmon_temp_min:
-+ reg_int = SBTSI_REG_TEMP_LOW_INT;
-+ reg_dec = SBTSI_REG_TEMP_LOW_DEC;
-+ break;
-+ default:
-+ return -EINVAL;
-+ }
-+
-+ val = clamp_val(val, SBTSI_TEMP_MIN, SBTSI_TEMP_MAX);
-+ mutex_lock(&data->lock);
-+ sbtsi_mc_to_reg(val, &temp_int, &temp_dec);
-+ err = i2c_smbus_write_byte_data(data->client, reg_int, temp_int);
-+ if (err)
-+ goto exit;
-+
-+ err = i2c_smbus_write_byte_data(data->client, reg_dec, temp_dec);
-+exit:
-+ mutex_unlock(&data->lock);
-+ return err;
-+}
-+
-+static umode_t sbtsi_is_visible(const void *data,
-+ enum hwmon_sensor_types type,
-+ u32 attr, int channel)
-+{
-+ switch (type) {
-+ case hwmon_temp:
-+ switch (attr) {
-+ case hwmon_temp_input:
-+ return 0444;
-+ case hwmon_temp_min:
-+ return 0644;
-+ case hwmon_temp_max:
-+ return 0644;
-+ }
-+ break;
-+ default:
-+ break;
-+ }
-+ return 0;
-+}
-+
-+static const struct hwmon_channel_info *sbtsi_info[] = {
-+ HWMON_CHANNEL_INFO(chip,
-+ HWMON_C_REGISTER_TZ),
-+ HWMON_CHANNEL_INFO(temp,
-+ HWMON_T_INPUT | HWMON_T_MIN | HWMON_T_MAX),
-+ NULL
-+};
-+
-+static const struct hwmon_ops sbtsi_hwmon_ops = {
-+ .is_visible = sbtsi_is_visible,
-+ .read = sbtsi_read,
-+ .write = sbtsi_write,
-+};
-+
-+static const struct hwmon_chip_info sbtsi_chip_info = {
-+ .ops = &sbtsi_hwmon_ops,
-+ .info = sbtsi_info,
-+};
-+
-+static int sbtsi_probe(struct i2c_client *client,
-+ const struct i2c_device_id *id)
-+{
-+ struct device *dev = &client->dev;
-+ struct device *hwmon_dev;
-+ struct sbtsi_data *data;
-+
-+ data = devm_kzalloc(dev, sizeof(struct sbtsi_data), GFP_KERNEL);
-+ if (!data)
-+ return -ENOMEM;
-+
-+ data->client = client;
-+ mutex_init(&data->lock);
-+
-+ hwmon_dev =
-+ devm_hwmon_device_register_with_info(dev, client->name, data,
-+ &sbtsi_chip_info, NULL);
-+
-+ return PTR_ERR_OR_ZERO(hwmon_dev);
-+}
-+
-+static const struct i2c_device_id sbtsi_id[] = {
-+ {"sbtsi", 0},
-+ {}
-+};
-+MODULE_DEVICE_TABLE(i2c, sbtsi_id);
-+
-+static const struct of_device_id __maybe_unused sbtsi_of_match[] = {
-+ {
-+ .compatible = "amd,sbtsi",
-+ },
-+ { },
-+};
-+MODULE_DEVICE_TABLE(of, sbtsi_of_match);
-+
-+static struct i2c_driver sbtsi_driver = {
-+ .class = I2C_CLASS_HWMON,
-+ .driver = {
-+ .name = "sbtsi",
-+ .of_match_table = of_match_ptr(sbtsi_of_match),
-+ },
-+ .probe = sbtsi_probe,
-+ .id_table = sbtsi_id,
-+};
-+
-+module_i2c_driver(sbtsi_driver);
-+
-+MODULE_AUTHOR("Kun Yi <kunyi at google.com>");
-+MODULE_DESCRIPTION("Hwmon driver for AMD SB-TSI emulated sensor");
-+MODULE_LICENSE("GPL");
---
-2.26.0.292.g33ef6b2f38-goog \ No newline at end of file
diff --git a/meta-quanta/meta-gbs/recipes-kernel/linux/linux-nuvoton/gbs.cfg b/meta-quanta/meta-gbs/recipes-kernel/linux/linux-nuvoton/gbs.cfg
index edd009c47..221910a36 100644
--- a/meta-quanta/meta-gbs/recipes-kernel/linux/linux-nuvoton/gbs.cfg
+++ b/meta-quanta/meta-gbs/recipes-kernel/linux/linux-nuvoton/gbs.cfg
@@ -29,8 +29,10 @@ CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_GPIO=y
CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y // Allow userspace to blink LEDs
-CONFIG_LEDS_TRIGGER_PANIC=y // Blink BMC fault when kernel panics
+# Allow userspace to blink LEDs
+CONFIG_LEDS_TRIGGER_TIMER=y
+# Blink BMC fault when kernel panics
+CONFIG_LEDS_TRIGGER_PANIC=y
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
@@ -108,3 +110,9 @@ CONFIG_MTD_M25P80=y
CONFIG_MUX_MMIO=y
CONFIG_NPCM7XX_LPC_BPC=y
CONFIG_MTD_PARTITIONED_MASTER=y
+
+# Enable phsophor-gpio-keys feature
+CONFIG_INPUT_EVDEV=y
+# Need for CONFIG_KEYBOARD_GPIO Kconfig
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_GPIO=y
diff --git a/meta-quanta/meta-gbs/recipes-kernel/linux/linux-nuvoton_%.bbappend b/meta-quanta/meta-gbs/recipes-kernel/linux/linux-nuvoton_%.bbappend
index 4de4ca900..e5fadfe05 100644
--- a/meta-quanta/meta-gbs/recipes-kernel/linux/linux-nuvoton_%.bbappend
+++ b/meta-quanta/meta-gbs/recipes-kernel/linux/linux-nuvoton_%.bbappend
@@ -1,6 +1,5 @@
FILESEXTRAPATHS_prepend_gbs := "${THISDIR}/linux-nuvoton:"
SRC_URI_append_gbs = " file://gbs.cfg"
-SRC_URI_append_gbs = " file://0003-Add-basic-support-for-SB-TSI-sensors.patch"
SRC_URI_append_gbs = " file://0004-Add-kernel-seven-seg-display-support.patch"
SRC_URI_append_gbs = " file://0004-ben-drivers-misc-Character-device-driver-for-seven-segme.patch"
SRC_URI_append_gbs = " file://0004-ben-drivers-misc-Platform-driver-for-seven-segment-displ.patch"
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/configuration/gbs-yaml-config.bb b/meta-quanta/meta-gbs/recipes-phosphor/configuration/gbs-yaml-config.bb
index cd632e132..167f78df9 100644
--- a/meta-quanta/meta-gbs/recipes-phosphor/configuration/gbs-yaml-config.bb
+++ b/meta-quanta/meta-gbs/recipes-phosphor/configuration/gbs-yaml-config.bb
@@ -9,6 +9,7 @@ SRC_URI = " \
file://gbs-ipmi-fru.yaml \
file://gbs-ipmi-sensors.yaml \
file://gbs-ipmi-fru-properties.yaml \
+ file://gbs-ipmi-inventory-sensors.yaml \
"
S = "${WORKDIR}"
@@ -20,12 +21,15 @@ do_install() {
${D}${datadir}/${BPN}/ipmi-sensors.yaml
install -m 0644 -D gbs-ipmi-fru-properties.yaml \
${D}${datadir}/${BPN}/ipmi-extra-properties.yaml
+ install -m 0644 -D gbs-ipmi-inventory-sensors.yaml \
+ ${D}${datadir}/${BPN}/ipmi-inventory-sensors.yaml
}
FILES_${PN}-dev = " \
${datadir}/${BPN}/ipmi-fru-read.yaml \
${datadir}/${BPN}/ipmi-sensors.yaml \
${datadir}/${BPN}/ipmi-extra-properties.yaml \
+ ${datadir}/${BPN}/ipmi-inventory-sensors.yaml \
"
ALLOW_EMPTY_${PN} = "1"
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/configuration/gbs-yaml-config/gbs-ipmi-inventory-sensors.yaml b/meta-quanta/meta-gbs/recipes-phosphor/configuration/gbs-yaml-config/gbs-ipmi-inventory-sensors.yaml
new file mode 100644
index 000000000..865e4b3b6
--- /dev/null
+++ b/meta-quanta/meta-gbs/recipes-phosphor/configuration/gbs-yaml-config/gbs-ipmi-inventory-sensors.yaml
@@ -0,0 +1,435 @@
+/xyz/openbmc_project/sensors/temperature/i2cool_0:
+ eventReadingType: 1
+ sensorID: 0x10
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/i2cool_1:
+ eventReadingType: 1
+ sensorID: 0x11
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/i2cool_2:
+ eventReadingType: 1
+ sensorID: 0x12
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/powerseq_temp:
+ eventReadingType: 1
+ sensorID: 0x13
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/cputemp:
+ eventReadingType: 1
+ sensorID: 0x14
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/nvme0:
+ eventReadingType: 1
+ sensorID: 0x15
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/nvme1:
+ eventReadingType: 1
+ sensorID: 0x16
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/nvme2:
+ eventReadingType: 1
+ sensorID: 0x17
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/nvme3:
+ eventReadingType: 1
+ sensorID: 0x18
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/nvme4:
+ eventReadingType: 1
+ sensorID: 0x19
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/nvme5:
+ eventReadingType: 1
+ sensorID: 0x1A
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/nvme6:
+ eventReadingType: 1
+ sensorID: 0x1B
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/nvme7:
+ eventReadingType: 1
+ sensorID: 0x1C
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/nvme8:
+ eventReadingType: 1
+ sensorID: 0x1D
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/nvme9:
+ eventReadingType: 1
+ sensorID: 0x1E
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/nvme10:
+ eventReadingType: 1
+ sensorID: 0x1F
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/nvme11:
+ eventReadingType: 1
+ sensorID: 0x20
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/nvme12:
+ eventReadingType: 1
+ sensorID: 0x21
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/nvme13:
+ eventReadingType: 1
+ sensorID: 0x22
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/nvme14:
+ eventReadingType: 1
+ sensorID: 0x23
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/nvme15:
+ eventReadingType: 1
+ sensorID: 0x24
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/vddcr_cpu:
+ eventReadingType: 1
+ sensorID: 0x27
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/vddcr_soc:
+ eventReadingType: 1
+ sensorID: 0x28
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/vddio_abcd:
+ eventReadingType: 1
+ sensorID: 0x29
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/vddio_efgh:
+ eventReadingType: 1
+ sensorID: 0x2A
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/p12v_mobo:
+ eventReadingType: 1
+ sensorID: 0x2B
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/p12v_fan:
+ eventReadingType: 1
+ sensorID: 0x2C
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/temperature/hotswap:
+ eventReadingType: 1
+ sensorID: 0x2D
+ sensorType: 1
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/p1v8_stby:
+ eventReadingType: 1
+ sensorID: 0x30
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/vddcr_soc_stby:
+ eventReadingType: 1
+ sensorID: 0x31
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/p2v5_stby:
+ eventReadingType: 1
+ sensorID: 0x32
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/p1v2_stby:
+ eventReadingType: 1
+ sensorID: 0x33
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/p1v175_stby:
+ eventReadingType: 1
+ sensorID: 0x34
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/p1v8:
+ eventReadingType: 1
+ sensorID: 0x35
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/p3v3:
+ eventReadingType: 1
+ sensorID: 0x36
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/pwrgd_pvpp:
+ eventReadingType: 1
+ sensorID: 0x37
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/pwrgd_pvddio:
+ eventReadingType: 1
+ sensorID: 0x38
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/pwrgd_cpuvr:
+ eventReadingType: 1
+ sensorID: 0x39
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/p3v3_stby:
+ eventReadingType: 1
+ sensorID: 0x3A
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/p5v_stby:
+ eventReadingType: 1
+ sensorID: 0x3B
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/vddcr_cpu_in:
+ eventReadingType: 1
+ sensorID: 0x3C
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/vddcr_cpu_out:
+ eventReadingType: 1
+ sensorID: 0x3D
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/vddcr_soc_in:
+ eventReadingType: 1
+ sensorID: 0x3E
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/vddcr_soc_out:
+ eventReadingType: 1
+ sensorID: 0x3F
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/vddio_abcd_out:
+ eventReadingType: 1
+ sensorID: 0x40
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/vddio_abcd_in:
+ eventReadingType: 1
+ sensorID: 0x41
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/vddio_efgh_out:
+ eventReadingType: 1
+ sensorID: 0x42
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/vddio_efgh_in:
+ eventReadingType: 1
+ sensorID: 0x43
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/hotswap_vin:
+ eventReadingType: 1
+ sensorID: 0x44
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/hotswap_vout:
+ eventReadingType: 1
+ sensorID: 0x45
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/p3v_bat_adc:
+ eventReadingType: 1
+ sensorID: 0x46
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/p12v_mobo_out:
+ eventReadingType: 1
+ sensorID: 0x47
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/p12v_mobo_in:
+ eventReadingType: 1
+ sensorID: 0x48
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/p12v_fan_out:
+ eventReadingType: 1
+ sensorID: 0x49
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/voltage/p12v_fan_in:
+ eventReadingType: 1
+ sensorID: 0x4A
+ sensorType: 2
+ offset: 0xff
+/xyz/openbmc_project/sensors/current/vddcr_cpu_in:
+ eventReadingType: 1
+ sensorID: 0x50
+ sensorType: 3
+ offset: 0xff
+/xyz/openbmc_project/sensors/current/vddcr_cpu_out:
+ eventReadingType: 1
+ sensorID: 0x51
+ sensorType: 3
+ offset: 0xff
+/xyz/openbmc_project/sensors/current/vddcr_soc_in:
+ eventReadingType: 1
+ sensorID: 0x52
+ sensorType: 3
+ offset: 0xff
+/xyz/openbmc_project/sensors/current/vddcr_soc_out:
+ eventReadingType: 1
+ sensorID: 0x53
+ sensorType: 3
+ offset: 0xff
+/xyz/openbmc_project/sensors/current/vddio_abcd_in:
+ eventReadingType: 1
+ sensorID: 0x55
+ sensorType: 3
+ offset: 0xff
+/xyz/openbmc_project/sensors/current/vddio_abcd_out:
+ eventReadingType: 1
+ sensorID: 0x54
+ sensorType: 3
+ offset: 0xff
+/xyz/openbmc_project/sensors/current/vddio_efgh_in:
+ eventReadingType: 1
+ sensorID: 0x57
+ sensorType: 3
+ offset: 0xff
+/xyz/openbmc_project/sensors/current/vddio_efgh_out:
+ eventReadingType: 1
+ sensorID: 0x56
+ sensorType: 3
+ offset: 0xff
+/xyz/openbmc_project/sensors/current/p12v_mobo_in:
+ eventReadingType: 1
+ sensorID: 0x5A
+ sensorType: 3
+ offset: 0xff
+/xyz/openbmc_project/sensors/current/p12v_mobo_out:
+ eventReadingType: 1
+ sensorID: 0x59
+ sensorType: 3
+ offset: 0xff
+/xyz/openbmc_project/sensors/current/p12v_fan_in:
+ eventReadingType: 1
+ sensorID: 0x5C
+ sensorType: 3
+ offset: 0xff
+/xyz/openbmc_project/sensors/current/p12v_fan_out:
+ eventReadingType: 1
+ sensorID: 0x5B
+ sensorType: 3
+ offset: 0xff
+/xyz/openbmc_project/sensors/current/hotswap_iout:
+ eventReadingType: 1
+ sensorID: 0x58
+ sensorType: 3
+ offset: 0xff
+/xyz/openbmc_project/sensors/power/hotswap_pout:
+ eventReadingType: 1
+ sensorID: 0x70
+ sensorType: 0x0B
+ offset: 0xff
+/xyz/openbmc_project/sensors/fan_tach/fan0:
+ eventReadingType: 1
+ sensorID: 0x60
+ sensorType: 4
+ offset: 0xff
+/xyz/openbmc_project/sensors/fan_tach/fan1:
+ eventReadingType: 1
+ sensorID: 0x61
+ sensorType: 4
+ offset: 0xff
+/xyz/openbmc_project/sensors/fan_tach/fb_fan0:
+ eventReadingType: 1
+ sensorID: 0x62
+ sensorType: 4
+ offset: 0xff
+/xyz/openbmc_project/sensors/fan_tach/fb_fan1:
+ eventReadingType: 1
+ sensorID: 0x63
+ sensorType: 4
+ offset: 0xff
+/xyz/openbmc_project/sensors/fan_tach/fb_fan2:
+ eventReadingType: 1
+ sensorID: 0x64
+ sensorType: 4
+ offset: 0xff
+/xyz/openbmc_project/metrics/memory/BmcECC:
+ eventReadingType: 0x6f
+ sensorID: 0xF0
+ sensorType: 0x0C
+ offset: 0x00
+/xyz/openbmc_project/inventory/system/chassis/cable/ss_cab0_prsnt:
+ eventReadingType: 0x6f
+ sensorID: 0xF1
+ sensorType: 0x1B
+ offset: 0x01
+/xyz/openbmc_project/inventory/system/chassis/cable/ss_cab1_prsnt:
+ eventReadingType: 0x6f
+ sensorID: 0xF2
+ sensorType: 0x1B
+ offset: 0x01
+/xyz/openbmc_project/inventory/system/chassis/cable/ss_cab2_prsnt:
+ eventReadingType: 0x6f
+ sensorID: 0xF3
+ sensorType: 0x1B
+ offset: 0x01
+/xyz/openbmc_project/inventory/system/chassis/cable/ss_cab3_prsnt:
+ eventReadingType: 0x6f
+ sensorID: 0xF4
+ sensorType: 0x1B
+ offset: 0x01
+/xyz/openbmc_project/inventory/system/chassis/entity/sata0_prsnt:
+ eventReadingType: 0x6f
+ sensorID: 0xF5
+ sensorType: 0x25
+ offset: 0x01
+/xyz/openbmc_project/inventory/system/chassis/cable/hsbp_cab_prsnt:
+ eventReadingType: 0x6f
+ sensorID: 0xF6
+ sensorType: 0x1B
+ offset: 0x01
+/xyz/openbmc_project/inventory/system/chassis/cable/fanbd_cab_prsnt:
+ eventReadingType: 0x6f
+ sensorID: 0xF7
+ sensorType: 0x1B
+ offset: 0x01
+/xyz/openbmc_project/inventory/system/chassis/cable/bp12v_cab_prsnt:
+ eventReadingType: 0x6f
+ sensorID: 0xF8
+ sensorType: 0x1B
+ offset: 0x01
+/xyz/openbmc_project/inventory/system/chassis/entity/pe_slot0_prsnt:
+ eventReadingType: 0x6f
+ sensorID: 0xF9
+ sensorType: 0x25
+ offset: 0x01
+/xyz/openbmc_project/inventory/system/chassis/entity/pe_slot1_prsnt:
+ eventReadingType: 0x6f
+ sensorID: 0xFA
+ sensorType: 0x25
+ offset: 0x01
+/xyz/openbmc_project/watchdog/host0:
+ eventReadingType: 0x6f
+ sensorID: 0xFB
+ sensorType: 0x23
+ offset: 0x01
+/xyz/openbmc_project/inventory/system/chassis/entity/fans_efuse_pg:
+ eventReadingType: 0x6f
+ sensorID: 0xFC
+ sensorType: 0x25
+ offset: 0x01
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/console/files/80-gbs-nuvoton-sol.rules b/meta-quanta/meta-gbs/recipes-phosphor/console/files/80-gbs-nuvoton-sol.rules
deleted file mode 100644
index 3d0670bc3..000000000
--- a/meta-quanta/meta-gbs/recipes-phosphor/console/files/80-gbs-nuvoton-sol.rules
+++ /dev/null
@@ -1 +0,0 @@
-SUBSYSTEM=="tty", ATTRS{iomem_base}=="0xF0002000", ENV{SYSTEMD_WANTS}="obmc-console@ttyS1" SYMLINK+="ttyS1", TAG+="systemd"
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/console/obmc-console_%.bbappend b/meta-quanta/meta-gbs/recipes-phosphor/console/obmc-console_%.bbappend
index f78e3c22d..142661078 100644
--- a/meta-quanta/meta-gbs/recipes-phosphor/console/obmc-console_%.bbappend
+++ b/meta-quanta/meta-gbs/recipes-phosphor/console/obmc-console_%.bbappend
@@ -1,13 +1,4 @@
FILESEXTRAPATHS_prepend_gbs := "${THISDIR}/files:"
-SRC_URI_append_gbs = " file://80-gbs-nuvoton-sol.rules"
-do_install_append_gbs() {
- install -m 0755 -d ${D}${sysconfdir}/${BPN}
- rm -f ${D}${sysconfdir}/${BPN}/server.ttyVUART0.conf
- install -m 0644 ${WORKDIR}/${BPN}.conf ${D}${sysconfdir}/
- ln -sr ${D}${sysconfdir}/${BPN}.conf ${D}${sysconfdir}/${BPN}/server.ttyS1.conf
-
- install -d ${D}/lib/udev/rules.d
- rm -f ${D}/lib/udev/rules.d/80-obmc-console-uart.rules
- install -m 0644 ${WORKDIR}/80-gbs-nuvoton-sol.rules ${D}/lib/udev/rules.d
-}
+OBMC_CONSOLE_FRONT_TTY_gbs = "ttyS3"
+OBMC_CONSOLE_HOST_TTY_gbs = "ttyS1"
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/dbus/phosphor-dbus-interfaces/0024-Add-the-pre-timeout-interrupt-defined-in-IPMI-spec.patch b/meta-quanta/meta-gbs/recipes-phosphor/dbus/phosphor-dbus-interfaces/0024-Add-the-pre-timeout-interrupt-defined-in-IPMI-spec.patch
deleted file mode 100644
index 67fa59090..000000000
--- a/meta-quanta/meta-gbs/recipes-phosphor/dbus/phosphor-dbus-interfaces/0024-Add-the-pre-timeout-interrupt-defined-in-IPMI-spec.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 6e9a19c43acac7d4254910906329d98d7b59085a Mon Sep 17 00:00:00 2001
-From: Ren Yu <yux.ren@intel.com>
-Date: Fri, 24 May 2019 14:55:10 +0800
-Subject: [PATCH] Add the pre-timeout interrupt defined in IPMI spec
-
-The IPMI watchdog pre-timeout interrupt is used to set the different
-pre-timeout interrupt source. Add them as a dbus property,
-IPMI set/get watchdog commands will use it.
-
-Signed-off-by: Ren Yu <yux.ren@intel.com>
----
- xyz/openbmc_project/State/Watchdog.interface.yaml | 22 ++++++++++++++++++++++
- 1 file changed, 22 insertions(+)
-
-diff --git a/xyz/openbmc_project/State/Watchdog.interface.yaml b/xyz/openbmc_project/State/Watchdog.interface.yaml
-index 2fc47d8..6dfa9b9 100644
---- a/xyz/openbmc_project/State/Watchdog.interface.yaml
-+++ b/xyz/openbmc_project/State/Watchdog.interface.yaml
-@@ -33,6 +33,11 @@ properties:
- description: >
- The action the watchdog should perform when it expires.
- default: 'HardReset'
-+ - name: PreTimeoutInterrupt
-+ type: enum[self.PreTimeoutInterruptAction]
-+ description: >
-+ The BMC generates the selected interrupt before the timer expires.
-+ default: 'None'
- - name: Interval
- type: uint64
- description: >
-@@ -73,6 +78,23 @@ enumerations:
- description: >
- Perform a power cycle of the system.
-
-+ - name: PreTimeoutInterruptAction
-+ description: >
-+ The type of PreTimeout Interrupt.
-+ values:
-+ - name: 'None'
-+ description: >
-+ Do nothing.
-+ - name: 'SMI'
-+ description: >
-+ SMI.
-+ - name: 'NMI'
-+ description: >
-+ NMI / Diagnostic Interrupt.
-+ - name: 'MI'
-+ description: >
-+ Messaging Interrupt.
-+
- - name: TimerUse
- description: >
- The type of timer use.
---
-2.7.4
-
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/dbus/phosphor-dbus-interfaces/0025-Add-PreInterruptFlag-properity-in-DBUS.patch b/meta-quanta/meta-gbs/recipes-phosphor/dbus/phosphor-dbus-interfaces/0025-Add-PreInterruptFlag-properity-in-DBUS.patch
deleted file mode 100644
index d7e66abd2..000000000
--- a/meta-quanta/meta-gbs/recipes-phosphor/dbus/phosphor-dbus-interfaces/0025-Add-PreInterruptFlag-properity-in-DBUS.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From b7c487750c05dcc081219ccdd4ef539beef6aa30 Mon Sep 17 00:00:00 2001
-From: Ren Yu <yux.ren@intel.com>
-Date: Mon, 29 Jul 2019 10:51:12 +0800
-Subject: [PATCH] Add PreInterruptFlag properity in DBUS.
-
-PreTimeoutInterruptOccurFlag in DBUS would be set 'true'
-when watchdog pre-timeout interrupt occurred.
-
-Tested:
-Enable command(raw 0x06 0x31) that get message flag
-can set right bit about watchdog,
-need record PreTimeoutInterruptOccurFlag
-at xyz.openbmmc_project.State.Watchdog when watchdog
-pre-timeout interrupt occurred.
-
-Signed-off-by: Ren Yu <yux.ren@intel.com>
----
- xyz/openbmc_project/State/Watchdog.interface.yaml | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/xyz/openbmc_project/State/Watchdog.interface.yaml b/xyz/openbmc_project/State/Watchdog.interface.yaml
-index bf4cca0..6579368 100644
---- a/xyz/openbmc_project/State/Watchdog.interface.yaml
-+++ b/xyz/openbmc_project/State/Watchdog.interface.yaml
-@@ -59,6 +59,11 @@ properties:
- description: >
- The timer user at the time of expiration.
- default: 'Reserved'
-+ - name: PreTimeoutInterruptOccurFlag
-+ type: boolean
-+ description: >
-+ PreTimeoutInterruptOccurFlag that preTimeoutInterrupt action occurred.
-+ default: false
-
- enumerations:
- - name: Action
---
-2.7.4
-
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend b/meta-quanta/meta-gbs/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend
deleted file mode 100644
index 0b5bff905..000000000
--- a/meta-quanta/meta-gbs/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend
+++ /dev/null
@@ -1,5 +0,0 @@
-FILESEXTRAPATHS_prepend_gbs := "${THISDIR}/${PN}:"
-
-SRC_URI_append_gbs = " file://0024-Add-the-pre-timeout-interrupt-defined-in-IPMI-spec.patch \
- file://0025-Add-PreInterruptFlag-properity-in-DBUS.patch \
- "
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/images/obmc-phosphor-image.bbappend b/meta-quanta/meta-gbs/recipes-phosphor/images/obmc-phosphor-image.bbappend
index 9cea5db15..ff9e512c7 100644
--- a/meta-quanta/meta-gbs/recipes-phosphor/images/obmc-phosphor-image.bbappend
+++ b/meta-quanta/meta-gbs/recipes-phosphor/images/obmc-phosphor-image.bbappend
@@ -22,3 +22,4 @@ OBMC_IMAGE_EXTRA_INSTALL_append_gbs = " gbs-nvme-pwr-ctrl"
OBMC_IMAGE_EXTRA_INSTALL_append_gbs = " read-margin-temp"
OBMC_IMAGE_EXTRA_INSTALL_append_gbs = " phosphor-virtual-sensor"
OBMC_IMAGE_EXTRA_INSTALL_append_gbs = " acpi-power-state-daemon"
+OBMC_IMAGE_EXTRA_INSTALL_append_gbs = " virtual/obmc-gpio-presence"
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/interfaces/bmcweb_%.bbappend b/meta-quanta/meta-gbs/recipes-phosphor/interfaces/bmcweb_%.bbappend
index 87ecf4fa3..2c19a3ead 100755
--- a/meta-quanta/meta-gbs/recipes-phosphor/interfaces/bmcweb_%.bbappend
+++ b/meta-quanta/meta-gbs/recipes-phosphor/interfaces/bmcweb_%.bbappend
@@ -1,3 +1,8 @@
-EXTRA_OECMAKE_append_gbs = " \
- -DBMCWEB_ENABLE_REDFISH_DBUS_LOG_ENTRIES=ON \
+EXTRA_OEMESON_append_gbs = " \
+ -Dredfish-dbus-log=enabled \
+ -Dhttp-body-limit=40 \
"
+
+do_install_append_gbs(){
+ install -d ${D}${localstatedir}/lib/bmcweb
+}
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-flash_%.bbappend b/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-flash_%.bbappend
index 9f4c89026..14f333b81 100644
--- a/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-flash_%.bbappend
+++ b/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-flash_%.bbappend
@@ -1,5 +1,5 @@
NUVOTON_FLASH_PCIMBOX = "0xF0848000"
-EXTRA_OECONF_append_gbs = " --enable-nuvoton-p2a-mbox"
+PACKAGECONFIG_append_gbs = " nuvoton-p2a-mbox"
IPMI_FLASH_BMC_ADDRESS_gbs = "${NUVOTON_FLASH_PCIMBOX}"
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0001-Add-Chassis-State-Transition-interface.patch b/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0001-Add-Chassis-State-Transition-interface.patch
new file mode 100644
index 000000000..74f982b33
--- /dev/null
+++ b/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0001-Add-Chassis-State-Transition-interface.patch
@@ -0,0 +1,79 @@
+From a1f9d797753e32b36e08e7d611ff88b10e9bbad2 Mon Sep 17 00:00:00 2001
+From: "Jason M. Bills" <jason.m.bills@linux.intel.com>
+Date: Thu, 30 Jan 2020 16:18:33 -0800
+Subject: [PATCH 1/3] Add Chassis State Transition interface
+
+This adds the Chassis State Transition interface in preparation
+to support the mapping defined in the design document below.
+
+ref: https://gerrit.openbmc-project.xyz/c/openbmc/docs/+/22358
+
+Tested:
+Ran each IPMI chassis control command to confirm the expected
+behavior:
+ipmitool power on: system is powered-on
+ipmitool power off: system is forced off
+ipmitool power cycle: system is forced off then powered-on
+ipmitool power reset: system is hard reset
+ipmitool power soft: soft power-off requested from system software
+
+Change-Id: I6acfb795a9a33ff5227a5d6e1830774ab732ac0c
+Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
+---
+ chassishandler.cpp | 33 +++++++++++++++++++++++++++++++++
+ 1 file changed, 33 insertions(+)
+
+diff --git a/chassishandler.cpp b/chassishandler.cpp
+index 0d318647..fdbb9fa5 100644
+--- a/chassishandler.cpp
++++ b/chassishandler.cpp
+@@ -31,6 +31,7 @@
+ #include <xyz/openbmc_project/Control/Boot/Mode/server.hpp>
+ #include <xyz/openbmc_project/Control/Boot/Source/server.hpp>
+ #include <xyz/openbmc_project/Control/Power/RestorePolicy/server.hpp>
++#include <xyz/openbmc_project/State/Chassis/server.hpp>
+ #include <xyz/openbmc_project/State/Host/server.hpp>
+ #include <xyz/openbmc_project/State/PowerOnHours/server.hpp>
+
+@@ -865,6 +866,38 @@ int initiate_state_transition(State::Host::Transition transition)
+ return rc;
+ }
+
++//------------------------------------------
++// Calls into Chassis State Manager Dbus object
++//------------------------------------------
++int initiateChassisStateTransition(State::Chassis::Transition transition)
++{
++ // OpenBMC Chassis State Manager dbus framework
++ constexpr auto chassisStatePath = "/xyz/openbmc_project/state/chassis0";
++ constexpr auto chassisStateIntf = "xyz.openbmc_project.State.Chassis";
++
++ auto service =
++ ipmi::getService(*getSdBus(), chassisStateIntf, chassisStatePath);
++
++ // Convert to string equivalent of the passed in transition enum.
++ auto request = State::convertForMessage(transition);
++
++ try
++ {
++ ipmi::setDbusProperty(*getSdBus(), service, chassisStatePath,
++ chassisStateIntf, "RequestedPowerTransition",
++ request);
++ }
++ catch (std::exception& e)
++ {
++ log<level::ERR>(
++ "Failed to initiate transition",
++ entry("EXCEPTION=%s, REQUEST=%s", e.what(), request.c_str()));
++ return -1;
++ }
++
++ return 0;
++}
++
+ //------------------------------------------
+ // Set Enabled property to inform NMI source
+ // handling to trigger a NMI_OUT BSOD.
+--
+2.21.0
+
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0001-Fix-issues-and-support-signed-sensor-values.patch b/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0001-Fix-issues-and-support-signed-sensor-values.patch
new file mode 100644
index 000000000..6d13f9297
--- /dev/null
+++ b/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0001-Fix-issues-and-support-signed-sensor-values.patch
@@ -0,0 +1,169 @@
+From 8ce91a760fca8c945540679c92770f841629e179 Mon Sep 17 00:00:00 2001
+From: Tony Lee <tony.lee@quantatw.com>
+Date: Thu, 31 Oct 2019 17:24:16 +0800
+Subject: [PATCH] Fix issues and support signed sensor values
+
+Sensor will get "disable" when the command "ipmitool sdr elist" is
+executed that if sensorReadingType is 0x6F.
+
+sensor_units_1 is always set to 0 currently. To support the display of
+signed sensor values, we add the attribute "sensorUnits1" to the sensor
+mapping yaml. This attribute can be used to determine whether the
+sensor is signed.
+
+It were making negative values 0 in get::readingData(). Fix the issue
+by using a int32_t and add an overflow check.
+
+Change-Id: I705defcf18805db9ada7d0de0738a59aedab61df
+Signed-off-by: Tony Lee <tony.lee@quantatw.com>
+---
+ include/ipmid/types.hpp | 2 ++
+ scripts/sensor-example.yaml | 2 ++
+ scripts/writesensor.mako.cpp | 2 ++
+ sensordatahandler.cpp | 2 --
+ sensordatahandler.hpp | 31 ++++++++++++++++++++++++++++---
+ sensorhandler.cpp | 5 ++---
+ 6 files changed, 36 insertions(+), 8 deletions(-)
+
+diff --git a/include/ipmid/types.hpp b/include/ipmid/types.hpp
+index e62c8192..bd1fac2b 100644
+--- a/include/ipmid/types.hpp
++++ b/include/ipmid/types.hpp
+@@ -133,6 +133,7 @@ using Unit = std::string;
+ using EntityType = uint8_t;
+ using EntityInst = uint8_t;
+ using SensorName = std::string;
++using SensorUnits1 = uint8_t;
+
+ enum class Mutability
+ {
+@@ -167,6 +168,7 @@ struct Info
+ Exponent exponentR;
+ bool hasScale;
+ Scale scale;
++ SensorUnits1 sensorUnits1;
+ Unit unit;
+ std::function<uint8_t(SetSensorReadingReq&, const Info&)> updateFunc;
+ std::function<GetSensorResponse(const Info&)> getFunc;
+diff --git a/scripts/sensor-example.yaml b/scripts/sensor-example.yaml
+index 9760cd01..bddd2e6d 100644
+--- a/scripts/sensor-example.yaml
++++ b/scripts/sensor-example.yaml
+@@ -112,6 +112,8 @@
+ # Applies for analog sensors, the actual reading value for the sensor is
+ # Value * 10^N
+ scale: -3
++ # Indicate Analog Data Format, Rate unit, Modifier unit and Percentage
++ sensorUnits1 : 0x80
+ mutability: Mutability::Write|Mutability::Read
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+diff --git a/scripts/writesensor.mako.cpp b/scripts/writesensor.mako.cpp
+index 8b268052..813f9404 100644
+--- a/scripts/writesensor.mako.cpp
++++ b/scripts/writesensor.mako.cpp
+@@ -49,6 +49,7 @@ extern const IdInfoMap sensors = {
+ offsetB = sensor.get("offsetB", 0)
+ bExp = sensor.get("bExp", 0)
+ rExp = sensor.get("rExp", 0)
++ sensorUnits1 = sensor.get("sensorUnits1", 0)
+ unit = sensor.get("unit", "")
+ scale = sensor.get("scale", 0)
+ hasScale = "true" if "scale" in sensor.keys() else "false"
+@@ -91,6 +92,7 @@ extern const IdInfoMap sensors = {
+ .exponentR = ${rExp},
+ .hasScale = ${hasScale},
+ .scale = ${scale},
++ .sensorUnits1 = ${sensorUnits1},
+ .unit = "${unit}",
+ .updateFunc = ${updateFunc},
+ .getFunc = ${getFunc},
+diff --git a/sensordatahandler.cpp b/sensordatahandler.cpp
+index 06f5f429..fc74b8f8 100644
+--- a/sensordatahandler.cpp
++++ b/sensordatahandler.cpp
+@@ -7,8 +7,6 @@
+ #include <ipmid/types.hpp>
+ #include <ipmid/utils.hpp>
+ #include <optional>
+-#include <phosphor-logging/elog-errors.hpp>
+-#include <phosphor-logging/log.hpp>
+ #include <sdbusplus/message/types.hpp>
+ #include <xyz/openbmc_project/Common/error.hpp>
+
+diff --git a/sensordatahandler.hpp b/sensordatahandler.hpp
+index 5cad58c5..c48140a3 100644
+--- a/sensordatahandler.hpp
++++ b/sensordatahandler.hpp
+@@ -8,6 +8,8 @@
+ #include <ipmid/api.hpp>
+ #include <ipmid/types.hpp>
+ #include <ipmid/utils.hpp>
++#include <phosphor-logging/elog-errors.hpp>
++#include <phosphor-logging/log.hpp>
+ #include <sdbusplus/message/types.hpp>
+
+ namespace ipmi
+@@ -28,6 +30,7 @@ using ServicePath = std::pair<Path, Service>;
+ using Interfaces = std::vector<Interface>;
+
+ using MapperResponseType = std::map<Path, std::map<Service, Interfaces>>;
++using namespace phosphor::logging;
+
+ /** @brief get the D-Bus service and service path
+ * @param[in] bus - The Dbus bus object
+@@ -225,10 +228,32 @@ GetSensorResponse readingData(const Info& sensorInfo)
+
+ double value = std::get<T>(propValue) *
+ std::pow(10, sensorInfo.scale - sensorInfo.exponentR);
++ int32_t rawData =
++ (value - sensorInfo.scaledOffset) / sensorInfo.coefficientM;
+
+- auto rawData = static_cast<uint8_t>((value - sensorInfo.scaledOffset) /
+- sensorInfo.coefficientM);
+- setReading(rawData, &response);
++ constexpr uint8_t sensorUnitsSignedBits = 2 << 6;
++ constexpr uint8_t signedDataFormat = 0x80;
++ // if sensorUnits1 [7:6] = 10b, sensor is signed
++ if ((sensorInfo.sensorUnits1 & sensorUnitsSignedBits) == signedDataFormat)
++ {
++ if (rawData > std::numeric_limits<int8_t>::max() ||
++ rawData < std::numeric_limits<int8_t>::lowest())
++ {
++ log<level::ERR>("Value out of range");
++ throw std::out_of_range("Value out of range");
++ }
++ setReading(static_cast<int8_t>(rawData), &response);
++ }
++ else
++ {
++ if (rawData > std::numeric_limits<uint8_t>::max() ||
++ rawData < std::numeric_limits<uint8_t>::lowest())
++ {
++ log<level::ERR>("Value out of range");
++ throw std::out_of_range("Value out of range");
++ }
++ setReading(static_cast<uint8_t>(rawData), &response);
++ }
+
+ return response;
+ }
+diff --git a/sensorhandler.cpp b/sensorhandler.cpp
+index 36998715..260331a0 100644
+--- a/sensorhandler.cpp
++++ b/sensorhandler.cpp
+@@ -700,9 +700,8 @@ ipmi_ret_t populate_record_from_dbus(get_sdr::SensorDataFullRecordBody* body,
+ /* Functional sensor case */
+ if (isAnalogSensor(info->propertyInterfaces.begin()->first))
+ {
+-
+- body->sensor_units_1 = 0; // unsigned, no rate, no modifier, not a %
+-
++ body->sensor_units_1 = info->sensorUnits1; // default is 0. unsigned, no
++ // rate, no modifier, not a %
+ /* Unit info */
+ setUnitFieldsForObject(info, body);
+
+--
+2.21.0
+
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0002-Update-Host-State-Transition-function.patch b/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0002-Update-Host-State-Transition-function.patch
new file mode 100644
index 000000000..156327b9c
--- /dev/null
+++ b/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0002-Update-Host-State-Transition-function.patch
@@ -0,0 +1,137 @@
+From 8079e1e39e1953458bd2e59c7f546a3d879558db Mon Sep 17 00:00:00 2001
+From: "Jason M. Bills" <jason.m.bills@linux.intel.com>
+Date: Thu, 30 Jan 2020 16:02:39 -0800
+Subject: [PATCH 2/3] Update Host State Transition function
+
+This updates the Host State Transition function to use the new
+IPMI DBus APIs for transition requests.
+
+Tested:
+Ran each IPMI chassis control command to confirm the expected
+behavior:
+ipmitool power on: system is powered-on
+ipmitool power off: system is forced off
+ipmitool power cycle: system is forced off then powered-on
+ipmitool power reset: system is hard reset
+ipmitool power soft: soft power-off requested from system software
+
+Change-Id: Id2253a9c0060e892bc318dd02a6221ac1a2ae2d9
+Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
+---
+ chassishandler.cpp | 64 +++++++++++++---------------------------------
+ 1 file changed, 18 insertions(+), 46 deletions(-)
+
+diff --git a/chassishandler.cpp b/chassishandler.cpp
+index fdbb9fa5..af9cba72 100644
+--- a/chassishandler.cpp
++++ b/chassishandler.cpp
+@@ -811,59 +811,31 @@ ipmi::RspType<> ipmiSetChassisCap(bool intrusion, bool fpLockout,
+ //------------------------------------------
+ // Calls into Host State Manager Dbus object
+ //------------------------------------------
+-int initiate_state_transition(State::Host::Transition transition)
++int initiateHostStateTransition(State::Host::Transition transition)
+ {
+ // OpenBMC Host State Manager dbus framework
+- constexpr auto HOST_STATE_MANAGER_ROOT = "/xyz/openbmc_project/state/host0";
+- constexpr auto HOST_STATE_MANAGER_IFACE = "xyz.openbmc_project.State.Host";
+- constexpr auto DBUS_PROPERTY_IFACE = "org.freedesktop.DBus.Properties";
+- constexpr auto PROPERTY = "RequestedHostTransition";
++ constexpr auto hostStatePath = "/xyz/openbmc_project/state/host0";
++ constexpr auto hostStateIntf = "xyz.openbmc_project.State.Host";
+
+- // sd_bus error
+- int rc = 0;
+- char* busname = NULL;
+-
+- // SD Bus error report mechanism.
+- sd_bus_error bus_error = SD_BUS_ERROR_NULL;
+-
+- // Gets a hook onto either a SYSTEM or SESSION bus
+- sd_bus* bus_type = ipmid_get_sd_bus_connection();
+- rc = mapper_get_service(bus_type, HOST_STATE_MANAGER_ROOT, &busname);
+- if (rc < 0)
+- {
+- log<level::ERR>(
+- "Failed to get bus name",
+- entry("ERRNO=0x%X, OBJPATH=%s", -rc, HOST_STATE_MANAGER_ROOT));
+- return rc;
+- }
++ auto service = ipmi::getService(*getSdBus(), hostStateIntf, hostStatePath);
+
+ // Convert to string equivalent of the passed in transition enum.
+ auto request = State::convertForMessage(transition);
+
+- rc = sd_bus_call_method(bus_type, // On the system bus
+- busname, // Service to contact
+- HOST_STATE_MANAGER_ROOT, // Object path
+- DBUS_PROPERTY_IFACE, // Interface name
+- "Set", // Method to be called
+- &bus_error, // object to return error
+- nullptr, // Response buffer if any
+- "ssv", // Takes 3 arguments
+- HOST_STATE_MANAGER_IFACE, PROPERTY, "s",
+- request.c_str());
+- if (rc < 0)
++ try
+ {
+- log<level::ERR>("Failed to initiate transition",
+- entry("ERRNO=0x%X, REQUEST=%s", -rc, request.c_str()));
++ ipmi::setDbusProperty(*getSdBus(), service, hostStatePath,
++ hostStateIntf, "RequestedHostTransition",
++ request);
+ }
+- else
++ catch (std::exception& e)
+ {
+- log<level::INFO>("Transition request initiated successfully");
++ log<level::ERR>(
++ "Failed to initiate transition",
++ entry("EXCEPTION=%s, REQUEST=%s", e.what(), request.c_str()));
++ return -1;
+ }
+-
+- sd_bus_error_free(&bus_error);
+- free(busname);
+-
+- return rc;
++ return 0;
+ }
+
+ //------------------------------------------
+@@ -1411,7 +1383,7 @@ ipmi::RspType<> ipmiChassisControl(uint8_t chassisControl)
+ switch (chassisControl)
+ {
+ case CMD_POWER_ON:
+- rc = initiate_state_transition(State::Host::Transition::On);
++ rc = initiateHostStateTransition(State::Host::Transition::On);
+ break;
+ case CMD_POWER_OFF:
+ // This path would be hit in 2 conditions.
+@@ -1439,7 +1411,7 @@ ipmi::RspType<> ipmiChassisControl(uint8_t chassisControl)
+ indicate_no_softoff_needed();
+
+ // Now request the shutdown
+- rc = initiate_state_transition(State::Host::Transition::Off);
++ rc = initiateHostStateTransition(State::Host::Transition::Off);
+ }
+ else
+ {
+@@ -1460,12 +1432,12 @@ ipmi::RspType<> ipmiChassisControl(uint8_t chassisControl)
+ // originating via a soft power off SMS request)
+ indicate_no_softoff_needed();
+
+- rc = initiate_state_transition(State::Host::Transition::Reboot);
++ rc = initiateHostStateTransition(State::Host::Transition::Reboot);
+ break;
+
+ case CMD_SOFT_OFF_VIA_OVER_TEMP:
+ // Request Host State Manager to do a soft power off
+- rc = initiate_state_transition(State::Host::Transition::Off);
++ rc = initiateHostStateTransition(State::Host::Transition::Off);
+ break;
+
+ case CMD_PULSE_DIAGNOSTIC_INTR:
+--
+2.21.0
+
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0003-Update-IPMI-Chassis-Control-command-transition-reque.patch b/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0003-Update-IPMI-Chassis-Control-command-transition-reque.patch
new file mode 100644
index 000000000..271af3f5b
--- /dev/null
+++ b/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0003-Update-IPMI-Chassis-Control-command-transition-reque.patch
@@ -0,0 +1,180 @@
+From 291629d5c3e5bea31925c9d025688897c90eb783 Mon Sep 17 00:00:00 2001
+From: "Jason M. Bills" <jason.m.bills@linux.intel.com>
+Date: Thu, 30 Jan 2020 16:22:24 -0800
+Subject: [PATCH 3/3] Update IPMI Chassis Control command transition requests
+
+This change updates the IPMI Chassis Control command to use the new
+host state transitions and chassis off transition based on the
+mapping in the design document below. This allows each chassis
+control action to more closely follow the behavior defined in the
+IPMI spec.
+
+ref: https://gerrit.openbmc-project.xyz/c/openbmc/docs/+/22358
+
+Tested:
+Ran each IPMI chassis control command to confirm the expected
+behavior:
+ipmitool power on: system is powered-on using Host.On
+ipmitool power off: system is forced off using Chassis.Off
+ipmitool power cycle: system is forced off then powered-on using
+ Host.Reboot
+ipmitool power reset: system is hard reset using Host.ForceWarmReboot
+ipmitool power soft: soft power-off requested from system software
+ using Host.Off
+
+Change-Id: Ieb42722102fde0e51a49dc4aaa3ff227a3394066
+Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
+---
+ chassishandler.cpp | 121 ++-------------------------------------------
+ 1 file changed, 5 insertions(+), 116 deletions(-)
+
+diff --git a/chassishandler.cpp b/chassishandler.cpp
+index af9cba72..663081de 100644
+--- a/chassishandler.cpp
++++ b/chassishandler.cpp
+@@ -1301,76 +1301,6 @@ ipmi::RspType<uint4_t, // Restart Cause
+ return ipmi::responseSuccess(cause.value(), reserved, channel);
+ }
+
+-//-------------------------------------------------------------
+-// Send a command to SoftPowerOff application to stop any timer
+-//-------------------------------------------------------------
+-int stop_soft_off_timer()
+-{
+- constexpr auto iface = "org.freedesktop.DBus.Properties";
+- constexpr auto soft_off_iface = "xyz.openbmc_project.Ipmi.Internal."
+- "SoftPowerOff";
+-
+- constexpr auto property = "ResponseReceived";
+- constexpr auto value = "xyz.openbmc_project.Ipmi.Internal."
+- "SoftPowerOff.HostResponse.HostShutdown";
+-
+- // Get the system bus where most system services are provided.
+- auto bus = ipmid_get_sd_bus_connection();
+-
+- // Get the service name
+- // TODO openbmc/openbmc#1661 - Mapper refactor
+- //
+- // See openbmc/openbmc#1743 for some details but high level summary is that
+- // for now the code will directly call the soft off interface due to a
+- // race condition with mapper usage
+- //
+- // char *busname = nullptr;
+- // auto r = mapper_get_service(bus, SOFTOFF_OBJPATH, &busname);
+- // if (r < 0)
+- //{
+- // fprintf(stderr, "Failed to get %s bus name: %s\n",
+- // SOFTOFF_OBJPATH, -r);
+- // return r;
+- //}
+-
+- // No error object or reply expected.
+- int rc = sd_bus_call_method(bus, SOFTOFF_BUSNAME, SOFTOFF_OBJPATH, iface,
+- "Set", nullptr, nullptr, "ssv", soft_off_iface,
+- property, "s", value);
+- if (rc < 0)
+- {
+- log<level::ERR>("Failed to set property in SoftPowerOff object",
+- entry("ERRNO=0x%X", -rc));
+- }
+-
+- // TODO openbmc/openbmc#1661 - Mapper refactor
+- // free(busname);
+- return rc;
+-}
+-
+-//----------------------------------------------------------------------
+-// Create file to indicate there is no need for softoff notification to host
+-//----------------------------------------------------------------------
+-void indicate_no_softoff_needed()
+-{
+- fs::path path{HOST_INBAND_REQUEST_DIR};
+- if (!fs::is_directory(path))
+- {
+- fs::create_directory(path);
+- }
+-
+- // Add the host instance (default 0 for now) to the file name
+- std::string file{HOST_INBAND_REQUEST_FILE};
+- auto size = std::snprintf(nullptr, 0, file.c_str(), 0);
+- size++; // null
+- std::unique_ptr<char[]> buf(new char[size]);
+- std::snprintf(buf.get(), size, file.c_str(), 0);
+-
+- // Append file name to directory and create it
+- path /= buf.get();
+- std::ofstream(path.c_str());
+-}
+-
+ /** @brief Implementation of chassis control command
+ *
+ * @param - chassisControl command byte
+@@ -1386,60 +1316,19 @@ ipmi::RspType<> ipmiChassisControl(uint8_t chassisControl)
+ rc = initiateHostStateTransition(State::Host::Transition::On);
+ break;
+ case CMD_POWER_OFF:
+- // This path would be hit in 2 conditions.
+- // 1: When user asks for power off using ipmi chassis command 0x04
+- // 2: Host asking for power off post shutting down.
+-
+- // If it's a host requested power off, then need to nudge Softoff
+- // application that it needs to stop the watchdog timer if running.
+- // If it is a user requested power off, then this is not really
+- // needed. But then we need to differentiate between user and host
+- // calling this same command
+-
+- // For now, we are going ahead with trying to nudge the soft off and
+- // interpret the failure to do so as a non softoff case
+- rc = stop_soft_off_timer();
+-
+- // Only request the Off transition if the soft power off
+- // application is not running
+- if (rc < 0)
+- {
+- // First create a file to indicate to the soft off application
+- // that it should not run. Not doing this will result in State
+- // manager doing a default soft power off when asked for power
+- // off.
+- indicate_no_softoff_needed();
+-
+- // Now request the shutdown
+- rc = initiateHostStateTransition(State::Host::Transition::Off);
+- }
+- else
+- {
+- log<level::INFO>("Soft off is running, so let shutdown target "
+- "stop the host");
+- }
++ rc =
++ initiateChassisStateTransition(State::Chassis::Transition::Off);
+ break;
+-
+ case CMD_HARD_RESET:
++ rc = initiateHostStateTransition(
++ State::Host::Transition::ForceWarmReboot);
++ break;
+ case CMD_POWER_CYCLE:
+- // SPEC has a section that says certain implementations can trigger
+- // PowerOn if power is Off when a command to power cycle is
+- // requested
+-
+- // First create a file to indicate to the soft off application
+- // that it should not run since this is a direct user initiated
+- // power reboot request (i.e. a reboot request that is not
+- // originating via a soft power off SMS request)
+- indicate_no_softoff_needed();
+-
+ rc = initiateHostStateTransition(State::Host::Transition::Reboot);
+ break;
+-
+ case CMD_SOFT_OFF_VIA_OVER_TEMP:
+- // Request Host State Manager to do a soft power off
+ rc = initiateHostStateTransition(State::Host::Transition::Off);
+ break;
+-
+ case CMD_PULSE_DIAGNOSTIC_INTR:
+ rc = setNmiProperty(true);
+ break;
+--
+2.21.0
+
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0063-Save-the-pre-timeout-interrupt-in-dbus-property.patch b/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0063-Save-the-pre-timeout-interrupt-in-dbus-property.patch
deleted file mode 100644
index d815cde72..000000000
--- a/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host/0063-Save-the-pre-timeout-interrupt-in-dbus-property.patch
+++ /dev/null
@@ -1,138 +0,0 @@
-From 9deb72959477700216326c033c930236e58f965f Mon Sep 17 00:00:00 2001
-From: Ren Yu <yux.ren@intel.com>
-Date: Tue, 28 May 2019 17:11:17 +0800
-Subject: [PATCH] Save the pre-timeout interrupt in dbus property
-
-Get the watchdog pre-timeout interrupt value from ipmi watchdog set command,
-and store it into dbus property.
-
-Tested:
-Config IPMI watchdog: BIOS FRB2 Power Cycle after 1 seconds:
-ipmitool raw 0x06 0x24 0x01 0x13 0x0 0x2 0xa 0x00
-Start watchdog:
-Ipmitool mc watchdog reset
-Check the watchdog pre-timeout interrupt in below:
-https://BMCIP/redfish/v1/Systems/system/LogServices/EventLog/Entries
-
-Signed-off-by: Ren Yu <yux.ren@intel.com>
-
----
- app/watchdog.cpp | 47 ++++++++++++++++++++++++++++++++++++++++
- app/watchdog_service.cpp | 6 +++++
- app/watchdog_service.hpp | 9 ++++++++
- 3 files changed, 62 insertions(+)
-
-diff --git a/app/watchdog.cpp b/app/watchdog.cpp
-index 03c373e..cb0b1fd 100644
---- a/app/watchdog.cpp
-+++ b/app/watchdog.cpp
-@@ -80,6 +80,7 @@ ipmi::RspType<> ipmiAppResetWatchdogTimer()
-
- static constexpr uint8_t wd_dont_stop = 0x1 << 6;
- static constexpr uint8_t wd_timeout_action_mask = 0x3;
-+static constexpr uint8_t wdPreTimeoutInterruptMask = 0x3;
-
- static constexpr uint8_t wdTimerUseResTimer1 = 0x0;
- static constexpr uint8_t wdTimerUseResTimer2 = 0x6;
-@@ -127,6 +128,45 @@ WatchdogService::Action ipmiActionToWdAction(IpmiAction ipmi_action)
- }
- }
-
-+enum class IpmiPreTimeoutInterrupt : uint8_t
-+{
-+ None = 0x0,
-+ SMI = 0x1,
-+ NMI = 0x2,
-+ MI = 0x3,
-+};
-+/** @brief Converts an IPMI Watchdog PreTimeoutInterrupt to DBUS defined action
-+ * @param[in] ipmi_action The IPMI Watchdog PreTimeoutInterrupt
-+ * @return The Watchdog PreTimeoutInterrupt that the ipmi_action maps to
-+ */
-+WatchdogService::PreTimeoutInterruptAction ipmiPreTimeoutInterruptToWdAction(
-+ IpmiPreTimeoutInterrupt ipmiPreTimeOutInterrupt)
-+{
-+ switch (ipmiPreTimeOutInterrupt)
-+ {
-+ case IpmiPreTimeoutInterrupt::None:
-+ {
-+ return WatchdogService::PreTimeoutInterruptAction::None;
-+ }
-+ case IpmiPreTimeoutInterrupt::SMI:
-+ {
-+ return WatchdogService::PreTimeoutInterruptAction::SMI;
-+ }
-+ case IpmiPreTimeoutInterrupt::NMI:
-+ {
-+ return WatchdogService::PreTimeoutInterruptAction::NMI;
-+ }
-+ case IpmiPreTimeoutInterrupt::MI:
-+ {
-+ return WatchdogService::PreTimeoutInterruptAction::MI;
-+ }
-+ default:
-+ {
-+ throw std::domain_error("IPMI PreTimeoutInterrupt is invalid");
-+ }
-+ }
-+}
-+
- enum class IpmiTimerUse : uint8_t
- {
- Reserved = 0x0,
-@@ -250,6 +290,13 @@ ipmi::RspType<>
- // Mark as initialized so that future resets behave correctly
- wd_service.setInitialized(true);
-
-+ // pretimeOutAction
-+ const auto ipmiPreTimeoutInterrupt =
-+ static_cast<IpmiPreTimeoutInterrupt>(wdPreTimeoutInterruptMask &
-+ (static_cast<uint8_t>(preTimeoutInterrupt)));
-+ wd_service.setPreTimeoutInterrupt(
-+ ipmiPreTimeoutInterruptToWdAction(ipmiPreTimeoutInterrupt));
-+
- lastCallSuccessful = true;
- return ipmi::responseSuccess();
- }
-diff --git a/app/watchdog_service.cpp b/app/watchdog_service.cpp
-index 3534e89..4df1ab6 100644
---- a/app/watchdog_service.cpp
-+++ b/app/watchdog_service.cpp
-@@ -198,3 +198,9 @@ void WatchdogService::setInterval(uint64_t interval)
- {
- setProperty("Interval", interval);
- }
-+
-+void WatchdogService::setPreTimeoutInterrupt(
-+ PreTimeoutInterruptAction preTimeoutInterrupt)
-+{
-+ setProperty("PreTimeoutInterrupt", convertForMessage(preTimeoutInterrupt));
-+}
-\ No newline at end of file
-diff --git a/app/watchdog_service.hpp b/app/watchdog_service.hpp
-index 141bdb7..32b7461 100644
---- a/app/watchdog_service.hpp
-+++ b/app/watchdog_service.hpp
-@@ -15,6 +15,8 @@ class WatchdogService
-
- using Action =
- sdbusplus::xyz::openbmc_project::State::server::Watchdog::Action;
-+ using PreTimeoutInterruptAction = sdbusplus::xyz::openbmc_project::State::
-+ server::Watchdog::PreTimeoutInterruptAction;
- using TimerUse =
- sdbusplus::xyz::openbmc_project::State::server::Watchdog::TimerUse;
-
-@@ -92,6 +94,13 @@ class WatchdogService
- */
- void setInterval(uint64_t interval);
-
-+ /** @brief Sets the value of the PreTimeoutInterrupt property on the host
-+ * watchdog
-+ *
-+ * @param[in] PreTimeoutInterrupt - The new PreTimeoutInterrupt value
-+ */
-+ void setPreTimeoutInterrupt(PreTimeoutInterruptAction preTimeoutInterrupt);
-+
- private:
- /** @brief sdbusplus handle */
- sdbusplus::bus::bus bus;
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend b/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend
index bf2986c47..af5fb1356 100644
--- a/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend
+++ b/meta-quanta/meta-gbs/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend
@@ -1,18 +1,19 @@
DEPENDS_append_gbs = " gbs-yaml-config"
-SRC_URI_remove_gbs = "git://github.com/openbmc/phosphor-host-ipmid"
-SRC_URI_prepend_gbs = "git://github.com/quanta-bmc/phosphor-host-ipmid.git"
-
-SRCREV_gbs = "257ea262809c52e51f1f592e047d27125f0273b3"
-
FILESEXTRAPATHS_prepend_gbs := "${THISDIR}/${PN}:"
SRC_URI_append_gbs = " file://gbs-ipmid-whitelist.conf \
- file://0063-Save-the-pre-timeout-interrupt-in-dbus-property.patch \
+ file://0001-Add-Chassis-State-Transition-interface.patch \
+ file://0002-Update-Host-State-Transition-function.patch \
+ file://0003-Update-IPMI-Chassis-Control-command-transition-reque.patch \
+ file://0001-Fix-issues-and-support-signed-sensor-values.patch \
"
WHITELIST_CONF_gbs = "${WORKDIR}/gbs-ipmid-whitelist.conf"
-EXTRA_OECONF_append_gbs = " --with-journal-sel \
+EXTRA_OECONF_append_gbs = " \
SENSOR_YAML_GEN=${STAGING_DIR_HOST}${datadir}/gbs-yaml-config/ipmi-sensors.yaml \
FRU_YAML_GEN=${STAGING_DIR_HOST}${datadir}/gbs-yaml-config/ipmi-fru-read.yaml \
+ INVSENSOR_YAML_GEN=${STAGING_DIR_HOST}${datadir}/gbs-yaml-config/ipmi-inventory-sensors.yaml \
"
+
+RDEPENDS_${PN}_remove_gbs = "clear-once"
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/leds/phosphor-led-manager_%.bbappend b/meta-quanta/meta-gbs/recipes-phosphor/leds/phosphor-led-manager_%.bbappend
index a7ec24f41..e887b1935 100644
--- a/meta-quanta/meta-gbs/recipes-phosphor/leds/phosphor-led-manager_%.bbappend
+++ b/meta-quanta/meta-gbs/recipes-phosphor/leds/phosphor-led-manager_%.bbappend
@@ -1,5 +1,16 @@
FILESEXTRAPATHS_prepend_gbs := "${THISDIR}/${PN}:"
SRC_URI_append_gbs = " file://service-override.conf"
-SYSTEMD_OVERRIDE_${PN}-ledmanager_append_gbs = " \
- service-override.conf:xyz.openbmc_project.LED.GroupManager.service.d/service-override.conf"
+FILES_${PN}_append_gbs = " ${systemd_system_unitdir}/xyz.openbmc_project.LED.GroupManager.service.d/service-override.conf"
+
+do_compile_prepend_gbs() {
+ install -m 0644 ${STAGING_DATADIR_NATIVE}/${PN}/led.yaml ${S}
+}
+
+do_install_append_gbs() {
+ rm -rf ${D}${datadir}/${PN}/*
+
+ install -d ${D}${systemd_system_unitdir}/xyz.openbmc_project.LED.GroupManager.service.d
+ install -D -m 0644 ${WORKDIR}/service-override.conf \
+ ${D}${systemd_system_unitdir}/xyz.openbmc_project.LED.GroupManager.service.d/
+}
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/logging/phosphor-logging_%.bbappend b/meta-quanta/meta-gbs/recipes-phosphor/logging/phosphor-logging_%.bbappend
new file mode 100644
index 000000000..264423933
--- /dev/null
+++ b/meta-quanta/meta-gbs/recipes-phosphor/logging/phosphor-logging_%.bbappend
@@ -0,0 +1 @@
+EXTRA_OEMESON_append_gbs = " -Derror_info_cap=256"
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/network/phosphor-network_%.bbappend b/meta-quanta/meta-gbs/recipes-phosphor/network/phosphor-network_%.bbappend
index 49959cc0e..9caf61e66 100644
--- a/meta-quanta/meta-gbs/recipes-phosphor/network/phosphor-network_%.bbappend
+++ b/meta-quanta/meta-gbs/recipes-phosphor/network/phosphor-network_%.bbappend
@@ -1 +1,2 @@
-EXTRA_OECONF_append_gbs = " --enable-nic-ethtool=yes"
+PACKAGECONFIG_append_gbs = " nic-ethtool"
+PACKAGECONFIG_remove_gbs = "uboot-env"
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/packagegroups/packagegroup-gbs-apps.bb b/meta-quanta/meta-gbs/recipes-phosphor/packagegroups/packagegroup-gbs-apps.bb
index 4c1bb123c..20c81ad94 100644
--- a/meta-quanta/meta-gbs/recipes-phosphor/packagegroups/packagegroup-gbs-apps.bb
+++ b/meta-quanta/meta-gbs/recipes-phosphor/packagegroups/packagegroup-gbs-apps.bb
@@ -32,5 +32,5 @@ SUMMARY_${PN}-flash = "GBS Flash"
RDEPENDS_${PN}-flash = " \
phosphor-ipmi-flash \
gbs-bmc-update \
- gbs-bios-update \
+ virtual/bios-update \
"
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/packagegroups/packagegroup-obmc-apps%.bbappend b/meta-quanta/meta-gbs/recipes-phosphor/packagegroups/packagegroup-obmc-apps%.bbappend
index 935c3cebb..73e9b0aa4 100644
--- a/meta-quanta/meta-gbs/recipes-phosphor/packagegroups/packagegroup-obmc-apps%.bbappend
+++ b/meta-quanta/meta-gbs/recipes-phosphor/packagegroups/packagegroup-obmc-apps%.bbappend
@@ -1,2 +1,2 @@
-RDEPENDS_${PN}-extras_remove_gbs = "obmc-ikvm"
-RDEPENDS_${PN}-inventory_append_gbs = " virtual/obmc-gpio-presence"
+RDEPENDS_${PN}-fru-ipmi_remove_gbs = "fru-device"
+RDEPENDS_${PN}-ikvm_remove_gbs = "obmc-ikvm"
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/sel-logger/phosphor-sel-logger_%.bbappend b/meta-quanta/meta-gbs/recipes-phosphor/sel-logger/phosphor-sel-logger_%.bbappend
index e0f8e08aa..5c28b0435 100644
--- a/meta-quanta/meta-gbs/recipes-phosphor/sel-logger/phosphor-sel-logger_%.bbappend
+++ b/meta-quanta/meta-gbs/recipes-phosphor/sel-logger/phosphor-sel-logger_%.bbappend
@@ -1,5 +1,4 @@
-SRC_URI_gbs := "git://github.com/quanta-bmc/phosphor-sel-logger.git"
-SRCREV_gbs := "6ded68355db28958836aedb40c0d4780d84d2b43"
-
# Enable threshold monitoring
-EXTRA_OECMAKE_append_gbs = "-DSEL_LOGGER_MONITOR_THRESHOLD_EVENTS=ON"
+EXTRA_OECMAKE_append_gbs = "-DSEL_LOGGER_SEND_TO_LOGGING_SERVICE=ON \
+ -DSEL_LOGGER_MONITOR_THRESHOLD_ALARM_EVENTS=ON \
+ "
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon/0001-lev-add-poweron-monitor-feature.patch b/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon/0002-Add-power-on-monitor-mechanism.patch
index c279e0b81..a3718ea2a 100644
--- a/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon/0001-lev-add-poweron-monitor-feature.patch
+++ b/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon/0002-Add-power-on-monitor-mechanism.patch
@@ -1,44 +1,33 @@
-From 2cea5d289b278db4468b16bf6b64102655811fd0 Mon Sep 17 00:00:00 2001
-From: Eddielu <Eddie.Lu@quantatw.com>
-Date: Mon, 27 Jul 2020 20:30:22 +0800
-Subject: [PATCH] Update lev-add-poweron-monitor-feature patch.
+From 5cea18ba476c0cb6ea622be50a09ead00cd47b14 Mon Sep 17 00:00:00 2001
+From: Ivan Li <rli11@lenovo.com>
+Date: Wed, 25 Dec 2019 17:05:00 +0800
+Subject: [PATCH] Add power on monitor mechanism
+Summary:
+1. Add "PWRONMON" attribute in sensor configuration file to determine whether it's power-on monitor sensor or not. (i.e. PWRONMON_temp1 = "ON")
+2. Watching "CurrentHostState" property and then use it to turn on/off threshold alert for power-on monitor sensors.
+
+Test Plan:
+Check if there is any abnormal threshold events occurred in power off state or during power transition
+
+Signed-off-by: Ivan Li <rli11@lenovo.com>
+Change-Id: I76d3a664153141d94636e0011f3a48e4f6dee922
---
- Makefile.am | 2 ++
- mainloop.cpp | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- sensor.cpp | 11 ++++++-
- sensor.hpp | 13 ++++++++
- thresholds.hpp | 2 --
- 5 files changed, 127 insertions(+), 3 deletions(-)
+ mainloop.cpp | 102 +++++++++++++++++++++++++++++++++++++++++++++++++
+ sensor.cpp | 11 +++++-
+ sensor.hpp | 13 +++++++
+ thresholds.hpp | 24 ------------
+ 4 files changed, 125 insertions(+), 25 deletions(-)
-diff --git a/Makefile.am b/Makefile.am
-index 706a6cc..c620fa4 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -46,6 +46,7 @@ libhwmon_la_LIBADD = \
- $(SDEVENTPLUS_LIBS) \
- $(PHOSPHOR_DBUS_INTERFACES_LIBS) \
- $(PHOSPHOR_LOGGING_LIBS) \
-+ $(PTHREAD_LIBS) \
- $(GPIOPLUS_LIBS) \
- $(STDPLUS_LIBS) \
- $(CODE_COVERAGE_LIBS) \
-@@ -55,6 +56,7 @@ libhwmon_la_CXXFLAGS = \
- $(SDEVENTPLUS_CFLAGS) \
- $(PHOSPHOR_DBUS_INTERFACES_CFLAGS) \
- $(PHOSPHOR_LOGGING_CFLAGS) \
-+ $(PTHREAD_CFLAGS) \
- $(STDPLUS_CFLAGS) \
- $(CODE_COVERAGE_CXXFLAGS)
-
diff --git a/mainloop.cpp b/mainloop.cpp
-index 3e7e0bf..4789a80 100644
+index 29dc26a..5e27a30 100644
--- a/mainloop.cpp
+++ b/mainloop.cpp
-@@ -41,6 +41,12 @@
+@@ -42,6 +42,13 @@
#include <string>
#include <unordered_set>
#include <xyz/openbmc_project/Sensor/Device/error.hpp>
++#include <boost/asio/io_service.hpp>
+#include <boost/container/flat_map.hpp>
+#include <boost/algorithm/string/predicate.hpp>
+#include <sdbusplus/asio/connection.hpp>
@@ -48,9 +37,9 @@ index 3e7e0bf..4789a80 100644
using namespace phosphor::logging;
-@@ -76,6 +82,12 @@ decltype(
- Thresholds<CriticalObject>::alarmHi) Thresholds<CriticalObject>::alarmHi =
- &CriticalObject::criticalAlarmHigh;
+@@ -110,6 +117,12 @@ decltype(Thresholds<CriticalObject>::deassertHighSignal)
+ Thresholds<CriticalObject>::deassertHighSignal =
+ &CriticalObject::criticalHighAlarmDeasserted;
+static std::unique_ptr<phosphor::Timer> cacheTimer = nullptr;
+static std::unique_ptr<sdbusplus::bus::match::match> powerMatch = nullptr;
@@ -61,7 +50,7 @@ index 3e7e0bf..4789a80 100644
void updateSensorInterfaces(InterfaceMap& ifaces, SensorValueType value)
{
for (auto& iface : ifaces)
-@@ -103,6 +115,84 @@ void updateSensorInterfaces(InterfaceMap& ifaces, SensorValueType value)
+@@ -137,6 +150,83 @@ void updateSensorInterfaces(InterfaceMap& ifaces, SensorValueType value)
}
}
@@ -104,23 +93,23 @@ index 3e7e0bf..4789a80 100644
+ std::string objectName;
+ boost::container::flat_map<std::string, std::variant<std::string>>
+ values;
-+ message.read(objectName, values);
-+ auto findState = values.find("CurrentHostState");
-+ if (findState != values.end())
-+ {
-+ bool on = boost::ends_with(
++ message.read(objectName, values);
++ auto findState = values.find("CurrentHostState");
++ if (findState != values.end())
++ {
++ bool on = boost::ends_with(
+ std::get<std::string>(findState->second), "Running");
-+ if (!on)
++ if (!on)
+ {
-+ cacheTimer->stop();
++ cacheTimer->stop();
+ powerStatusOn = false;
+ return;
+ }
-+ cacheTimer->start(std::chrono::duration_cast<std::chrono::microseconds>(
++ cacheTimer->start(std::chrono::duration_cast<std::chrono::microseconds>(
+ std::chrono::seconds(10)));
-+ }
-+ else {
-+ powerStatusOn = false;
++ }
++ else {
++ powerStatusOn = false;
+ }
+ });
+
@@ -135,18 +124,17 @@ index 3e7e0bf..4789a80 100644
+ boost::ends_with(std::get<std::string>(state), "Running");
+ },
+ "xyz.openbmc_project.State.Host",
-+ "/xyz/openbmc_project/state/host0",
-+ "org.freedesktop.DBus.Properties", "Get",
++ "/xyz/openbmc_project/state/host0",
++ "org.freedesktop.DBus.Properties", "Get",
+ "xyz.openbmc_project.State.Host", "CurrentHostState");
+
+ createTimer();
+}
+
-+
std::string MainLoop::getID(SensorSet::container_t::const_reference sensor)
{
std::string id;
-@@ -384,6 +474,7 @@ void MainLoop::init()
+@@ -418,6 +508,7 @@ void MainLoop::init()
_interval = std::strtoull(interval.c_str(), NULL, 10);
}
}
@@ -154,7 +142,7 @@ index 3e7e0bf..4789a80 100644
}
void MainLoop::read()
-@@ -428,6 +519,12 @@ void MainLoop::read()
+@@ -462,6 +553,12 @@ void MainLoop::read()
try
{
@@ -167,23 +155,23 @@ index 3e7e0bf..4789a80 100644
if (sensor->hasFaultFile())
{
auto fault = _ioAccess->read(sensorSysfsType, sensorSysfsNum,
-@@ -490,6 +587,11 @@ void MainLoop::read()
+@@ -588,6 +685,11 @@ void MainLoop::read()
}
}
+ if(sensor->pwrOnMonitor() && !isPowerOn())
+ {
-+ statusIface->functional(false);
-+ continue;
++ statusIface->functional(false);
++ continue;
+ }
updateSensorInterfaces(obj, value);
}
catch (const std::system_error& e)
diff --git a/sensor.cpp b/sensor.cpp
-index 09aeca6..b1cb470 100644
+index ac2f896..72b45f8 100644
--- a/sensor.cpp
+++ b/sensor.cpp
-@@ -31,7 +31,7 @@ Sensor::Sensor(const SensorSet::key_type& sensor,
+@@ -32,7 +32,7 @@ Sensor::Sensor(const SensorSet::key_type& sensor,
const hwmonio::HwmonIOInterface* ioAccess,
const std::string& devPath) :
_sensor(sensor),
@@ -192,7 +180,7 @@ index 09aeca6..b1cb470 100644
{
auto chip = env::getEnv("GPIOCHIP", sensor);
auto access = env::getEnv("GPIO", sensor);
-@@ -60,6 +60,15 @@ Sensor::Sensor(const SensorSet::key_type& sensor,
+@@ -61,6 +61,15 @@ Sensor::Sensor(const SensorSet::key_type& sensor,
auto senRmRCs = env::getEnv("REMOVERCS", sensor);
// Add sensor removal return codes defined per sensor
addRemoveRCs(senRmRCs);
@@ -209,10 +197,10 @@ index 09aeca6..b1cb470 100644
void Sensor::addRemoveRCs(const std::string& rcList)
diff --git a/sensor.hpp b/sensor.hpp
-index 4b2d281..369a252 100644
+index 64d6e48..41c0fe7 100644
--- a/sensor.hpp
+++ b/sensor.hpp
-@@ -135,6 +135,16 @@ class Sensor
+@@ -151,6 +151,16 @@ class Sensor
return _hasFaultFile;
}
@@ -229,7 +217,7 @@ index 4b2d281..369a252 100644
private:
/** @brief Sensor object's identifiers */
SensorSet::key_type _sensor;
-@@ -156,6 +166,9 @@ class Sensor
+@@ -172,6 +182,9 @@ class Sensor
/** @brief Tracks whether the sensor has a fault file or not. */
bool _hasFaultFile;
@@ -240,18 +228,42 @@ index 4b2d281..369a252 100644
/**
diff --git a/thresholds.hpp b/thresholds.hpp
-index 4d2fcff..972a469 100644
+index 8d557fc..0ffe0ce 100644
--- a/thresholds.hpp
+++ b/thresholds.hpp
-@@ -101,8 +101,6 @@ auto addThreshold(const std::string& sensorType, const std::string& sensorID,
+@@ -137,32 +137,8 @@ auto addThreshold(const std::string& sensorType, const std::string& sensorID,
auto hi = stod(tHi) * std::pow(10, scale);
(*iface.*Thresholds<T>::setLo)(lo);
(*iface.*Thresholds<T>::setHi)(hi);
-- (*iface.*Thresholds<T>::alarmLo)(value <= lo);
-- (*iface.*Thresholds<T>::alarmHi)(value >= hi);
+- auto alarmLowState = (*iface.*Thresholds<T>::getAlarmLow)();
+- auto alarmHighState = (*iface.*Thresholds<T>::getAlarmHigh)();
+ (*iface.*Thresholds<T>::alarmLo)(value <= lo);
+ (*iface.*Thresholds<T>::alarmHi)(value >= hi);
+- if (alarmLowState != (value <= lo))
+- {
+- if (value <= lo)
+- {
+- (*iface.*Thresholds<T>::assertLowSignal)(value);
+- }
+- else
+- {
+- (*iface.*Thresholds<T>::deassertLowSignal)(value);
+- }
+- }
+- if (alarmHighState != (value >= hi))
+- {
+- if (value >= hi)
+- {
+- (*iface.*Thresholds<T>::assertHighSignal)(value);
+- }
+- else
+- {
+- (*iface.*Thresholds<T>::deassertHighSignal)(value);
+- }
+- }
auto type = Thresholds<T>::type;
obj[type] = iface;
}
--
-2.7.4
+2.21.0
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon/0002-lev-add-sensors-slow-readings.patch b/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon/0002-lev-add-sensors-slow-readings.patch
deleted file mode 100644
index 0ab2f2048..000000000
--- a/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon/0002-lev-add-sensors-slow-readings.patch
+++ /dev/null
@@ -1,295 +0,0 @@
-From 8eafa1b0513dd2f5898182487b4524a485bf1e21 Mon Sep 17 00:00:00 2001
-From: Eddielu <Eddie.Lu@quantatw.com>
-Date: Mon, 27 Jul 2020 20:54:28 +0800
-Subject: [PATCH] Update add sensors slow readings patch.
-
----
- mainloop.cpp | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
- mainloop.hpp | 3 +++
- meson.build | 1 +
- sensor.cpp | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------
- sensor.hpp | 20 ++++++++++++++--
- 5 files changed, 158 insertions(+), 14 deletions(-)
-
-diff --git a/mainloop.cpp b/mainloop.cpp
-index 4789a80..98d0658 100644
---- a/mainloop.cpp
-+++ b/mainloop.cpp
-@@ -34,6 +34,7 @@
- #include <cassert>
- #include <cstdlib>
- #include <functional>
-+#include <future>
- #include <iostream>
- #include <memory>
- #include <phosphor-logging/elog-errors.hpp>
-@@ -299,7 +300,7 @@ std::optional<ObjectStateData>
- {
- // Add status interface based on _fault file being present
- sensorObj->addStatus(info);
-- valueInterface = sensorObj->addValue(retryIO, info);
-+ valueInterface = sensorObj->addValue(retryIO, info, _timedoutMap);
- }
- catch (const std::system_error& e)
- {
-@@ -542,10 +543,74 @@ void MainLoop::read()
- // RAII object for GPIO unlock / lock
- auto locker = sensor::gpioUnlock(sensor->getGpio());
-
-- // Retry for up to a second if device is busy
-- // or has a transient error.
-- value = _ioAccess->read(sensorSysfsType, sensorSysfsNum, input,
-+ // For sensors with attribute ASYNC_READ_TIMEOUT,
-+ // spawn a thread with timeout
-+ auto asyncRead =
-+ env::getEnv("ASYNC_READ_TIMEOUT", sensorSetKey);
-+ if (!asyncRead.empty())
-+ {
-+ // Default async read timeout
-+ std::chrono::milliseconds asyncReadTimeout{
-+ std::stoi(asyncRead)};
-+ bool valueIsValid = false;
-+ std::future<int64_t> asyncThread;
-+
-+ auto asyncIter = _timedoutMap.find(sensorSetKey);
-+ if (asyncIter == _timedoutMap.end())
-+ {
-+ // If sensor not found in timedoutMap, spawn an async
-+ // thread
-+ asyncThread = std::async(
-+ std::launch::async,
-+ &hwmonio::HwmonIOInterface::read, _ioAccess,
-+ sensorSysfsType, sensorSysfsNum, input,
-+ hwmonio::retries, hwmonio::delay);
-+ valueIsValid = true;
-+ }
-+ else
-+ {
-+ // If we already have the async thread in the
-+ // timedoutMap, it means this sensor has already timed
-+ // out in the previous reads. No need to wait on
-+ // subsequent reads
-+ asyncReadTimeout = std::chrono::seconds(0);
-+ asyncThread = std::move(asyncIter->second);
-+ }
-+
-+ std::future_status status =
-+ asyncThread.wait_for(asyncReadTimeout);
-+ switch (status)
-+ {
-+ // Read has finished
-+ case std::future_status::ready:
-+ // Read has finished
-+ if (valueIsValid)
-+ {
-+ value = asyncThread.get();
-+ break;
-+ // Good sensor reads should skip the code below
-+ }
-+ // Async read thread has completed, erase from
-+ // timedoutMap to allow retry then throw
-+ _timedoutMap.erase(sensorSetKey);
-+ throw sensor::AsyncSensorReadTimeOut();
-+ default:
-+ // Read timed out so add the thread to the
-+ // timedoutMap (if the entry already exists,
-+ // operator[] updates it)
-+ _timedoutMap[sensorSetKey] = std::move(asyncThread);
-+ throw sensor::AsyncSensorReadTimeOut();
-+ }
-+ }
-+ else
-+ {
-+ // Retry for up to a second if device is busy
-+ // or has a transient error.
-+ value =
-+ _ioAccess->read(sensorSysfsType, sensorSysfsNum, input,
- hwmonio::retries, hwmonio::delay);
-+ }
-+
- // Set functional property to true if we could read sensor
- statusIface->functional(true);
-
-diff --git a/mainloop.hpp b/mainloop.hpp
-index b3de022..6803c4b 100644
---- a/mainloop.hpp
-+++ b/mainloop.hpp
-@@ -9,6 +9,7 @@
- #include "types.hpp"
-
- #include <any>
-+#include <future>
- #include <memory>
- #include <optional>
- #include <sdbusplus/server.hpp>
-@@ -116,6 +117,8 @@ class MainLoop
- /** @brief Store the specifications of sensor objects */
- std::map<SensorSet::key_type, std::unique_ptr<sensor::Sensor>>
- _sensorObjects;
-+ /** @brief Store the async futures of timed out sensor objects */
-+ std::map<SensorSet::key_type, std::future<int64_t>> _timedoutMap;
-
- /**
- * @brief Map of removed sensors
-diff --git a/meson.build b/meson.build
-index 66e6801..d6a92f8 100644
---- a/meson.build
-+++ b/meson.build
-@@ -84,6 +84,7 @@ libhwmon_all = static_library(
- gpioplus,
- phosphor_dbus_interfaces,
- phosphor_logging,
-+ threads,
- ],
- link_with: [
- libaverage,
-diff --git a/sensor.cpp b/sensor.cpp
-index b1cb470..72b45f8 100644
---- a/sensor.cpp
-+++ b/sensor.cpp
-@@ -15,6 +15,7 @@
- #include <cmath>
- #include <cstring>
- #include <filesystem>
-+#include <future>
- #include <phosphor-logging/elog-errors.hpp>
- #include <thread>
- #include <xyz/openbmc_project/Common/error.hpp>
-@@ -125,8 +126,9 @@ SensorValueType Sensor::adjustValue(SensorValueType value)
- return value;
- }
-
--std::shared_ptr<ValueObject> Sensor::addValue(const RetryIO& retryIO,
-- ObjectInfo& info)
-+std::shared_ptr<ValueObject> Sensor::addValue(
-+ const RetryIO& retryIO, ObjectInfo& info,
-+ std::map<SensorSet::key_type, std::future<int64_t>>& timedoutMap)
- {
- static constexpr bool deferSignals = true;
-
-@@ -153,12 +155,69 @@ std::shared_ptr<ValueObject> Sensor::addValue(const RetryIO& retryIO,
- // RAII object for GPIO unlock / lock
- auto locker = gpioUnlock(getGpio());
-
-- // Retry for up to a second if device is busy
-- // or has a transient error.
-- val =
-- _ioAccess->read(_sensor.first, _sensor.second,
-- hwmon::entry::cinput, std::get<size_t>(retryIO),
-- std::get<std::chrono::milliseconds>(retryIO));
-+ // For sensors with attribute ASYNC_READ_TIMEOUT,
-+ // spawn a thread with timeout
-+ auto asyncRead = env::getEnv("ASYNC_READ_TIMEOUT", _sensor);
-+ if (!asyncRead.empty())
-+ {
-+ // Default async read timeout
-+ std::chrono::milliseconds asyncReadTimeout{
-+ std::stoi(asyncRead)};
-+ bool valueIsValid = false;
-+ std::future<int64_t> asyncThread;
-+
-+ auto asyncIter = timedoutMap.find(_sensor);
-+ if (asyncIter == timedoutMap.end())
-+ {
-+ // If sensor not found in timedoutMap, spawn an async thread
-+ asyncThread = std::async(
-+ std::launch::async, &hwmonio::HwmonIOInterface::read,
-+ _ioAccess, _sensor.first, _sensor.second,
-+ hwmon::entry::cinput, std::get<size_t>(retryIO),
-+ std::get<std::chrono::milliseconds>(retryIO));
-+ valueIsValid = true;
-+ }
-+ else
-+ {
-+ // If we already have the async thread in the timedoutMap,
-+ // it means this sensor has already timed out in the
-+ // previous reads. No need to wait on subsequent reads
-+ asyncReadTimeout = std::chrono::seconds(0);
-+ asyncThread = std::move(asyncIter->second);
-+ }
-+
-+ std::future_status status =
-+ asyncThread.wait_for(asyncReadTimeout);
-+ switch (status)
-+ {
-+ case std::future_status::ready:
-+ // Read has finished
-+ if (valueIsValid)
-+ {
-+ val = asyncThread.get();
-+ break;
-+ // Good sensor reads should skip the code below
-+ }
-+ // Async read thread has completed, erase from
-+ // timedoutMap to allow retry then throw
-+ timedoutMap.erase(_sensor);
-+ throw AsyncSensorReadTimeOut();
-+ default:
-+ // Read timed out so add the thread to the timedoutMap
-+ // (if the entry already exists, operator[] updates it)
-+ timedoutMap[_sensor] = std::move(asyncThread);
-+ throw AsyncSensorReadTimeOut();
-+ }
-+ }
-+ else
-+ {
-+ // Retry for up to a second if device is busy
-+ // or has a transient error.
-+ val = _ioAccess->read(
-+ _sensor.first, _sensor.second, hwmon::entry::cinput,
-+ std::get<size_t>(retryIO),
-+ std::get<std::chrono::milliseconds>(retryIO));
-+ }
- }
- #ifdef UPDATE_FUNCTIONAL_ON_FAIL
- catch (const std::system_error& e)
-diff --git a/sensor.hpp b/sensor.hpp
-index 369a252..41c0fe7 100644
---- a/sensor.hpp
-+++ b/sensor.hpp
-@@ -4,6 +4,8 @@
- #include "sensorset.hpp"
- #include "types.hpp"
-
-+#include <cerrno>
-+#include <future>
- #include <gpioplus/handle.hpp>
- #include <memory>
- #include <optional>
-@@ -20,6 +22,17 @@ struct valueAdjust
- std::unordered_set<int> rmRCs;
- };
-
-+/** @brief Custom exception for async sensor reading timeout
-+ */
-+struct AsyncSensorReadTimeOut : public std::system_error
-+{
-+ AsyncSensorReadTimeOut() :
-+ system_error(std::error_code(ETIMEDOUT, std::system_category()),
-+ "Async sensor read timed out")
-+ {
-+ }
-+};
-+
- /** @class Sensor
- * @brief Sensor object based on a SensorSet container's key type
- * @details Sensor object to create and modify an associated device's sensor
-@@ -87,10 +100,13 @@ class Sensor
- * (number of and delay between)
- * @param[in] info - Sensor object information
- *
-+ * @param[in] timedoutMap - Map to track timed out threads
-+ *
- * @return - Shared pointer to the value object
- */
-- std::shared_ptr<ValueObject> addValue(const RetryIO& retryIO,
-- ObjectInfo& info);
-+ std::shared_ptr<ValueObject> addValue(
-+ const RetryIO& retryIO, ObjectInfo& info,
-+ std::map<SensorSet::key_type, std::future<int64_t>>& timedoutMap);
-
- /**
- * @brief Add status interface and functional property for sensor
---
-2.7.4
-
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/pwm-fan-controller@103000.conf b/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/pwm-fan-controller@103000.conf
index 34caf4a43..f21ee70e9 100644
--- a/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/pwm-fan-controller@103000.conf
+++ b/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon/obmc/hwmon/ahb/apb/pwm-fan-controller@103000.conf
@@ -2,7 +2,7 @@ LABEL_fan1= "fan0"
WARNHI_fan1= "19800"
WARNLO_fan1= "3330"
CRITHI_fan1= "19800"
-CRITLO_fan1= "1800"
+CRITLO_fan1= "1500"
MINVALUE_fan1 = "0"
MAXVALUE_fan1 = "20775"
PWM_TARGET_fan1 = 1
@@ -11,7 +11,7 @@ LABEL_fan2= "fan1"
WARNHI_fan2= "19800"
WARNLO_fan2= "3330"
CRITHI_fan2= "19800"
-CRITLO_fan2= "1800"
+CRITLO_fan2= "1500"
MINVALUE_fan2 = "0"
MAXVALUE_fan2 = "20775"
PWM_TARGET_fan2 = 2
@@ -20,7 +20,7 @@ LABEL_fan3= "fb_fan0"
WARNHI_fan3= "19800"
WARNLO_fan3= "3330"
CRITHI_fan3= "19800"
-CRITLO_fan3= "1800"
+CRITLO_fan3= "1500"
MINVALUE_fan3 = "0"
MAXVALUE_fan3 = "20775"
PWM_TARGET_fan3 = 3
@@ -29,7 +29,7 @@ LABEL_fan4= "fb_fan1"
WARNHI_fan4= "19800"
WARNLO_fan4= "3330"
CRITHI_fan4= "19800"
-CRITLO_fan4= "1800"
+CRITLO_fan4= "1500"
MINVALUE_fan4 = "0"
MAXVALUE_fan4 = "20775"
PWM_TARGET_fan4 = 4
@@ -38,7 +38,7 @@ LABEL_fan5= "fb_fan2"
WARNHI_fan5= "19800"
WARNLO_fan5= "3330"
CRITHI_fan5= "19800"
-CRITLO_fan5= "1800"
+CRITLO_fan5= "1500"
MINVALUE_fan5 = "0"
MAXVALUE_fan5 = "20775"
PWM_TARGET_fan5 = 5
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon_%.bbappend b/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon_%.bbappend
index 5f0517a30..22b31cfb9 100644
--- a/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon_%.bbappend
+++ b/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-hwmon_%.bbappend
@@ -1,7 +1,6 @@
FILESEXTRAPATHS_prepend_gbs := "${THISDIR}/${PN}:"
-SRC_URI_append_gbs = " file://0001-lev-add-poweron-monitor-feature.patch \
- file://0002-lev-add-sensors-slow-readings.patch \
+SRC_URI_append_gbs = " file://0002-Add-power-on-monitor-mechanism.patch \
"
GBS_NAMES = " \
@@ -32,4 +31,4 @@ FENVS = "obmc/hwmon/ahb/apb/{0}"
SYSTEMD_ENVIRONMENT_FILE_${PN}_append_gbs = " ${@compose_list(d, 'FENVS', 'FITEMS')}"
-EXTRA_OEMESON_append_gbs = " -Dupdate-functional-on-fail=true"
+EXTRA_OEMESON_append_gbs = " -Dupdate-functional-on-fail=true -Dnegative-errno-on-fail=false"
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-virtual-sensor/config-virtual-sensor.json b/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-virtual-sensor/config-virtual-sensor.json
index 6e729108a..7be584152 100644
--- a/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-virtual-sensor/config-virtual-sensor.json
+++ b/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-virtual-sensor/config-virtual-sensor.json
@@ -2,7 +2,9 @@
{
"Desc": {
"Name": "i2cool_0",
- "SensorType": "temperature"
+ "SensorType": "temperature",
+ "MaxValue": 127.0,
+ "MinValue": -128.0
},
"Threshold": {
"CriticalHigh": 35,
@@ -40,7 +42,9 @@
{
"Desc": {
"Name": "i2cool_1",
- "SensorType": "temperature"
+ "SensorType": "temperature",
+ "MaxValue": 127.0,
+ "MinValue": -128.0
},
"Threshold": {
"CriticalHigh": 70,
@@ -78,7 +82,9 @@
{
"Desc": {
"Name": "i2cool_2",
- "SensorType": "temperature"
+ "SensorType": "temperature",
+ "MaxValue": 127.0,
+ "MinValue": -128.0
},
"Threshold": {
"CriticalHigh": 70,
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-virtual-sensor/phosphor-virtual-sensor.service.replace b/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-virtual-sensor/phosphor-virtual-sensor.service.replace
index eae38b23d..bffb6d154 100644
--- a/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-virtual-sensor/phosphor-virtual-sensor.service.replace
+++ b/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-virtual-sensor/phosphor-virtual-sensor.service.replace
@@ -2,13 +2,12 @@
Description=Virtual sensors
Wants=obmc-mapper.target
After=obmc-mapper.target
+After=mapper-wait@-xyz-openbmc_project-sensors-temperature-inlet.service
+After=mapper-wait@-xyz-openbmc_project-sensors-temperature-outlet_0.service
+After=mapper-wait@-xyz-openbmc_project-sensors-temperature-outlet_1.service
[Service]
-ExecStartPre=mapper wait /xyz/openbmc_project/sensors/temperature/inlet
-ExecStartPre=mapper wait /xyz/openbmc_project/sensors/temperature/outlet_0
-ExecStartPre=mapper wait /xyz/openbmc_project/sensors/temperature/outlet_1
ExecStart=/usr/bin/virtual-sensor
-ExecStartPost=/usr/bin/setMaxMinValue.sh
Type=dbus
BusName=xyz.openbmc_project.VirtualSensor
SyslogIdentifier=phosphor-virtual-sensor
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-virtual-sensor_%.bbappend b/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-virtual-sensor_%.bbappend
index 77546694e..d151f2025 100644
--- a/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-virtual-sensor_%.bbappend
+++ b/meta-quanta/meta-gbs/recipes-phosphor/sensors/phosphor-virtual-sensor_%.bbappend
@@ -2,15 +2,11 @@ FILESEXTRAPATHS_prepend_gbs := "${THISDIR}/${PN}:"
SRC_URI_append_gbs = " file://config-virtual-sensor.json \
file://phosphor-virtual-sensor.service.replace \
- file://setMaxMinValue.sh \
"
RDEPENDS_${PN}_append_gbs = "bash"
do_install_append_gbs() {
- install -d ${D}${bindir}
- install -m 0755 ${WORKDIR}/setMaxMinValue.sh ${D}${bindir}/
-
install -d ${D}${datadir}/${PN}
install -m 0644 -D ${WORKDIR}/config-virtual-sensor.json \
${D}${datadir}/${PN}/virtual_sensor_config.json
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/0001-Customize-phosphor-watchdog-for-Intel-platforms.patch b/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/0001-Customize-phosphor-watchdog-for-Intel-platforms.patch
deleted file mode 100644
index 22670d3fc..000000000
--- a/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/0001-Customize-phosphor-watchdog-for-Intel-platforms.patch
+++ /dev/null
@@ -1,313 +0,0 @@
-From ac0c216ac2c273c620579fd1308c8c225e0cca36 Mon Sep 17 00:00:00 2001
-From: James Feist <james.feist@linux.intel.com>
-Date: Mon, 17 Jun 2019 12:00:58 -0700
-Subject: [PATCH] Customize phosphor-watchdog for Intel platforms
-
-This patch adds various changes to phosphor-watchdog that are
-required for compatibility with Intel platforms.
-
- 1. Add Redfish messages for watchdog timeout and pre-interrupt
- 2. Use dbus properties for power control insted of service files
- 3. Use host status to enable/disable watchdog
- 4. Set preTimeoutInterruptOccurFlag
-
-Signed-off-by: James Feist <james.feist@linux.intel.com>
-Signed-off-by: Ren Yu <yux.ren@intel.com>
-Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
-Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
----
- watchdog.cpp | 193 ++++++++++++++++++++++++++++++++++++++++++++++++---
- watchdog.hpp | 23 +++++-
- 2 files changed, 206 insertions(+), 10 deletions(-)
-
-diff --git a/watchdog.cpp b/watchdog.cpp
-index 57e9050..3b5356f 100644
---- a/watchdog.cpp
-+++ b/watchdog.cpp
-@@ -1,11 +1,14 @@
- #include "watchdog.hpp"
-
-+#include <systemd/sd-journal.h>
-+
- #include <algorithm>
- #include <chrono>
- #include <phosphor-logging/elog.hpp>
- #include <phosphor-logging/log.hpp>
- #include <sdbusplus/exception.hpp>
- #include <xyz/openbmc_project/Common/error.hpp>
-+#include <xyz/openbmc_project/State/Host/server.hpp>
-
- namespace phosphor
- {
-@@ -18,10 +21,69 @@ using namespace phosphor::logging;
- using sdbusplus::exception::SdBusError;
- using sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
-
--// systemd service to kick start a target.
--constexpr auto SYSTEMD_SERVICE = "org.freedesktop.systemd1";
--constexpr auto SYSTEMD_ROOT = "/org/freedesktop/systemd1";
--constexpr auto SYSTEMD_INTERFACE = "org.freedesktop.systemd1.Manager";
-+const static constexpr char* currentHostState = "CurrentHostState";
-+const static constexpr char* hostStatusOff =
-+ "xyz.openbmc_project.State.Host.HostState.Off";
-+
-+const static constexpr char* actionDescription = " due to Watchdog timeout";
-+const static constexpr char* hardResetDescription = "Hard Reset - System reset";
-+const static constexpr char* powerOffDescription =
-+ "Power Down - System power down";
-+const static constexpr char* powerCycleDescription =
-+ "Power Cycle - System power cycle";
-+const static constexpr char* timerExpiredDescription = "Timer expired";
-+
-+const static constexpr char* preInterruptActionNone =
-+ "xyz.openbmc_project.State.Watchdog.PreTimeoutInterruptAction.None";
-+
-+const static constexpr char* preInterruptDescriptionSMI = "SMI";
-+const static constexpr char* preInterruptDescriptionNMI = "NMI";
-+const static constexpr char* preInterruptDescriptionMI = "Messaging Interrupt";
-+
-+const static constexpr char* reservedDescription = "Reserved";
-+
-+const static constexpr char* timerUseDescriptionBIOSFRB2 = "BIOS FRB2";
-+const static constexpr char* timerUseDescriptionBIOSPOST = "BIOS/POST";
-+const static constexpr char* timerUseDescriptionOSLoad = "OSLoad";
-+const static constexpr char* timerUseDescriptionSMSOS = "SMS/OS";
-+const static constexpr char* timerUseDescriptionOEM = "OEM";
-+
-+namespace restart
-+{
-+static constexpr const char* busName =
-+ "xyz.openbmc_project.Control.Host.RestartCause";
-+static constexpr const char* path =
-+ "/xyz/openbmc_project/control/host0/restart_cause";
-+static constexpr const char* interface =
-+ "xyz.openbmc_project.Control.Host.RestartCause";
-+static constexpr const char* property = "RequestedRestartCause";
-+} // namespace restart
-+
-+// chassis state manager service
-+namespace chassis
-+{
-+static constexpr const char* busName = "xyz.openbmc_project.State.Chassis";
-+static constexpr const char* path = "/xyz/openbmc_project/state/chassis0";
-+static constexpr const char* interface = "xyz.openbmc_project.State.Chassis";
-+static constexpr const char* request = "RequestedPowerTransition";
-+} // namespace chassis
-+
-+void Watchdog::powerStateChangedHandler(
-+ const std::map<std::string, std::variant<std::string>>& props)
-+{
-+ const auto iter = props.find(currentHostState);
-+ if (iter != props.end())
-+ {
-+ const std::string* powerState = std::get_if<std::string>(&iter->second);
-+ if (powerState && (*powerState == hostStatusOff))
-+ {
-+ if (timerEnabled())
-+ {
-+ enabled(false);
-+ }
-+ }
-+ }
-+}
-
- void Watchdog::resetTimeRemaining(bool enableWatchdog)
- {
-@@ -107,13 +169,102 @@ uint64_t Watchdog::interval(uint64_t value)
- // Optional callback function on timer expiration
- void Watchdog::timeOutHandler()
- {
-+ PreTimeoutInterruptAction preTimeoutInterruptAction = preTimeoutInterrupt();
-+ std::string preInterruptActionMessageArgs{};
-+
- Action action = expireAction();
-+ std::string actionMessageArgs{};
-+
-+ expiredTimerUse(currentTimerUse());
-+
-+ TimerUse timeUser = expiredTimerUse();
-+ std::string timeUserMessage{};
-+
- if (!this->enabled())
- {
- action = fallback->action;
- }
-
-- expiredTimerUse(currentTimerUse());
-+ switch (timeUser)
-+ {
-+ case Watchdog::TimerUse::BIOSFRB2:
-+ timeUserMessage = timerUseDescriptionBIOSFRB2;
-+ break;
-+ case Watchdog::TimerUse::BIOSPOST:
-+ timeUserMessage = timerUseDescriptionBIOSPOST;
-+ break;
-+ case Watchdog::TimerUse::OSLoad:
-+ timeUserMessage = timerUseDescriptionOSLoad;
-+ break;
-+ case Watchdog::TimerUse::SMSOS:
-+ timeUserMessage = timerUseDescriptionSMSOS;
-+ break;
-+ case Watchdog::TimerUse::OEM:
-+ timeUserMessage = timerUseDescriptionOEM;
-+ break;
-+ default:
-+ timeUserMessage = reservedDescription;
-+ break;
-+ }
-+
-+ switch (action)
-+ {
-+ case Watchdog::Action::HardReset:
-+ actionMessageArgs = std::string(hardResetDescription) +
-+ std::string(actionDescription);
-+ break;
-+ case Watchdog::Action::PowerOff:
-+ actionMessageArgs = std::string(powerOffDescription) +
-+ std::string(actionDescription);
-+ break;
-+ case Watchdog::Action::PowerCycle:
-+ actionMessageArgs = std::string(powerCycleDescription) +
-+ std::string(actionDescription);
-+ break;
-+ case Watchdog::Action::None:
-+ actionMessageArgs = timerExpiredDescription;
-+ break;
-+ default:
-+ actionMessageArgs = reservedDescription;
-+ break;
-+ }
-+
-+ // Log into redfish event log
-+ sd_journal_send("MESSAGE=IPMIWatchdog: Timed out ACTION=%s",
-+ convertForMessage(action).c_str(), "PRIORITY=%i", LOG_INFO,
-+ "REDFISH_MESSAGE_ID=%s", "OpenBMC.0.1.IPMIWatchdog",
-+ "REDFISH_MESSAGE_ARGS=%s. timer use: %s",
-+ actionMessageArgs.c_str(), timeUserMessage.c_str(), NULL);
-+
-+ switch (preTimeoutInterruptAction)
-+ {
-+ case Watchdog::PreTimeoutInterruptAction::SMI:
-+ preInterruptActionMessageArgs = preInterruptDescriptionSMI;
-+ break;
-+ case Watchdog::PreTimeoutInterruptAction::NMI:
-+ preInterruptActionMessageArgs = preInterruptDescriptionNMI;
-+ break;
-+ case Watchdog::PreTimeoutInterruptAction::MI:
-+ preInterruptActionMessageArgs = preInterruptDescriptionMI;
-+ break;
-+ default:
-+ preInterruptActionMessageArgs = reservedDescription;
-+ break;
-+ }
-+
-+ if (preInterruptActionNone != convertForMessage(preTimeoutInterruptAction))
-+ {
-+ preTimeoutInterruptOccurFlag(true);
-+
-+ sd_journal_send("MESSAGE=IPMIWatchdog: Pre Timed out Interrupt=%s",
-+ convertForMessage(preTimeoutInterruptAction).c_str(),
-+ "PRIORITY=%i", LOG_INFO, "REDFISH_MESSAGE_ID=%s",
-+ "OpenBMC.0.1.IPMIWatchdog",
-+ "REDFISH_MESSAGE_ARGS=Timer interrupt - %s due to "
-+ "Watchdog timeout. timer use: %s",
-+ preInterruptActionMessageArgs.c_str(),
-+ timeUserMessage.c_str(), NULL);
-+ }
-
- auto target = actionTargetMap.find(action);
- if (target == actionTargetMap.end())
-@@ -133,10 +284,11 @@ void Watchdog::timeOutHandler()
-
- try
- {
-- auto method = bus.new_method_call(SYSTEMD_SERVICE, SYSTEMD_ROOT,
-- SYSTEMD_INTERFACE, "StartUnit");
-- method.append(target->second);
-- method.append("replace");
-+ auto method =
-+ bus.new_method_call(chassis::busName, chassis::path,
-+ "org.freedesktop.DBus.Properties", "Set");
-+ method.append(chassis::interface, chassis::request,
-+ std::variant<std::string>(target->second));
-
- bus.call_noreply(method);
- }
-@@ -147,6 +299,29 @@ void Watchdog::timeOutHandler()
- entry("ERROR=%s", e.what()));
- commit<InternalFailure>();
- }
-+
-+ // set restart cause for watchdog HardReset & PowerCycle actions
-+ if ((action == Watchdog::Action::HardReset) ||
-+ (action == Watchdog::Action::PowerCycle))
-+ {
-+ try
-+ {
-+ auto method = bus.new_method_call(
-+ restart::busName, restart::path,
-+ "org.freedesktop.DBus.Properties", "Set");
-+ method.append(
-+ restart::interface, restart::property,
-+ std::variant<std::string>("xyz.openbmc_project.State.Host."
-+ "RestartCause.WatchdogTimer"));
-+ bus.call(method);
-+ }
-+ catch (sdbusplus::exception_t& e)
-+ {
-+ log<level::ERR>("Failed to set HostRestartCause property",
-+ entry("ERROR=%s", e.what()));
-+ commit<InternalFailure>();
-+ }
-+ }
- }
-
- tryFallbackOrDisable();
-diff --git a/watchdog.hpp b/watchdog.hpp
-index 7de9bb3..b004b7a 100644
---- a/watchdog.hpp
-+++ b/watchdog.hpp
-@@ -68,7 +68,18 @@ class Watchdog : public WatchdogInherits
- WatchdogInherits(bus, objPath),
- bus(bus), actionTargetMap(std::move(actionTargetMap)),
- fallback(std::move(fallback)), minInterval(minInterval),
-- timer(event, std::bind(&Watchdog::timeOutHandler, this))
-+ timer(event, std::bind(&Watchdog::timeOutHandler, this)),
-+ powerStateChangedSignal(
-+ bus,
-+ sdbusplus::bus::match::rules::propertiesChanged(
-+ "/xyz/openbmc_project/state/host0",
-+ "xyz.openbmc_project.State.Host"),
-+ [this](sdbusplus::message::message& msg) {
-+ std::string objectName;
-+ std::map<std::string, std::variant<std::string>> props;
-+ msg.read(objectName, props);
-+ powerStateChangedHandler(props);
-+ })
- {
- // We set the watchdog interval with the default value.
- interval(interval());
-@@ -77,6 +88,12 @@ class Watchdog : public WatchdogInherits
- tryFallbackOrDisable();
- }
-
-+ /** @brief Disable watchdog when power status change meet
-+ * the specific requirement
-+ */
-+ void powerStateChangedHandler(
-+ const std::map<std::string, std::variant<std::string>>& props);
-+
- /** @brief Resets the TimeRemaining to the configured Interval
- * Optionally enables the watchdog.
- *
-@@ -165,6 +182,10 @@ class Watchdog : public WatchdogInherits
- /** @brief Contained timer object */
- sdeventplus::utility::Timer<sdeventplus::ClockId::Monotonic> timer;
-
-+ /** @brief Optional Callback handler when power status change meet
-+ * the specific requirement */
-+ sdbusplus::bus::match_t powerStateChangedSignal;
-+
- /** @brief Optional Callback handler on timer expirartion */
- void timeOutHandler();
-
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/obmc/watchdog/host0 b/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/obmc/watchdog/host0
new file mode 100644
index 000000000..27c438d90
--- /dev/null
+++ b/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/obmc/watchdog/host0
@@ -0,0 +1,8 @@
+DEVPATH=/xyz/openbmc_project/watchdog/host0
+SERVICE=xyz.openbmc_project.Watchdog
+UNIT_HARD_RESET=phosphor-host-watchdog-reset.service
+UNIT_POWER_OFF=phosphor-host-watchdog-poweroff.service
+UNIT_POWER_CYCLE=phosphor-host-watchdog-powercycle.service
+FALLBACK_ACTION=xyz.openbmc_project.State.Watchdog.Action.PowerCycle
+FALLBACK_INTERVAL=180000
+MIN_INTERVAL=60000
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-host-watchdog-powercycle.service b/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-host-watchdog-powercycle.service
new file mode 100644
index 000000000..9b8b0d691
--- /dev/null
+++ b/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-host-watchdog-powercycle.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Power Cycle Host Server
+After=xyz.openbmc_project.Chassis.Control.Power.service
+
+[Service]
+Type=oneshot
+ExecStart=busctl set-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis RequestedPowerTransition s xyz.openbmc_project.State.Chassis.Transition.PowerCycle
+ExecStart=busctl set-property xyz.openbmc_project.Control.Host.RestartCause /xyz/openbmc_project/control/host0/restart_cause xyz.openbmc_project.Control.Host.RestartCause RequestedRestartCause s xyz.openbmc_project.State.Host.RestartCause.WatchdogTimer
+SyslogIdentifier=phosphor-watchdog
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-host-watchdog-poweroff.service b/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-host-watchdog-poweroff.service
new file mode 100644
index 000000000..af7e6ef0d
--- /dev/null
+++ b/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-host-watchdog-poweroff.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Shutdown Host Server
+After=xyz.openbmc_project.Chassis.Control.Power.service
+
+[Service]
+Type=oneshot
+ExecStart=busctl set-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis RequestedPowerTransition s xyz.openbmc_project.State.Chassis.Transition.Off
+SyslogIdentifier=phosphor-watchdog
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-host-watchdog-reset.service b/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-host-watchdog-reset.service
new file mode 100644
index 000000000..655618b05
--- /dev/null
+++ b/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-host-watchdog-reset.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Reset Host Server
+After=xyz.openbmc_project.Chassis.Control.Power.service
+
+[Service]
+Type=oneshot
+ExecStart=busctl set-property xyz.openbmc_project.State.Host /xyz/openbmc_project/state/host0 xyz.openbmc_project.State.Host RequestedHostTransition s xyz.openbmc_project.State.Host.Transition.ForceWarmReboot
+ExecStart=busctl set-property xyz.openbmc_project.Control.Host.RestartCause /xyz/openbmc_project/control/host0/restart_cause xyz.openbmc_project.Control.Host.RestartCause RequestedRestartCause s xyz.openbmc_project.State.Host.RestartCause.WatchdogTimer
+SyslogIdentifier=phosphor-watchdog
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog.service b/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog.service
deleted file mode 100644
index 5ef1a4179..000000000
--- a/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog.service
+++ /dev/null
@@ -1,16 +0,0 @@
-[Unit]
-Description=Phosphor Watchdog
-
-[Service]
-ExecStart=/usr/bin/env phosphor-watchdog --continue --service=xyz.openbmc_project.Watchdog \
- --path=/xyz/openbmc_project/watchdog/host0 \
- --action_target=xyz.openbmc_project.State.Watchdog.Action.HardReset=xyz.openbmc_project.State.Chassis.Transition.Reset \
- --action_target=xyz.openbmc_project.State.Watchdog.Action.PowerOff=xyz.openbmc_project.State.Chassis.Transition.Off \
- --action_target=xyz.openbmc_project.State.Watchdog.Action.PowerCycle=xyz.openbmc_project.State.Chassis.Transition.PowerCycle
-
-SyslogIdentifier=phosphor-watchdog
-BusName =xyz.openbmc_project.Watchdog
-Type=dbus
-
-[Install]
-WantedBy=basic.target
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog@.service b/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog@.service
new file mode 100644
index 000000000..4577cd1c1
--- /dev/null
+++ b/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog/phosphor-watchdog@.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=Phosphor Watchdog
+
+[Service]
+EnvironmentFile={envfiledir}/obmc/watchdog/%I
+ExecStart=/usr/bin/env phosphor-watchdog --service=${{SERVICE}} --path=${{DEVPATH}} \
+ --continue --fallback_always --min_interval=${{MIN_INTERVAL}} \
+ --fallback_action=${{FALLBACK_ACTION}} --fallback_interval=${{FALLBACK_INTERVAL}} \
+ --action_target=xyz.openbmc_project.State.Watchdog.Action.HardReset=${{UNIT_HARD_RESET}} \
+ --action_target=xyz.openbmc_project.State.Watchdog.Action.PowerOff=${{UNIT_POWER_OFF}} \
+ --action_target=xyz.openbmc_project.State.Watchdog.Action.PowerCycle=${{UNIT_POWER_CYCLE}}
+SyslogIdentifier=phosphor-watchdog
+BusName=xyz.openbmc_project.Watchdog
+Type=dbus
+
+[Install]
+WantedBy=basic.target
diff --git a/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog_%.bbappend b/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog_%.bbappend
index 9c491ecfc..d8b1aa956 100644
--- a/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog_%.bbappend
+++ b/meta-quanta/meta-gbs/recipes-phosphor/watchdog/phosphor-watchdog_%.bbappend
@@ -1,7 +1,13 @@
FILESEXTRAPATHS_prepend_gbs := "${THISDIR}/${PN}:"
-SRC_URI_append_gbs = " file://0001-Customize-phosphor-watchdog-for-Intel-platforms.patch"
-
-# Remove the override to keep service running after DC cycle
+SYSTEMD_ENVIRONMENT_FILE_${PN}_append_gbs = " obmc/watchdog/host0"
+OBMC_HOST_WATCHDOG_INSTANCES_A = "host0"
+WATCHDOG_FMT_A = "phosphor-watchdog@{0}.service"
SYSTEMD_OVERRIDE_${PN}_remove_gbs = "poweron.conf:phosphor-watchdog@poweron.service.d/poweron.conf"
-SYSTEMD_SERVICE_${PN}_gbs = "phosphor-watchdog.service"
+SYSTEMD_LINK_${PN}_remove_gbs = "${@compose_list(d, 'ENABLE_WATCHDOG_FMT', 'OBMC_HOST_INSTANCES')}"
+SYSTEMD_LINK_${PN}_remove_gbs = "${@compose_list(d, 'WATCHDOG_FMT', 'OBMC_HOST_WATCHDOG_INSTANCES', 'OBMC_HOST_INSTANCES')}"
+SYSTEMD_SERVICE_${PN}_gbs = " ${@compose_list(d, 'WATCHDOG_FMT_A', 'OBMC_HOST_WATCHDOG_INSTANCES_A')} \
+ phosphor-host-watchdog-reset.service \
+ phosphor-host-watchdog-poweroff.service \
+ phosphor-host-watchdog-powercycle.service \
+ "
diff --git a/meta-quanta/meta-gsj/recipes-gsj/mac-address/files/mac-address.service b/meta-quanta/meta-gsj/recipes-gsj/mac-address/files/mac-address.service
deleted file mode 100644
index e18d69493..000000000
--- a/meta-quanta/meta-gsj/recipes-gsj/mac-address/files/mac-address.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=Initialize MAC Address
-Before=usb_network.service network-pre.target
-Wants=network-pre.target
-
-[Service]
-Type=oneshot
-ExecStart=/usr/bin/mac-address
-
-[Install]
-WantedBy=multi-user.target \ No newline at end of file
diff --git a/meta-quanta/meta-gsj/recipes-gsj/mac-address/mac-address.bb b/meta-quanta/meta-gsj/recipes-gsj/mac-address/mac-address.bb
deleted file mode 100644
index d9fda7ccb..000000000
--- a/meta-quanta/meta-gsj/recipes-gsj/mac-address/mac-address.bb
+++ /dev/null
@@ -1,34 +0,0 @@
-SRC_URI = "git://github.com/quanta-bmc/mac-address.git;protocol=git"
-SRCREV = "${AUTOREV}"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-inherit autotools pkgconfig
-inherit systemd
-
-DEPENDS += "systemd"
-DEPENDS += "autoconf-archive-native"
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-SRC_URI_append = " file://mac-address.service"
-SRC_URI_append = " file://config.txt"
-
-FILES_${PN}_append = " ${datadir}/mac-address/config.txt"
-
-HASHSTYLE = "gnu"
-S = "${WORKDIR}/git"
-CXXFLAGS += "-std=c++17"
-
-do_install_append() {
- install -d ${D}${systemd_unitdir}/system/
- install -m 0644 ${WORKDIR}/mac-address.service \
- ${D}${systemd_unitdir}/system
-
- install -d ${D}${datadir}/mac-address
- install -m 0644 -D ${WORKDIR}/config.txt \
- ${D}${datadir}/mac-address/config.txt
-}
-
-SYSTEMD_PACKAGES = "${PN}"
-SYSTEMD_SERVICE_${PN} += "mac-address.service"
diff --git a/meta-quanta/meta-gsj/recipes-phosphor/network/phosphor-network_%.bbappend b/meta-quanta/meta-gsj/recipes-phosphor/network/phosphor-network_%.bbappend
deleted file mode 100644
index 730c62d5f..000000000
--- a/meta-quanta/meta-gsj/recipes-phosphor/network/phosphor-network_%.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_OECONF_gsj += " --disable-link-local-autoconfiguration"
diff --git a/meta-quanta/meta-gsj/recipes-gsj/mac-address/files/config.txt b/meta-quanta/meta-gsj/recipes-quanta/network/mac-address/mac-address/config.txt
index 668b1d485..668b1d485 100644
--- a/meta-quanta/meta-gsj/recipes-gsj/mac-address/files/config.txt
+++ b/meta-quanta/meta-gsj/recipes-quanta/network/mac-address/mac-address/config.txt
diff --git a/meta-quanta/meta-gsj/recipes-quanta/network/mac-address_%.bbappend b/meta-quanta/meta-gsj/recipes-quanta/network/mac-address_%.bbappend
new file mode 100644
index 000000000..a90150b3d
--- /dev/null
+++ b/meta-quanta/meta-gsj/recipes-quanta/network/mac-address_%.bbappend
@@ -0,0 +1,10 @@
+FILESEXTRAPATHS_prepend_gsj := "${THISDIR}/${PN}:"
+SRC_URI_append_gsj = " file://config.txt"
+
+FILES_${PN}_append_gsj = " ${datadir}/mac-address/config.txt"
+
+do_install_append_gsj() {
+ install -d ${D}${datadir}/mac-address
+ install -m 0644 -D ${WORKDIR}/config.txt \
+ ${D}${datadir}/mac-address/config.txt
+}
diff --git a/meta-wistron/OWNERS b/meta-wistron/OWNERS
new file mode 100644
index 000000000..96108bbb3
--- /dev/null
+++ b/meta-wistron/OWNERS
@@ -0,0 +1,9 @@
+inherited: false
+owners:
+- Timothy_Huang@wistron.com
+- Claire_Ku@wistron.com
+- Ben_Pai@wistron.com
+- Andy_YF_Wang@wistron.com
+- Ken_Hsu@wistron.com
+- Jolie_Ku@wistron.com
+- Bob_King@wistron.com
diff --git a/meta-yadro/meta-nicole/recipes-phosphor/network/phosphor-network_%.bbappend b/meta-yadro/meta-nicole/recipes-phosphor/network/phosphor-network_%.bbappend
index e71ba71a3..5be003a75 100644
--- a/meta-yadro/meta-nicole/recipes-phosphor/network/phosphor-network_%.bbappend
+++ b/meta-yadro/meta-nicole/recipes-phosphor/network/phosphor-network_%.bbappend
@@ -1,6 +1,6 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-EXTRA_OECONF_append = " --enable-sync-mac "
+PACKAGECONFIG_append = " sync-mac"
SRC_URI_append = " file://config.json "
FILES_${PN} += "${datadir}/network/*.json"