diff options
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" |