Initial commit

This commit is contained in:
Your Name
2026-04-23 17:07:55 +08:00
commit b7e39e063b
16725 changed files with 1625565 additions and 0 deletions
@@ -0,0 +1,35 @@
SUMMARY = "Shared OpenPOWER configuration"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit allarch
SRC_URI = " \
file://ipmi-fru-properties-mrw.yaml \
file://ipmi-hostboot-fru-mrw.yaml \
file://ipmi-hostboot-volatile-sensor-mrw.yaml \
file://ipmi-occ-active-sensor-mrw.yaml \
"
S = "${WORKDIR}"
do_install() {
install -m 0644 -D ipmi-fru-properties-mrw.yaml \
${D}${datadir}/${BPN}/ipmi-fru-properties-mrw.yaml
install -m 0644 -D ipmi-hostboot-fru-mrw.yaml \
${D}${datadir}/${BPN}/ipmi-hostboot-fru-mrw.yaml
install -m 0644 -D ipmi-hostboot-volatile-sensor-mrw.yaml \
${D}${datadir}/${BPN}/ipmi-hostboot-volatile-sensor-mrw.yaml
install -m 0644 -D ipmi-occ-active-sensor-mrw.yaml \
${D}${datadir}/${BPN}/ipmi-occ-active-sensor-mrw.yaml
}
FILES:${PN}-dev = " \
${datadir}/${BPN}/ipmi-fru-properties-mrw.yaml \
${datadir}/${BPN}/ipmi-hostboot-fru-mrw.yaml \
${datadir}/${BPN}/ipmi-hostboot-volatile-sensor-mrw.yaml \
${datadir}/${BPN}/ipmi-occ-active-sensor-mrw.yaml \
"
ALLOW_EMPTY:${PN} = "1"
@@ -0,0 +1,37 @@
# A template for generating extra-properties.yaml for ipmi-fru-parser, from the
# MRW with gen_fru_properties.pl
DIMM:
xyz.openbmc_project.Inventory.Decorator.Cacheable:
Cached: 'false'
xyz.openbmc_project.Inventory.Decorator.Replaceable:
FieldReplaceable: 'false'
xyz.openbmc_project.Inventory.Item:
Present: 'true'
NODE:
xyz.openbmc_project.Inventory.Decorator.Cacheable:
Cached: 'false'
xyz.openbmc_project.Inventory.Decorator.Replaceable:
FieldReplaceable: 'false'
xyz.openbmc_project.Inventory.Item:
Present: 'true'
PROC:
xyz.openbmc_project.Inventory.Decorator.Cacheable:
Cached: 'false'
xyz.openbmc_project.Inventory.Decorator.Replaceable:
FieldReplaceable: 'false'
xyz.openbmc_project.Inventory.Item:
Present: 'true'
SYS:
xyz.openbmc_project.Inventory.Decorator.Cacheable:
Cached: 'false'
xyz.openbmc_project.Inventory.Decorator.Replaceable:
FieldReplaceable: 'false'
xyz.openbmc_project.Inventory.Item:
Present: 'true'
TPM:
xyz.openbmc_project.Inventory.Decorator.Cacheable:
Cached: 'false'
xyz.openbmc_project.Inventory.Decorator.Replaceable:
FieldReplaceable: 'true'
xyz.openbmc_project.Inventory.Item:
Present: 'true'
@@ -0,0 +1,130 @@
DIMM:
EntityID: 32
Interfaces:
xyz.openbmc_project.Inventory.Decorator.Asset:
BuildDate:
IPMIFruProperty: Mfg Date
IPMIFruSection: Product
Manufacturer:
IPMIFruProperty: Manufacturer
IPMIFruSection: Product
Model:
IPMIFruProperty: Model Number
IPMIFruSection: Product
PartNumber:
IPMIFruProperty: Part Number
IPMIFruSection: Product
SerialNumber:
IPMIFruProperty: Serial Number
IPMIFruSection: Product
xyz.openbmc_project.Inventory.Decorator.Revision:
Version:
IPMIFruProperty: Version
IPMIFruSection: Product
xyz.openbmc_project.Inventory.Item:
PrettyName:
IPMIFruProperty: Name
IPMIFruSection: Product
xyz.openbmc_project.Inventory.Item.Dimm:
MEMBUFF:
EntityID: 8
Interfaces:
xyz.openbmc_project.Inventory.Decorator.Asset:
BuildDate:
IPMIFruProperty: Mfg Date
IPMIFruSection: Board
Manufacturer:
IPMIFruProperty: Manufacturer
IPMIFruSection: Board
PartNumber:
IPMIFruProperty: Part Number
IPMIFruSection: Board
SerialNumber:
IPMIFruProperty: Serial Number
IPMIFruSection: Board
xyz.openbmc_project.Inventory.Item:
PrettyName:
IPMIFruProperty: Name
IPMIFruSection: Board
xyz.openbmc_project.Inventory.Item.MemoryBuffer:
NODE:
AssociatedTypes:
- SYS
EntityID: 7
Interfaces:
xyz.openbmc_project.Inventory.Decorator.Asset:
BuildDate:
IPMIFruProperty: Mfg Date
IPMIFruSection: Board
Manufacturer:
IPMIFruProperty: Manufacturer
IPMIFruSection: Board
PartNumber:
IPMIFruProperty: Part Number
IPMIFruSection: Board
SerialNumber:
IPMIFruProperty: Serial Number
IPMIFruSection: Board
xyz.openbmc_project.Inventory.Item:
PrettyName:
IPMIFruProperty: Name
IPMIFruSection: Board
xyz.openbmc_project.Inventory.Item.Board:
PROC:
EntityID: 3
Interfaces:
xyz.openbmc_project.Inventory.Decorator.Asset:
BuildDate:
IPMIFruProperty: Mfg Date
IPMIFruSection: Board
Manufacturer:
IPMIFruProperty: Manufacturer
IPMIFruSection: Board
PartNumber:
IPMIFruProperty: Part Number
IPMIFruSection: Board
SerialNumber:
IPMIFruProperty: Serial Number
IPMIFruSection: Board
xyz.openbmc_project.Inventory.Decorator.Revision:
Version:
IPMIFruProperty: Custom Field 2
IPMIFruSection: Board
IPMIFruValueDelimiter: '58'
xyz.openbmc_project.Inventory.Item:
PrettyName:
IPMIFruProperty: Name
IPMIFruSection: Board
xyz.openbmc_project.Inventory.Item.Cpu:
SYS:
EntityID: 7
Interfaces:
xyz.openbmc_project.Inventory.Decorator.Asset:
Model:
IPMIFruProperty: Part Number
IPMIFruSection: Chassis
SerialNumber:
IPMIFruProperty: Serial Number
IPMIFruSection: Chassis
xyz.openbmc_project.Inventory.Item.System:
TPM:
EntityID: 176
Interfaces:
xyz.openbmc_project.Inventory.Decorator.Asset:
BuildDate:
IPMIFruProperty: Mfg Date
IPMIFruSection: Board
Manufacturer:
IPMIFruProperty: Manufacturer
IPMIFruSection: Board
PartNumber:
IPMIFruProperty: Part Number
IPMIFruSection: Board
SerialNumber:
IPMIFruProperty: Serial Number
IPMIFruSection: Board
xyz.openbmc_project.Inventory.Item:
PrettyName:
IPMIFruProperty: Name
IPMIFruSection: Board
xyz.openbmc_project.Inventory.Item.Tpm:
@@ -0,0 +1,16 @@
hb_volatile_sensor:
interfaces:
xyz.openbmc_project.Object.Enable:
Enabled:
Offsets:
0:
assert: false
type: bool
1:
assert: true
type: bool
mutability: Mutability::Write|Mutability::Read
path: /org/open_power/control/volatile
readingType: assertion
sensorNamePattern: nameLeaf
serviceInterface: org.freedesktop.DBus.Properties
@@ -0,0 +1,17 @@
occ_active_sensor:
interfaces:
org.open_power.OCC.Status:
OccActive:
Offsets:
0:
assert: 'false'
deassert: 'true'
type: bool
1:
assert: 'true'
deassert: 'false'
type: bool
mutability: Mutability::Write|Mutability::Read
readingType: assertion
sensorNamePattern: nameLeaf
serviceInterface: org.freedesktop.DBus.Properties
@@ -0,0 +1,49 @@
pkg_postinst:${PN}:append() {
mkdir -p $D$systemd_system_unitdir/obmc-host-crash@0.target.wants
mkdir -p $D$systemd_system_unitdir/obmc-host-timeout@0.target.wants
# The obmc-host-crash target is repurposed for the memory preserving reboot
# feature when it is enabled. If not enabled, then install the standard
# debug collector checkstop service for basic error reporting
if [ "${@bb.utils.filter('DISTRO_FEATURES', 'mpreboot', d)}" != mpreboot ]; then
LINK="$D$systemd_system_unitdir/obmc-host-crash@0.target.wants/openpower-debug-collector-checkstop@0.service"
TARGET="../openpower-debug-collector-checkstop@.service"
ln -s $TARGET $LINK
fi
LINK="$D$systemd_system_unitdir/obmc-host-timeout@0.target.wants/openpower-debug-collector-watchdog@0.service"
TARGET="../openpower-debug-collector-watchdog@.service"
ln -s $TARGET $LINK
if [ "${@bb.utils.filter('MACHINE_FEATURES', 'phal', d)}" != 'phal' ]; then
LINK="$D$systemd_system_unitdir/obmc-host-timeout@0.target.wants/openpower-debug-collector-watchdog-timeout@0.service"
TARGET="../openpower-debug-collector-watchdog-timeout@.service"
ln -s $TARGET $LINK
fi
}
pkg_postinst:${PN}:append:p10bmc() {
mkdir -p $D$systemd_system_unitdir/obmc-host-stop@0.target.wants
LINK="$D$systemd_system_unitdir/obmc-host-stop@0.target.wants/clear_hostdumps_poweroff.service"
TARGET="../clear_hostdumps_poweroff.service"
ln -s $TARGET $LINK
}
pkg_prerm:${PN}:append() {
if [ "${@bb.utils.filter('DISTRO_FEATURES', 'mpreboot', d)}" != mpreboot ]; then
LINK="$D$systemd_system_unitdir/obmc-host-crash@0.target.wants/openpower-debug-collector-checkstop@0.service"
rm $LINK
fi
LINK="$D$systemd_system_unitdir/obmc-host-timeout@0.target.wants/openpower-debug-collector-watchdog@0.service"
rm $LINK
if [ "${@bb.utils.filter('MACHINE_FEATURES', 'phal', d)}" != 'phal' ]; then
LINK="$D$systemd_system_unitdir/obmc-host-timeout@0.target.wants/openpower-debug-collector-watchdog-timeout@0.service"
rm $LINK
fi
}
pkg_prerm:${PN}:append:p10bmc() {
LINK="$D$systemd_system_unitdir/obmc-host-stop@0.target.wants/clear_hostdumps_poweroff.service"
rm $LINK
}
@@ -0,0 +1,10 @@
SUMMARY = "openpower-debug-collector: install phosphor-logging yaml"
PR = "r1"
PV = "1.0+git${SRCPV}"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit phosphor-logging-yaml-provider
require openpower-debug-collector.inc
S = "${WORKDIR}/git"
@@ -0,0 +1,5 @@
HOMEPAGE = "https://github.com/openbmc/openpower-debug-collector"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SRC_URI += "git://github.com/openbmc/openpower-debug-collector;branch=master;protocol=https"
SRCREV = "40fccd52408dce41aed05d1a65e867d09e2fcca7"
@@ -0,0 +1,12 @@
[Unit]
Description=OpenPOWER debug data collector for host checkstop
Before=obmc-host-quiesce@%i.target
[Service]
# Adding 10 seconds to allow OCC to collect debug data
# before processing checkstop. OCC has to wait 5 seconds
# for our driver to stop using the SBEFIFO.
ExecStart={base_bindir}/sleep 10
ExecStart=/usr/bin/checkstop_app
Type=oneshot
Restart=no
@@ -0,0 +1,8 @@
[Unit]
Description=OpenPOWER debug data collector for host %I watchdog timeout
Before=obmc-host-quiesce@%i.target
[Service]
ExecStart=/usr/bin/openpower-proc-control collectSBEHBData
Type=oneshot
Restart=no
@@ -0,0 +1,9 @@
[Unit]
Description=OpenPOWER debug data collector for host watchdog timeout
Before=obmc-host-quiesce@%i.target
After=op-stop-instructions@%i.service
[Service]
ExecStart=/usr/bin/watchdog_timeout
Type=oneshot
Restart=no
@@ -0,0 +1,38 @@
SUMMARY = "OpenPOWER Debug Collector"
DESCRIPTION = "Application to log error during host checkstop and watchdog timeout"
PR = "r1"
PV = "1.0+git${SRCPV}"
inherit pkgconfig meson \
obmc-phosphor-systemd \
python3native \
phosphor-dbus-yaml
require ${BPN}.inc
require ${BPN}-systemd-links.inc
DEPENDS += " \
phosphor-logging \
${PYTHON_PN}-sdbus++-native \
cli11 \
ipl \
"
S = "${WORKDIR}/git"
# This provides below applications that are called into in case
# of host checkstop, host watchdog and host watchdog-timeout respectively.
APPS = " \
checkstop \
watchdog \
${@bb.utils.contains('MACHINE_FEATURES', 'phal', '', 'watchdog-timeout', d)} \
"
DEBUG_TMPL = "openpower-debug-collector-{0}@.service"
SYSTEMD_SERVICE:${PN} += "${@compose_list(d, 'DEBUG_TMPL', 'APPS')}"
# Do not depend on phosphor-logging for native build
DEPENDS:remove:class-native = "phosphor-logging"
# Do not depend on phosphor-logging for native SDK build
DEPENDS:remove:class-nativesdk = "phosphor-logging ipl"
@@ -0,0 +1,20 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
install_openpower_plugins() {
install ${S}/tools/dreport.d/openpower.d/plugins.d/* ${D}${dreport_plugin_dir}
}
#Link the plugins so that dreport can run them based on dump type
python link_openpower_plugins() {
source = d.getVar('S', True)
source_path = os.path.join(source, "tools", "dreport.d", "openpower.d", "plugins.d")
op_plugins = os.listdir(source_path)
for op_plugin in op_plugins:
op_plugin_name = os.path.join(source_path, op_plugin)
install_dreport_user_script(op_plugin_name, d)
}
DEBUG_COLLECTOR_INSTALL_POSTFUNCS ?= ""
DEBUG_COLLECTOR_INSTALL_POSTFUNCS:df-openpower ?= "install_openpower_plugins link_openpower_plugins"
do_install[postfuncs] += "${DEBUG_COLLECTOR_INSTALL_POSTFUNCS}"
@@ -0,0 +1 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
@@ -0,0 +1,5 @@
elog:
- xyz.openbmc_project.Common.Error.InternalFailure
checkstop:
- org.open_power.Host.Boot.Error.Checkstop
- org.open_power.Host.Boot.Error.WatchdogTimedOut
@@ -0,0 +1,76 @@
SUMMARY = "OpenPower Software Management"
DESCRIPTION = "OpenPower Software Manager provides a set of host software \
management daemons. It is suitable for use on a wide variety of OpenPower \
platforms."
HOMEPAGE = "https://github.com/openbmc/openpower-pnor-code-mgmt"
PR = "r1"
PV = "1.0+git${SRCPV}"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
inherit meson pkgconfig systemd
inherit obmc-phosphor-dbus-service
# Static configuration. This is the default if no other layout is specified.
inherit ${@bb.utils.contains_any('DISTRO_FEATURES', \
'openpower-ubi-fs phosphor-mmc', \
'', \
'openpower-software-manager-static', d)}
# UBI layout
inherit ${@bb.utils.contains('DISTRO_FEATURES', 'openpower-ubi-fs', \
'openpower-software-manager-ubi', \
'', d)}
# eMMC layout
inherit ${@bb.utils.contains('DISTRO_FEATURES', 'phosphor-mmc', \
'openpower-software-manager-mmc', \
'', d)}
# Virtual PNOR
inherit ${@bb.utils.contains('DISTRO_FEATURES', 'openpower-virtual-pnor', \
'openpower-software-manager-virtual-pnor', \
'', d)}
# PLDM Support
inherit ${@bb.utils.contains('DISTRO_FEATURES', 'openpower-hostfw-over-pldm', \
'openpower-software-manager-pldm', \
'', d)}
PACKAGECONFIG[verify_pnor_signature] = "-Dverify-signature=enabled, -Dverify-signature=disabled"
PACKAGECONFIG[ubifs_layout] = "-Ddevice-type=ubi,,,mtd-utils-ubifs"
PACKAGECONFIG[mmc_layout] = "-Ddevice-type=mmc"
PACKAGECONFIG[virtual_pnor] = "-Dvpnor=enabled, -Dvpnor=disabled,,bash"
PACKAGECONFIG[pldm] = "-Dpldm=enabled, -Dpldm=disabled"
EXTRA_OEMESON += " \
-Dtests=disabled \
-Dmsl="v2.0.10 v2.2" \
"
DEPENDS += " \
cli11 \
dbus \
nlohmann-json \
openssl \
phosphor-dbus-interfaces \
phosphor-logging \
sdbusplus \
"
RDEPENDS:${PN} += " \
virtual-obmc-image-manager \
"
FILES:${PN} += "${datadir}/dbus-1/system.d/org.open_power.Software.Host.Updater.conf"
S = "${WORKDIR}/git"
SRC_URI = "git://github.com/openbmc/openpower-pnor-code-mgmt;branch=master;protocol=https"
SRCREV = "90475e7458facb793b8c32a2148eacf1062a35c5"
DBUS_SERVICE:${PN} += "org.open_power.Software.Host.Updater.service"
SYSTEMD_SERVICE:${PN} += " \
op-pnor-msl.service \
"
@@ -0,0 +1,3 @@
[Unit]
Wants=op-vpd-parser.service
After=op-vpd-parser.service
@@ -0,0 +1,4 @@
FILESEXTRAPATHS:prepend:df-openpower := "${THISDIR}/${PN}:"
SYSTEMD_OVERRIDE:${PN}-updater:append:df-openpower = \
" software-bmc-updater.conf:xyz.openbmc_project.Software.BMC.Updater.service.d/software-bmc-updater.conf"
@@ -0,0 +1,22 @@
SUMMARY = "FSI Services"
DESCRIPTION = "Install FSI related services"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit obmc-phosphor-systemd
RDEPENDS:${PN} += "op-proc-control"
TGTFMT_CHASSIS = "obmc-chassis-poweron@{0}.target"
TGTFMT_HOST = "obmc-host-startmin@{0}.target"
TMPL_SCAN = "fsi-scan@.service"
INSTFMT_SCAN = "fsi-scan@{0}.service"
FMT_SCAN_CHASSIS = "../${TMPL_SCAN}:${TGTFMT_CHASSIS}.wants/${INSTFMT_SCAN}"
FMT_SCAN_HOST = "../${TMPL_SCAN}:${TGTFMT_HOST}.wants/${INSTFMT_SCAN}"
SYSTEMD_SERVICE:${PN} += "${TMPL_SCAN} fsi-enable.service fsi-disable.service"
SYSTEMD_LINK:${PN} += "${@compose_list(d, 'FMT_SCAN_CHASSIS', 'OBMC_CHASSIS_INSTANCES')}"
SYSTEMD_LINK:${PN} += "${@compose_list(d, 'FMT_SCAN_HOST', 'OBMC_HOST_INSTANCES')}"
@@ -0,0 +1,9 @@
[Unit]
Description=Disable FSI
Conflicts=fsi-enable.service
[Service]
ExecStart=/usr/bin/openpower-proc-control setSyncFSIClock
ExecStart=/bin/sh -c "echo 1 > /sys/devices/platform/gpio-fsi/external_mode"
Type=oneshot
RemainAfterExit=yes
@@ -0,0 +1,10 @@
[Unit]
Description=Enable FSI
Conflicts=fsi-disable.service
Wants=fsi-scan@0.service
Before=fsi-scan@0.service
[Service]
ExecStart=/bin/sh -c "echo 0 > /sys/devices/platform/gpio-fsi/external_mode"
Type=oneshot
RemainAfterExit=yes
@@ -0,0 +1,21 @@
[Unit]
Description=Scan FSI devices
Wants=obmc-power-on@%i.target
After=obmc-power-on@%i.target
Wants=obmc-host-start-pre@%i.target
Before=obmc-host-start-pre@%i.target
After=op-cfam-reset.service
Before=start_host@%i.service
Conflicts=obmc-chassis-poweroff@%i.target
Conflicts=obmc-host-stop@%i.target
ConditionPathExists=!/run/openbmc/mpreboot@%i
[Service]
ExecStart=/usr/bin/openpower-proc-control scanFSI
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=obmc-chassis-poweron@%i.target
WantedBy=obmc-host-startmin@%i.target
@@ -0,0 +1,9 @@
[Unit]
Description=ASPEED LPC boot from PNOR
[Service]
Type=oneshot
ExecStart=/usr/sbin/pnorboot --size 32
[Install]
WantedBy=multi-user.target
@@ -0,0 +1,17 @@
SUMMARY = "ASPEED LPC Host Interface Control tool"
DESCRIPTION = "Configures the BMC to expose memory regions to the host"
PR = "r1"
PV = "1.0+git${SRCPV}"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=fa818a259cbed7ce8bc2a22d35a464fc"
inherit obmc-phosphor-systemd
inherit autotools
S = "${WORKDIR}/git"
SYSTEMD_SERVICE:${PN} += "pnorboot.service"
SRC_URI = "git://github.com/shenki/aspeed-lpc-control;branch=master;protocol=https"
SRCREV = "af42b7ff01e71c0dd4c60214dd46ed487611f36d"
@@ -0,0 +1,31 @@
SUMMARY = "OpenPOWER Host checkstop monitor application"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit obmc-phosphor-systemd
inherit allarch
DEPENDS += "phosphor-gpio-monitor"
RDEPENDS:${PN} += "phosphor-gpio-monitor-monitor"
# For now, monitoring checkstop is the only usecase
OBMC_HOST_MONITOR_INSTANCES = "checkstop"
# Copies config file having arguments for monitoring host checkstop
# via GPIO assertion
SYSTEMD_ENVIRONMENT_FILE:${PN} +="obmc/gpio/checkstop"
# This package is not supplying the unit file and also this is not a native
# recipe since state-mgmt needs this package at runtime. Unsetting this below
# variable will let the build go through
SYSTEMD_SERVICE:${PN} ?=""
# Install the override to set up a Conflicts relation
SYSTEMD_OVERRIDE:${PN} +="checkstop.conf:phosphor-gpio-monitor@checkstop.service.d/checkstop.conf"
STATES = "startmin"
GPIO_MONITOR_TMPL = "phosphor-gpio-monitor@.service"
GPIO_MONITOR_TGTFMT = "phosphor-gpio-monitor@{1}.service"
CHECKSTOP_MONITOR_FMT = "../${GPIO_MONITOR_TMPL}:obmc-host-{0}@{2}.target.wants/${GPIO_MONITOR_TGTFMT}"
SYSTEMD_LINK:${PN} += "${@compose_list(d, 'CHECKSTOP_MONITOR_FMT', 'STATES', 'OBMC_HOST_MONITOR_INSTANCES', 'OBMC_HOST_INSTANCES')}"
@@ -0,0 +1,3 @@
[Unit]
Conflicts=obmc-host-crash@0.target
Conflicts=obmc-host-stop@0.target
@@ -0,0 +1,4 @@
DEVPATH=/dev/input/by-path/platform-gpio-keys-event
KEY=74
POLARITY=1
TARGET=obmc-host-crash@0.target
@@ -0,0 +1,21 @@
[Unit]
Description=Applies user CFAM register overrides from file
Wants=obmc-host-start-pre@%i.target
Before=obmc-host-start-pre@%i.target
Wants=obmc-power-on@%i.target
After=obmc-power-on@%i.target
Wants=fsi-scan@%i.service
After=fsi-scan@%i.service
Conflicts=obmc-chassis-poweroff@%i.target
Conflicts=obmc-host-stop@%i.target
ConditionPathExists=!/run/openbmc/chassis@%i-on
ConditionPathExists=/var/lib/obmc/cfam_overrides
[Service]
ExecStart=/usr/bin/openpower-proc-control CFAMOverride
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=obmc-chassis-poweron@%i.target
WantedBy=obmc-host-startmin@%i.target
@@ -0,0 +1,20 @@
[Unit]
Description=Start host%i SBE
Wants=obmc-host-start-pre@%i.target
After=obmc-host-start-pre@%i.target
Wants=obmc-host-starting@%i.target
Before=obmc-host-starting@%i.target
Before=obmc-host-started@%i.target
Wants=obmc-power-on@%i.target
After=obmc-power-on@%i.target
Conflicts=obmc-host-stop@%i.target
ConditionPathExists=!/run/openbmc/host@%i-on
ConditionPathExists=!/run/openbmc/mpreboot@%i
[Service]
ExecStart=/usr/bin/openpower-proc-control startHost
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=obmc-host-start@%i.target
@@ -0,0 +1,190 @@
SUMMARY = "OpenPOWER processor control services installation"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit allarch
RDEPENDS:${PN} += "op-proc-control"
RDEPENDS:${PN} += "phosphor-state-manager-obmc-targets"
ALLOW_EMPTY:${PN} = "1"
pkg_postinst:${PN}() {
mkdir -p $D$systemd_system_unitdir/obmc-host-stop@0.target.wants
mkdir -p $D$systemd_system_unitdir/obmc-host-force-warm-reboot@0.target.requires
mkdir -p $D$systemd_system_unitdir/obmc-host-startmin@0.target.requires
mkdir -p $D$systemd_system_unitdir/obmc-host-startmin@0.target.wants
mkdir -p $D$systemd_system_unitdir/obmc-host-diagnostic-mode@0.target.requires
mkdir -p $D$systemd_system_unitdir/obmc-chassis-poweron@0.target.requires
mkdir -p $D$systemd_system_unitdir/obmc-host-quiesce@0.target.wants
LINK="$D$systemd_system_unitdir/obmc-host-stop@0.target.wants/op-stop-instructions@0.service"
TARGET="../op-stop-instructions@.service"
ln -s $TARGET $LINK
LINK="$D$systemd_system_unitdir/obmc-host-quiesce@0.target.wants/op-clear-sys-dump-active@0.service"
TARGET="../op-clear-sys-dump-active@.service"
ln -s $TARGET $LINK
LINK="$D$systemd_system_unitdir/obmc-host-quiesce@0.target.wants/op-stop-instructions@0.service"
TARGET="../op-stop-instructions@.service"
ln -s $TARGET $LINK
LINK="$D$systemd_system_unitdir/obmc-host-startmin@0.target.requires/op-cfam-reset.service"
TARGET="../op-cfam-reset.service"
ln -s $TARGET $LINK
LINK="$D$systemd_system_unitdir/obmc-host-startmin@0.target.wants/xyz.openbmc_project.Control.Host.NMI.service"
TARGET="../xyz.openbmc_project.Control.Host.NMI.service"
ln -s $TARGET $LINK
LINK="$D$systemd_system_unitdir/obmc-chassis-poweron@0.target.requires/op-cfam-reset.service"
TARGET="../op-cfam-reset.service"
ln -s $TARGET $LINK
# Only install cfam override if p9 system
if [ "${@bb.utils.contains("MACHINE_FEATURES", "p9-cfam-override", "True", "False", d)}" = True ]; then
mkdir -p $D$systemd_system_unitdir/obmc-host-startmin@0.target.requires
LINK="$D$systemd_system_unitdir/obmc-host-startmin@0.target.requires/cfam_override@0.service"
TARGET="../cfam_override@.service"
ln -s $TARGET $LINK
fi
LINK="$D$systemd_system_unitdir/obmc-host-startmin@0.target.requires/op-continue-mpreboot@0.service"
TARGET="../op-continue-mpreboot@.service"
ln -s $TARGET $LINK
# Only install certain units if phal enabled
if [ "${@bb.utils.filter('MACHINE_FEATURES', 'phal', d)}" = phal ]; then
LINK="$D$systemd_system_unitdir/obmc-host-stop@0.target.wants/op-clear-sys-dump-active@0.service"
TARGET="../op-clear-sys-dump-active@.service"
ln -s $TARGET $LINK
mkdir -p $D$systemd_system_unitdir/multi-user.target.wants
LINK="$D$systemd_system_unitdir/multi-user.target.wants/op-clear-sys-dump-active@0.service"
TARGET="../op-clear-sys-dump-active@.service"
ln -s $TARGET $LINK
mkdir -p $D$systemd_system_unitdir/obmc-host-start@0.target.requires
LINK="$D$systemd_system_unitdir/obmc-host-start@0.target.requires/phal-reinit-devtree.service"
TARGET="../phal-reinit-devtree.service"
ln -s $TARGET $LINK
LINK="$D$systemd_system_unitdir/obmc-chassis-poweroff@0.target.requires/proc-pre-poweroff@0.service"
TARGET="../proc-pre-poweroff@.service"
ln -s $TARGET $LINK
LINK="$D$systemd_system_unitdir/obmc-host-reset@0.target.requires/op-reset-host-check@0.service"
TARGET="../op-reset-host-check@.service"
ln -s $TARGET $LINK
LINK="$D$systemd_system_unitdir/multi-user.target.wants/phal-import-devtree@0.service"
TARGET="../phal-import-devtree@.service"
ln -s $TARGET $LINK
mkdir -p $D$systemd_system_unitdir/obmc-host-startmin@0.target.wants
LINK="$D$systemd_system_unitdir/obmc-host-startmin@0.target.wants/phal-export-devtree@0.service"
TARGET="../phal-export-devtree@.service"
ln -s $TARGET $LINK
mkdir -p $D$systemd_system_unitdir/obmc-host-start@0.target.wants
LINK="$D$systemd_system_unitdir/obmc-host-start@0.target.wants/phal-create-boottime-guard-indicator.service"
TARGET="../phal-create-boottime-guard-indicator.service"
ln -s $TARGET $LINK
LINK="$D$systemd_system_unitdir/obmc-host-quiesce@0.target.wants/phal-create-boottime-guard-indicator.service"
ln -s $TARGET $LINK
mkdir -p $D$systemd_system_unitdir/obmc-host-startmin@0.target.wants
LINK="$D$systemd_system_unitdir/obmc-host-startmin@0.target.wants/op-clock-data-logger@0.service"
TARGET="../op-clock-data-logger@.service"
ln -s $TARGET $LINK
mkdir -p $D$systemd_system_unitdir/obmc-chassis-poweroff@0.target.wants
LINK="$D$systemd_system_unitdir/obmc-chassis-poweroff@0.target.wants/set-spi-mux.service"
TARGET="../set-spi-mux.service"
ln -s $TARGET $LINK
fi
# If the memory preserving reboot feature is enabled, set it up
if [ "${@bb.utils.filter('DISTRO_FEATURES', 'mpreboot', d)}" = mpreboot ]; then
# on mpreboot systems, obmc-host-crash@.target is used for mpreboot
mkdir -p $D$systemd_system_unitdir/obmc-host-crash@0.target.requires
LINK="$D$systemd_system_unitdir/obmc-host-crash@0.target.requires/obmc-host-force-warm-reboot@0.target"
TARGET="../obmc-host-force-warm-reboot@.target"
ln -s $TARGET $LINK
LINK="$D$systemd_system_unitdir/obmc-host-crash@0.target.requires/op-enter-mpreboot@0.service"
TARGET="../op-enter-mpreboot@.service"
ln -s $TARGET $LINK
# ensure diagnostic mode is shown for MPREBOOT
LINK="$D$systemd_system_unitdir/obmc-host-crash@0.target.requires/obmc-host-diagnostic-mode@0.target"
TARGET="../obmc-host-diagnostic-mode@.target"
ln -s $TARGET $LINK
else
# If not a mpreboot system, default to quiesce target in crash target to support
# older system designs like witherspoon
mkdir -p $D$systemd_system_unitdir/obmc-host-crash@0.target.wants
LINK="$D$systemd_system_unitdir/obmc-host-crash@0.target.wants/obmc-host-quiesce@0.target"
TARGET="../obmc-host-quiesce@.target"
ln -s $TARGET $LINK
fi
}
pkg_prerm:${PN}() {
LINK="$D$systemd_system_unitdir/obmc-host-stop@0.target.wants/op-stop-instructions@0.service"
rm $LINK
LINK="$D$systemd_system_unitdir/obmc-host-startmin@0.target.requires/op-cfam-reset.service"
rm $LINK
LINK="$D$systemd_system_unitdir/obmc-chassis-poweron@0.target.requires/op-cfam-reset.service"
rm $LINK
LINK="$D$systemd_system_unitdir/obmc-host-startmin@0.target.wants/xyz.openbmc_project.Control.Host.NMI.service"
rm $LINK
# Only uninstall cfam override if p9 system
if [ "${@bb.utils.contains("MACHINE_FEATURES", "p9-cfam-override", "True", "False", d)}" = True ]; then
LINK="$D$systemd_system_unitdir/obmc-host-startmin@0.target.requires/cfam_override@0.service"
rm $LINK
fi
LINK="$D$systemd_system_unitdir/obmc-host-startmin@0.target.requires/op-continue-mpreboot@0.service"
rm $LINK
# Remove phal specific units if enabled
if [ "${@bb.utils.filter('MACHINE_FEATURES', 'phal', d)}" = phal ]; then
LINK="$D$systemd_system_unitdir/obmc-host-start@0.target.requires/phal-reinit-devtree.service"
rm $LINK
LINK="$D$systemd_system_unitdir/obmc-chassis-poweroff@0.target.requires/proc-pre-poweroff@0.service"
rm $LINK
LINK="$D$systemd_system_unitdir/obmc-chassis-poweroff@0.target.wants/set-spi-mux.service"
rm $LINK
LINK="$D$systemd_system_unitdir/multi-user.target.wants/phal-import-devtree@0.service"
rm $LINK
LINK="$D$systemd_system_unitdir/obmc-host-startmin@0.target.wants/phal-export-devtree@0.service"
rm $LINK
LINK="$D$systemd_system_unitdir/obmc-host-start@0.target.wants/phal-create-boottime-guard-indicator.service"
rm $LINK
LINK="$D$systemd_system_unitdir/obmc-host-quiesce@0.target.wants/phal-create-boottime-guard-indicator.service"
rm $LINK
LINK="$D$systemd_system_unitdir/obmc-host-startmin@0.target.wants/op-clock-data-logger@0.service"
rm $LINK
fi
# Remove mpreboot specific units if enabled
if [ "${@bb.utils.filter('DISTRO_FEATURES', 'mpreboot', d)}" = mpreboot ]; then
LINK="$D$systemd_system_unitdir/obmc-host-crash@0.target.requires/obmc-host-force-warm-reboot@0.target"
rm $LINK
LINK="$D$systemd_system_unitdir/obmc-host-crash@0.target.requires/op-enter-mpreboot@0.service"
rm $LINK
else
LINK="$D$systemd_system_unitdir/obmc-host-crash@0.target.wants/obmc-host-quiesce@0.target"
rm $LINK
fi
}
@@ -0,0 +1,58 @@
SUMMARY = "OpenPower procedure control"
DESCRIPTION = "Provides procedures that run against the host chipset"
PR = "r1"
PV = "1.0+git${SRCPV}"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
S = "${WORKDIR}/git"
inherit meson obmc-phosphor-utils pkgconfig
inherit systemd
SRC_URI = "git://github.com/openbmc/openpower-proc-control;branch=master;protocol=https"
SRCREV = "3f97eaa4b6f6a4c7cf97a0c80566eb6783d7e8af"
DEPENDS += " \
phosphor-logging \
phosphor-dbus-interfaces \
libgpiod \
"
RDEPENDS:${PN} += " op-proc-control-systemd-links"
EXTRA_OEMESON += "-Dtests=disabled"
# For libpdbg, provided by the pdbg package
DEPENDS += "pdbg"
PACKAGECONFIG ??= "${@bb.utils.filter('OBMC_MACHINE_FEATURES', 'phal op-fsi', d)}"
PACKAGECONFIG[phal] = "-Dphal=enabled, -Dphal=disabled -Dp9=enabled, ipl pdata"
PACKAGECONFIG[op-fsi] = "-Dopenfsi=enabled, -Dopenfsi=disabled"
# By default all openpower systems support op-fsi
PACKAGECONFIG = " op-fsi"
TEMPLATE = "pcie-poweroff@.service"
INSTANCE_FORMAT = "pcie-poweroff@{}.service"
INSTANCES = "${@compose_list(d, 'INSTANCE_FORMAT', 'OBMC_CHASSIS_INSTANCES')}"
SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE:${PN} = "${TEMPLATE} ${INSTANCES}"
SYSTEMD_SERVICE:${PN} += " \
op-cfam-reset.service \
op-continue-mpreboot@.service \
op-enter-mpreboot@.service \
op-stop-instructions@.service \
xyz.openbmc_project.Control.Host.NMI.service \
${@bb.utils.contains('MACHINE_FEATURES', 'phal', 'op-reset-host-check@.service', '', d)} \
${@bb.utils.contains('MACHINE_FEATURES', 'phal', 'op-reset-host-clear.service', '', d)} \
${@bb.utils.contains('MACHINE_FEATURES', 'phal', 'phal-export-devtree@.service', '', d)} \
${@bb.utils.contains('MACHINE_FEATURES', 'phal', 'phal-import-devtree@.service', '', d)} \
${@bb.utils.contains('MACHINE_FEATURES', 'phal', 'phal-reinit-devtree.service', '', d)} \
${@bb.utils.contains('MACHINE_FEATURES', 'phal', 'proc-pre-poweroff@.service', '', d)} \
${@bb.utils.contains('MACHINE_FEATURES', 'phal', 'set-spi-mux.service', '', d)} \
${@bb.utils.contains('MACHINE_FEATURES', 'phal', 'phal-create-boottime-guard-indicator.service', '', d)} \
${@bb.utils.contains('MACHINE_FEATURES', 'phal', 'op-clear-sys-dump-active@.service', '', d)} \
${@bb.utils.contains('MACHINE_FEATURES', 'phal', 'op-clock-data-logger@.service', '', d)} \
"
@@ -0,0 +1,20 @@
SUMMARY = "POWER9 CFAM override"
DESCRIPTION = "Applies user CFAM register overrides from file"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit obmc-phosphor-systemd
FILESEXTRAPATHS:prepend := "${THISDIR}/op-host-control:"
RDEPENDS:${PN} += "op-proc-control"
S = "${WORKDIR}"
TMPL = "cfam_override@.service"
INSTFMT = "cfam_override@{0}.service"
TGTFMT = "obmc-chassis-poweron@{0}.target"
FMT = "../${TMPL}:${TGTFMT}.requires/${INSTFMT}"
SYSTEMD_SERVICE:${PN} += "${TMPL}"
SYSTEMD_LINK:${PN} += "${@compose_list(d, 'FMT', 'OBMC_CHASSIS_INSTANCES')}"
@@ -0,0 +1,25 @@
SUMMARY = "POWER9 start host"
DESCRIPTION = "Service to start POWER9 IPL through SBE"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit obmc-phosphor-systemd
FILESEXTRAPATHS:prepend := "${THISDIR}/op-host-control:"
PROVIDES += 'virtual/obmc-host-ctl'
RPROVIDES:${PN} += 'virtual-obmc-host-ctl'
RDEPENDS:${PN} += "op-proc-control \
op-proc-control-systemd-links"
S = "${WORKDIR}"
TMPL = "start_host@.service"
INSTFMT = "start_host@{0}.service"
TGTFMT = "obmc-host-startmin@{0}.target"
FMT = "../${TMPL}:${TGTFMT}.requires/${INSTFMT}"
SYSTEMD_SERVICE:${PN} += "${TMPL}"
SYSTEMD_LINK:${PN} += "${@compose_list(d, 'FMT', 'OBMC_CHASSIS_INSTANCES')}"
@@ -0,0 +1 @@
RDEPENDS:${PN}:append:df-openpower = " cf-fsi-firmware"
@@ -0,0 +1,4 @@
EXTRA_OEMESON:append:df-openpower = " \
-Dredfish-dbus-log=enabled \
-Dhttp-body-limit=400 \
"
@@ -0,0 +1,20 @@
SUMMARY = "Hostboot hostfw inventory map for phosphor-ipmi-fru"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit phosphor-ipmi-fru
inherit native
SRC_URI += "file://config.yaml"
PROVIDES += "virtual/phosphor-ipmi-fru-hostfw-config"
S = "${WORKDIR}"
do_install() {
DEST=${D}${hostfw_datadir}
install -d ${DEST}
install config.yaml ${DEST}
}
@@ -0,0 +1,140 @@
PROC:
EntityID: 3
Interfaces:
xyz.openbmc_project.Inventory.Decorator.Asset:
BuildDate:
IPMIFruSection: Board
IPMIFruProperty: "Mfg Date"
Manufacturer:
IPMIFruSection: Board
IPMIFruProperty: "Manufacturer"
PartNumber:
IPMIFruSection: Board
IPMIFruProperty: "Part Number"
SerialNumber:
IPMIFruSection: Board
IPMIFruProperty: "Serial Number"
xyz.openbmc_project.Inventory.Item:
PrettyName:
IPMIFruSection: Board
IPMIFruProperty: "Name"
xyz.openbmc_project.Inventory.Decorator.Revision:
Version:
IPMIFruSection: Board
# Custom Field 2 is EC.
IPMIFruProperty: "Custom Field 2"
# Delimiter value in ascii as YAML parser
# was not allowing certain characters like ":" as value
IPMIFruValueDelimiter: "58"
xyz.openbmc_project.Inventory.Item.Cpu:
SYS:
# same entity ID as it is Associated type of NODE
EntityID: 7
Interfaces:
xyz.openbmc_project.Inventory.Decorator.Asset:
Model:
IPMIFruSection: Chassis
IPMIFruProperty: "Part Number"
SerialNumber:
IPMIFruSection: Chassis
IPMIFruProperty: "Serial Number"
xyz.openbmc_project.Inventory.Item.System:
NODE:
EntityID: 7
Interfaces:
xyz.openbmc_project.Inventory.Decorator.Asset:
BuildDate:
IPMIFruSection: Board
IPMIFruProperty: "Mfg Date"
Manufacturer:
IPMIFruSection: Board
IPMIFruProperty: "Manufacturer"
PartNumber:
IPMIFruSection: Board
IPMIFruProperty: "Part Number"
SerialNumber:
IPMIFruSection: Board
IPMIFruProperty: "Serial Number"
xyz.openbmc_project.Inventory.Item:
PrettyName:
IPMIFruSection: Board
IPMIFruProperty: "Name"
xyz.openbmc_project.Inventory.Item.Board:
AssociatedTypes:
- SYS
DIMM:
EntityID: 32
Interfaces:
xyz.openbmc_project.Inventory.Decorator.Asset:
BuildDate:
IPMIFruSection: Product
IPMIFruProperty: "Mfg Date"
Manufacturer:
IPMIFruSection: Product
IPMIFruProperty: "Manufacturer"
PartNumber:
IPMIFruSection: Product
IPMIFruProperty: "Part Number"
SerialNumber:
IPMIFruSection: Product
IPMIFruProperty: "Serial Number"
Model:
IPMIFruSection: Product
IPMIFruProperty: "Model Number"
xyz.openbmc_project.Inventory.Item:
PrettyName:
IPMIFruSection: Product
IPMIFruProperty: "Name"
xyz.openbmc_project.Inventory.Decorator.Revision:
Version:
IPMIFruSection: Product
IPMIFruProperty: "Version"
xyz.openbmc_project.Inventory.Item.Dimm:
MEMBUFF:
EntityID: 8
Interfaces:
xyz.openbmc_project.Inventory.Decorator.Asset:
BuildDate:
IPMIFruSection: Board
IPMIFruProperty: "Mfg Date"
Manufacturer:
IPMIFruSection: Board
IPMIFruProperty: "Manufacturer"
PartNumber:
IPMIFruSection: Board
IPMIFruProperty: "Part Number"
SerialNumber:
IPMIFruSection: Board
IPMIFruProperty: "Serial Number"
xyz.openbmc_project.Inventory.Item:
PrettyName:
IPMIFruSection: Board
IPMIFruProperty: "Name"
xyz.openbmc_project.Inventory.Item.MemoryBuffer:
TPM:
EntityID: 176
Interfaces:
xyz.openbmc_project.Inventory.Decorator.Asset:
BuildDate:
IPMIFruSection: Board
IPMIFruProperty: "Mfg Date"
Manufacturer:
IPMIFruSection: Board
IPMIFruProperty: "Manufacturer"
PartNumber:
IPMIFruSection: Board
IPMIFruProperty: "Part Number"
SerialNumber:
IPMIFruSection: Board
IPMIFruProperty: "Serial Number"
xyz.openbmc_project.Inventory.Item:
PrettyName:
IPMIFruSection: Board
IPMIFruProperty: "Name"
xyz.openbmc_project.Inventory.Item.Tpm:
@@ -0,0 +1,29 @@
SUMMARY = "Phosphor IPMI plugin for the Host I/O Mapping Protocol"
HOMEPAGE = "https://github.com/openbmc/openpower-host-ipmi-flash"
PR = "r1"
PV = "0.1+git${SRCPV}"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=ff331e820fda701d36a8f0efc98adc58"
inherit meson pkgconfig
inherit obmc-phosphor-ipmiprovider-symlink
DEPENDS += "phosphor-ipmi-host"
DEPENDS += "sdbusplus"
DEPENDS += "phosphor-logging"
DEPENDS += "phosphor-dbus-interfaces"
TARGET_CFLAGS += "-fpic"
HOSTIPMI_PROVIDER_LIBRARY += "libhiomap.so"
S = "${WORKDIR}/git"
SRC_URI = "git://github.com/openbmc/openpower-host-ipmi-flash;branch=master;protocol=https"
SRCREV = "a917d24ef6881426fa2a15a8fac89b5554a64c49"
EXTRA_OEMESON:append = " -Dtests=disabled"
FILES:${PN}:append = " ${libdir}/ipmid-providers/lib*${SOLIBS}"
FILES:${PN}:append = " ${libdir}/host-ipmid/lib*${SOLIBS}"
FILES:${PN}-dev:append = " ${libdir}/ipmid-providers/lib*${SOLIBSDEV} ${libdir}/ipmid-providers/*.la"
@@ -0,0 +1,19 @@
SUMMARY = "Copy error yaml files to known path for elog parsing"
PR = "r1"
PV = "1.0+git${SRCPV}"
inherit phosphor-dbus-yaml
inherit native
require openpower-ipmi-oem.inc
S = "${WORKDIR}/git"
do_install:append() {
SRC=${S}/org/open_power/OCC
DEST=${D}${yaml_dir}/org/open_power/OCC
install -d ${DEST}
install ${SRC}/Metrics.errors.yaml ${DEST}
install ${SRC}/Metrics.metadata.yaml ${DEST}
}
@@ -0,0 +1,17 @@
SUMMARY = "OEM sensor config for phosphor-host-ipmid"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit phosphor-ipmi-host
inherit native
SRC_URI += "file://openpower-config.yaml"
S = "${WORKDIR}"
do_install() {
DEST=${D}${sensor_yamldir}
install -d ${DEST}
install openpower-config.yaml ${DEST}/openpower-config.yaml
}
@@ -0,0 +1,34 @@
occ_active_sensor:
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
mutability: Mutability::Write|Mutability::Read
sensorNamePattern: nameLeaf
interfaces:
org.open_power.OCC.Status:
OccActive:
Offsets:
0x00:
type: "bool"
assert: "false"
deassert: "true"
0x01:
type: "bool"
assert: "true"
deassert: "false"
hb_volatile_sensor:
path: /org/open_power/control/volatile
serviceInterface: org.freedesktop.DBus.Properties
readingType: assertion
mutability: Mutability::Write|Mutability::Read
sensorNamePattern: nameLeaf
interfaces:
xyz.openbmc_project.Object.Enable:
Enabled:
Offsets:
0x00:
type: "bool"
assert: false
0x01:
type: "bool"
assert: true
@@ -0,0 +1,7 @@
SUMMARY = "Whitelisted OpenBMC IPMI OEM commands"
DESCRIPTION = "Whitelisted OpenBMC IPMI OEM commands for OpenPOWER based systems"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit phosphor-ipmi-host-whitelist
inherit native
@@ -0,0 +1,3 @@
#<NetFn>:<Command>
0x3A:0x5A //<OpenPower IBM OEM>:<Host IO Mapping Protocol (HIOMAP)>
0x3A:0xF0 //<OpenPower IBM OEM>:<Add Partial eSEL command>
@@ -0,0 +1,10 @@
SUMMARY = "openpower-ipmi-oem: install phosphor-logging yaml"
PR = "r1"
PV = "1.0+git${SRCPV}"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit phosphor-logging-yaml-provider
require openpower-ipmi-oem.inc
S = "${WORKDIR}/git"
@@ -0,0 +1,5 @@
HOMEPAGE = "https://github.com/openbmc/openpower-host-ipmi-oem"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=fa818a259cbed7ce8bc2a22d35a464fc"
SRC_URI += "git://github.com/openbmc/openpower-host-ipmi-oem;branch=master;protocol=https"
SRCREV = "490126f9ad350b9503e52942ac450a2e831bf3f0"
@@ -0,0 +1,36 @@
SUMMARY = "Phosphor IPMI plugin for OpenPOWER OEM Commands"
DESCRIPTION = "Phosphor IPMI plugin for OpenPOWER OEM Commands"
PR = "r1"
PV = "1.0+git${SRCPV}"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
inherit autotools pkgconfig
inherit obmc-phosphor-ipmiprovider-symlink
inherit python3native
require ${BPN}.inc
DEPENDS += "phosphor-ipmi-host"
DEPENDS += "autoconf-archive-native"
DEPENDS += "sdbusplus"
DEPENDS += "${PYTHON_PN}-sdbus++-native"
DEPENDS += "${PYTHON_PN}-mako-native"
DEPENDS += "${PYTHON_PN}-pyyaml-native"
DEPENDS += "phosphor-logging"
DEPENDS += "phosphor-dbus-interfaces"
DEPENDS += "virtual/phosphor-ipmi-inventory-sel"
TARGET_CFLAGS += "-fpic"
HOSTIPMI_PROVIDER_LIBRARY += "liboemhandler.so"
EXTRA_OECONF = " \
INVSENSOR_YAML_GEN=${STAGING_DIR_NATIVE}${datadir}/phosphor-ipmi-host/sensor/invsensor.yaml \
"
S = "${WORKDIR}/git"
FILES:${PN}:append = " ${libdir}/ipmid-providers/lib*${SOLIBS}"
FILES:${PN}:append = " ${libdir}/host-ipmid/lib*${SOLIBS}"
FILES:${PN}-dev:append = " ${libdir}/ipmid-providers/lib*${SOLIBSDEV} ${libdir}/ipmid-providers/*.la"
@@ -0,0 +1 @@
OBMC_IPMI_SENSORS_PROVIDERS:append:df-openpower = " openpower-ipmi-oem-sensor-inventory-mrw-native"
@@ -0,0 +1,13 @@
SUMMARY = "Hostboot PEL python parsers"
DESCRIPTION = "Used by peltool to parse Hostboot UserData sections and SRC details"
PR = "r1"
PV = "1.0+git${SRCPV}"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=34400b68072d710fecd0a2940a0d1658"
S = "${WORKDIR}/git"
SRC_URI:p10bmc = "git://git@github.com/open-power/hostboot;branch="master-p10";protocol=ssh"
SRCREV:p10bmc = "d796168959bc338e8c8a990403c535ee5d8b31c4"
inherit setuptools3
@@ -0,0 +1,49 @@
SUMMARY = "Hardware Diagnostics for POWER Systems"
DESCRIPTION = \
"In the event of a system fatal error reported by the internal system \
hardware (processor chips, memory chips, I/O chips, system memory, etc.), \
POWER Systems have the ability to diagnose the root cause of the failure \
and perform any service action needed to avoid repeated system failures."
HOMEPAGE = "https://github.com/openbmc/openpower-hw-diags"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
PR = "r1"
PV = "0.1+git${SRCPV}"
SRC_URI = "git://github.com/openbmc/openpower-hw-diags;branch=master;protocol=https"
SRCREV = "7c80e52bdce3b96fd59c5a0e5d6de5119d5831a4"
S = "${WORKDIR}/git"
inherit pkgconfig meson systemd
SYSTEMD_SERVICE:${PN} = "attn_handler.service"
DEPENDS = "boost libgpiod pdbg phosphor-logging sdbusplus openpower-libhei \
nlohmann-json valijson fmt"
# This is required so that libhei is installed with the chip data files.
RDEPENDS:${PN} += "openpower-libhei"
# Conditionally pull in PHAL APIs, if available.
PACKAGECONFIG ??= "${@bb.utils.filter('MACHINE_FEATURES', 'phal', d)}"
PACKAGECONFIG[phal] = "-Dphal=enabled, -Dphal=disabled, ipl pdata"
# Don't build CI tests
EXTRA_OEMESON = "-Dtests=disabled"
pkg_postinst:${PN}() {
mkdir -p $D$systemd_system_unitdir/obmc-host-startmin@0.target.wants
LINK="$D$systemd_system_unitdir/obmc-host-startmin@0.target.wants/attn_handler.service"
TARGET="../attn_handler.service"
ln -s $TARGET $LINK
}
pkg_prerm:${PN}() {
LINK="$D$systemd_system_unitdir/obmc-host-startmin@0.target.wants/attn_handler.service"
rm $LINK
}
@@ -0,0 +1,6 @@
PR = "r1"
PV = "0.1+git${SRCPV}"
SRC_URI = "git://github.com/openbmc/openpower-libhei;branch=master;protocol=https"
SRCREV = "029fe6f1a2cd0967dc139cf3043df05cc97a0569"
@@ -0,0 +1,23 @@
SUMMARY = "Hardware Error Isolator for POWER Systems"
DESCRIPTION = \
"The library provides a set of tools to isolate hardware attentions driven \
by POWER Systems chip (processor chips, memory chips, etc.)."
HOMEPAGE = "https://github.com/openbmc/openpower-libhei"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
include openpower-libhei-rev.inc
S = "${WORKDIR}/git"
inherit pkgconfig meson
inherit perlnative
DEPENDS = "libxml2-native libxml-simple-perl-native libjson-perl-native"
# Don't build CI tests
EXTRA_OEMESON = "-Dtests=disabled"
@@ -0,0 +1,15 @@
SUMMARY = "SBE log python parsers"
DESCRIPTION = "Used by peltool to parse SBE UserData sections and SRC details"
HOMEPAGE = "https://github.ibm.com/open-power/sbe"
PR = "r1"
PV = "1.0+git${SRCPV}"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE_PROLOG;md5=d8e5f403c98fd80dcea90b9cc8cd083c"
S = "${WORKDIR}/git"
SRC_URI = "git://git@github.com/open-power/sbe;branch="master-p10";protocol=ssh;protocol=https"
SRCREV = "f8ee8cfad2cf2a53e78789633ddffc192f5a197e"
inherit setuptools3
@@ -0,0 +1,14 @@
[Unit]
Description=Init BMC Hostname
ConditionPathExists=!/var/lib/first-boot-set-hostname
Wants=op-vpd-parser.service
After=op-vpd-parser.service
[Service]
ExecStart=/usr/bin/first-boot-set-hostname.sh
Type=oneshot
RemainAfterExit=Yes
[Install]
WantedBy=multi-user.target
@@ -0,0 +1,85 @@
#!/bin/sh -eu
show_error() {
if [ -n "${JOURNAL_STREAM-}" ]; then
echo "$@" | systemd-cat -t first-boot-set-hostname -p emerg
else
echo "$@" >&2
fi
}
sync_hostname() {
MAPPER_IFACE='xyz.openbmc_project.ObjectMapper'
MAPPER_PATH='/xyz/openbmc_project/object_mapper'
INVENTORY_PATH='/xyz/openbmc_project/inventory'
BMC_ITEM_IFACE='xyz.openbmc_project.Inventory.Item.Bmc'
INV_ASSET_IFACE='xyz.openbmc_project.Inventory.Decorator.Asset'
BMC_SN=''
BMC_ITEM_PATH=$(busctl --no-pager --verbose call \
${MAPPER_IFACE} \
${MAPPER_PATH} \
${MAPPER_IFACE} \
GetSubTree sias \
${INVENTORY_PATH} 0 1 ${BMC_ITEM_IFACE} \
2>/dev/null | grep ${INVENTORY_PATH} || true)
# ' STRING "/xyz/openbmc_project/inventory/system/chassis/bmc";'
BMC_ITEM_PATH=${BMC_ITEM_PATH#*\"}
BMC_ITEM_PATH=${BMC_ITEM_PATH%\"*}
BMC_ITEM_SERVICE=$(mapper get-service \
"${BMC_ITEM_PATH}" 2>/dev/null || true)
if [ -n "${BMC_ITEM_SERVICE}" ]; then
BMC_SN=$(busctl get-property "${BMC_ITEM_SERVICE}" \
"${BMC_ITEM_PATH}" \
${INV_ASSET_IFACE} SerialNumber)
# 's "002B0DH1000"'
BMC_SN=${BMC_SN#*\"}
BMC_SN=${BMC_SN%\"*}
else
show_error "No BMC item found in the Inventory. Is VPD EEPROM empty?"
fi
if [ -z "${BMC_SN}" ] ; then
show_error "BMC Serial Number empty! Setting Hostname as 'hostname + mac address' "
NETWORK_ITEM_IFACE='xyz.openbmc_project.Inventory.Item.NetworkInterface'
NETWORK_ITEM_PATH=$(busctl --no-pager --verbose call \
${MAPPER_IFACE} \
${MAPPER_PATH} \
${MAPPER_IFACE} \
GetSubTree sias \
${INVENTORY_PATH} 0 1 ${NETWORK_ITEM_IFACE} \
2>/dev/null | grep ${INVENTORY_PATH} || true)
NETWORK_ITEM_PATH=${NETWORK_ITEM_PATH#*\"}
NETWORK_ITEM_PATH=${NETWORK_ITEM_PATH%\"*}
NETWORK_ITEM_OBJ=$(mapper get-service "${NETWORK_ITEM_PATH}" 2>/dev/null || true)
if [ -z "${NETWORK_ITEM_OBJ}" ]; then
show_error 'No Ethernet interface found in the Inventory. Unique hostname not set!'
exit 1
fi
MAC_ADDR=$(busctl get-property "${NETWORK_ITEM_OBJ}" \
"${NETWORK_ITEM_PATH}" \
"${NETWORK_ITEM_IFACE}" MACAddress)
# 's "54:52:01:02:03:04"'
MAC_ADDR=${MAC_ADDR#*\"}
MAC_ADDR=${MAC_ADDR%\"*}
hostnamectl set-hostname "$(hostname)-${MAC_ADDR}"
else
hostnamectl set-hostname "$(hostname)-${BMC_SN}"
fi
}
sync_hostname
# Prevent start at next boot time
touch "/var/lib/first-boot-set-hostname"
@@ -0,0 +1,22 @@
SUMMARY = "Init BMC Hostname"
DESCRIPTION = "Setup BMC Unique hostname"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit allarch systemd
RDEPENDS:${PN} = "${VIRTUAL-RUNTIME_base-utils}"
SYSTEMD_SERVICE:${PN} = "first-boot-set-hostname.service"
SRC_URI = "file://${BPN}.sh file://${BPN}.service"
S = "${WORKDIR}"
do_install() {
sed "s/{MACHINE}/${MACHINE}/" -i ${BPN}.sh
install -d ${D}${bindir} ${D}${systemd_system_unitdir}
install ${BPN}.sh ${D}${bindir}/
install -m 644 ${BPN}.service ${D}${systemd_system_unitdir}/
}
@@ -0,0 +1,84 @@
#!/bin/sh -eu
show_error() {
if [ -n "${JOURNAL_STREAM-}" ]; then
echo "$@" | systemd-cat -t first-boot-set-mac -p emerg
else
echo "$@" >&2
fi
}
sync_mac() {
MAPPER_IFACE='xyz.openbmc_project.ObjectMapper'
MAPPER_PATH='/xyz/openbmc_project/object_mapper'
INVENTORY_PATH='/xyz/openbmc_project/inventory'
NETWORK_ITEM_IFACE='xyz.openbmc_project.Inventory.Item.NetworkInterface'
# Get the NETWORK ITEM count
NETWORK_ITEM_PATH_COUNT=$(busctl --no-pager --verbose call \
${MAPPER_IFACE} \
${MAPPER_PATH} \
${MAPPER_IFACE} \
GetSubTree sias \
${INVENTORY_PATH} 0 1 ${NETWORK_ITEM_IFACE} \
2>/dev/null | grep -c ${INVENTORY_PATH} || true)
if [ "$NETWORK_ITEM_PATH_COUNT" -gt 1 ]; then
# If there are more than 2 NETOWRK ITEM and path must contain $1
# for finding the right NETWORK ITEM
NETWORK_ITEM_PATH=$(busctl --no-pager --verbose call \
${MAPPER_IFACE} \
${MAPPER_PATH} \
${MAPPER_IFACE} \
GetSubTree sias \
${INVENTORY_PATH} 0 1 ${NETWORK_ITEM_IFACE} \
2>/dev/null | grep ${INVENTORY_PATH} | grep "$1" || true)
else
NETWORK_ITEM_PATH=$(busctl --no-pager --verbose call \
${MAPPER_IFACE} \
${MAPPER_PATH} \
${MAPPER_IFACE} \
GetSubTree sias \
${INVENTORY_PATH} 0 1 ${NETWORK_ITEM_IFACE} \
2>/dev/null | grep ${INVENTORY_PATH} || true)
fi
# ' STRING "/xyz/openbmc_project/inventory/system/chassis/ethernet";'
NETWORK_ITEM_PATH=${NETWORK_ITEM_PATH#*\"}
NETWORK_ITEM_PATH=${NETWORK_ITEM_PATH%\"*}
NETWORK_ITEM_SERVICE=$(mapper get-service \
"${NETWORK_ITEM_PATH}" 2>/dev/null || true)
if [ -z "${NETWORK_ITEM_SERVICE}" ]; then
show_error 'No Ethernet interface found in the Inventory. Is VPD EEPROM empty?'
return
fi
MAC_ADDR=$(busctl get-property "${NETWORK_ITEM_SERVICE}" \
"${NETWORK_ITEM_PATH}" \
"${NETWORK_ITEM_IFACE}" MACAddress)
# 's "54:52:01:02:03:04"'
MAC_ADDR=${MAC_ADDR#*\"}
MAC_ADDR=${MAC_ADDR%\"*}
if [ -n "${MAC_ADDR}" ]; then
busctl set-property xyz.openbmc_project.Network \
"/xyz/openbmc_project/network/$1" \
xyz.openbmc_project.Network.MACAddress \
MACAddress s "${MAC_ADDR}"
fi
}
if [ $# -eq 0 ]; then
show_error 'No Ethernet interface name is given'
exit 1
fi
sync_mac "$1"
# Prevent start at next boot time
mkdir -p "/var/lib/first-boot-set-mac"
touch "/var/lib/first-boot-set-mac/${1}"
@@ -0,0 +1,17 @@
[Unit]
Description=Init BMC MAC address for NIC %I
ConditionPathExists=!/var/lib/first-boot-set-mac/%i
Wants=mapper-wait@-xyz-openbmc_project-inventory.service
After=mapper-wait@-xyz-openbmc_project-inventory.service
Wants=mapper-wait@-xyz-openbmc_project-network-%i.service
After=mapper-wait@-xyz-openbmc_project-network-%i.service
Wants=op-vpd-parser.service
After=op-vpd-parser.service
[Service]
ExecStart=/usr/bin/first-boot-set-mac.sh %i
Type=oneshot
RemainAfterExit=Yes
[Install]
WantedBy=multi-user.target
@@ -0,0 +1,20 @@
SUMMARY = "Init BMC MAC address"
DESCRIPTION = "Setup BMC MAC address read from VPD"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit allarch systemd
RDEPENDS:${PN} = "${VIRTUAL-RUNTIME_base-utils}"
SYSTEMD_SERVICE:${PN} = "first-boot-set-mac@.service"
SRC_URI = "file://${BPN}.sh file://${BPN}@.service"
S = "${WORKDIR}"
do_install() {
install -d ${D}${bindir} ${D}${systemd_system_unitdir}
install ${BPN}.sh ${D}${bindir}/
install -m 644 ${BPN}@.service ${D}${systemd_system_unitdir}/
}
@@ -0,0 +1,18 @@
SUMMARY = "OpenPower OCC Control with example occ sensor IDs"
PR = "r1"
PV = "1.0+git${SRCPV}"
require openpower-occ-control.inc
inherit openpower-occ-control
inherit native
PROVIDES += "virtual/openpower-occ-control-config-native"
S = "${WORKDIR}/git"
# Copies example occ sensor ID yaml file
do_install() {
SRC=${S}
install -d ${YAML_DEST}/
install -D ${SRC}/example/occ_sensor.yaml ${YAML_DEST}/occ_sensor.yaml
}
@@ -0,0 +1,20 @@
SUMMARY = "OpenPower OCC Control with MRW generated sensor IDs"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit openpower-occ-control
inherit mrw-xml
inherit native
PROVIDES += "virtual/openpower-occ-control-config-native"
DEPENDS += "mrw-native mrw-perl-tools-native"
# Generate a YAML files based on MRW input
do_install:append() {
install -d ${YAML_DEST}/
${STAGING_BINDIR_NATIVE}/perl-native/perl \
${STAGING_BINDIR_NATIVE}/gen_occ_map.pl \
-i ${mrw_datadir}/${MRW_XML} \
-o ${YAML_DEST}/occ_sensor.yaml
}
@@ -0,0 +1,10 @@
SUMMARY = "openpower-occ-control: install phosphor-logging yaml"
PR = "r1"
PV = "1.0+git${SRCPV}"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit phosphor-logging-yaml-provider
require openpower-occ-control.inc
S = "${WORKDIR}/git"
@@ -0,0 +1,5 @@
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;branch=master;protocol=https"
SRCREV = "423187e6479516af95465de10895edd501c68ebf"
@@ -0,0 +1,20 @@
#!/bin/sh
# set and unset occ active for all occ's in system
if [ "$1" = "disable" ]; then
value='false'
elif [ "$1" = "enable" ]; then
value='true'
else
echo "Usage: occ-active.sh [argument]"
echo " enable - set occ's to active state"
echo " disable - set occ's to inactive state"
exit 1
fi
OCC_CONTROL_SERVICE="org.open_power.OCC.Control"
busctl tree $OCC_CONTROL_SERVICE --list | grep -i occ | xargs -r -n1 -I{} \
busctl set-property $OCC_CONTROL_SERVICE {} org.open_power.OCC.Status \
OccActive b $value
exit 0
@@ -0,0 +1,13 @@
[Unit]
Description=OpenPOWER OCC Active Disable
Before=obmc-host-stop-pre@%i.target
Before=op-enter-mpreboot@%i.service
Before=op-stop-instructions@%i.service
Conflicts=op-occ-enable@%i.service
[Service]
ExecStart=/usr/bin/occ-active.sh disable
Type=oneshot
[Install]
WantedBy=obmc-host-stop@%i.target
@@ -0,0 +1,16 @@
[Unit]
Description=OpenPOWER OCC Active Enable for host %I
Conflicts=obmc-host-stop@%i.target
Conflicts=op-occ-disable@%i.service
Wants=org.open_power.OCC.Control.service
After=org.open_power.OCC.Control.service
Wants=fsi-scan@%i.service
After=fsi-scan@%i.service
ConditionPathExists=/run/openbmc/host@%i-on
[Service]
ExecStart=/usr/bin/occ-active.sh enable
Type=oneshot
[Install]
WantedBy=obmc-host-start@%i.target
@@ -0,0 +1,17 @@
[Unit]
Description=OpenPOWER OCC controller
Wants=mapper-wait@-xyz-openbmc_project-inventory.service
After=mapper-wait@-xyz-openbmc_project-inventory.service
Wants=obmc-host-reset-running@0.target
After=obmc-host-reset-running@0.target
Wants=xyz.openbmc_project.PLDM
After=xyz.openbmc_project.PLDM
[Service]
ExecStart=/usr/bin/openpower-occ-control
Restart=always
Type=dbus
BusName={BUSNAME}
[Install]
WantedBy=multi-user.target
@@ -0,0 +1,108 @@
SUMMARY = "OpenPOWER OCC controller"
DESCRIPTION = "Application to control the OpenPOWER On-Chip-Controller"
HOMEPAGE = "https://github.com/openbmc/openpower-occ-control"
PR = "r1"
PV = "1.0+git${SRCPV}"
inherit meson \
pkgconfig \
obmc-phosphor-dbus-service \
python3native \
phosphor-dbus-yaml
require ${BPN}.inc
SRC_URI += "file://occ-active.sh"
do_install:append() {
install -d ${D}${bindir}
install -m 0755 ${WORKDIR}/occ-active.sh \
${D}${bindir}/occ-active.sh
}
DBUS_SERVICE:${PN} += "org.open_power.OCC.Control.service"
SYSTEMD_SERVICE:${PN} += "op-occ-enable@.service"
SYSTEMD_SERVICE:${PN} += "op-occ-disable@.service"
DEPENDS += "virtual/${PN}-config-native"
DEPENDS += " \
sdbusplus \
${PYTHON_PN}-sdbus++-native \
phosphor-logging \
phosphor-dbus-interfaces \
autoconf-archive-native \
systemd \
${PYTHON_PN}-native \
${PYTHON_PN}-pyyaml-native \
${PYTHON_PN}-setuptools-native \
${PYTHON_PN}-mako-native \
nlohmann-json \
"
RDEPENDS:${PN} += "phosphor-state-manager-obmc-targets"
EXTRA_OEMESON = " \
-Dyamldir=${STAGING_DATADIR_NATIVE}/${PN} \
-Dps-derating-factor=${POWER_SUPPLY_DERATING_FACTOR} \
-Dtests=disabled \
"
EXTRA_OEMESON:append = "${@bb.utils.contains('MACHINE_FEATURES', 'i2c-occ', ' -Di2c-occ=enabled', '', d)}"
OCC_ENABLE = "enable"
OCC_DISABLE = "disable"
HOST_START = "startmin"
HOST_STOP = "stop"
# Ensure host-stop and host-startmin targets wants needed occ states
OCC_TMPL = "op-occ-{0}@.service"
HOST_TGTFMT = "obmc-host-{1}@{2}.target"
OCC_INSTFMT = "op-occ-{0}@{2}.service"
HOST_OCC_FMT = "../${OCC_TMPL}:${HOST_TGTFMT}.wants/${OCC_INSTFMT}"
SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'HOST_OCC_FMT', 'OCC_ENABLE', 'HOST_START', 'OBMC_HOST_INSTANCES')}"
SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'HOST_OCC_FMT', 'OCC_DISABLE', 'HOST_STOP', 'OBMC_HOST_INSTANCES')}"
# Set the occ disable service to be executed on host error
HOST_ERROR_TARGETS = "crash timeout"
OCC_DISABLE_TMPL = "op-occ-disable@.service"
HOST_ERROR_TGTFMT = "obmc-host-{0}@{1}.target"
OCC_DISABLE_INSTFMT = "op-occ-disable@{1}.service"
HOST_ERROR_FMT = "../${OCC_DISABLE_TMPL}:${HOST_ERROR_TGTFMT}.wants/${OCC_DISABLE_INSTFMT}"
SYSTEMD_LINK:${PN} += "${@compose_list(d, 'HOST_ERROR_FMT', 'HOST_ERROR_TARGETS', 'OBMC_HOST_INSTANCES')}"
S = "${WORKDIR}/git"
# Remove packages not required for native build
DEPENDS:remove:class-native = " \
phosphor-logging \
systemd \
sdbusplus \
virtual/${PN}-config-native \
"
RDEPENDS:${PN}:remove:class-native = "phosphor-state-manager-obmc-targets"
# Remove packages not required for native SDK build
DEPENDS:remove:class-nativesdk = " \
phosphor-logging \
systemd \
sdbusplus \
virtual/${PN}-config-native \
"
RDEPENDS:${PN}:remove:class-nativesdk = "phosphor-state-manager-obmc-targets"
# Provide a means to enable/disable install_error_yaml feature
PACKAGECONFIG ??= "install_error_yaml"
PACKAGECONFIG[install_error_yaml] = "\
-Dinstall-error-yaml=enabled,\
-Dinstall-error-yaml=disabled,\
,\
"
# Enable install_error_yaml during native and native SDK build
PACKAGECONFIG:add:class-native = "install_error_yaml"
PACKAGECONFIG:add:class-nativesdk = "install_error_yaml"
# Disable install_error_yaml during target build
PACKAGECONFIG:remove:class-target = "install_error_yaml"
BBCLASSEXTEND += "native nativesdk"
@@ -0,0 +1,8 @@
# Add checkstop monitor as part of host state management package
# This will kick start a gpio monitor that will catch the
# host checkstop conditions and takes necessary actions
RDEPENDS:${PN}-host-state-mgmt:append:df-openpower = " checkstop-monitor"
# Add openpower debug collector as a requirement for state-mgmt
# since it is used during checkstop handling.
RDEPENDS:${PN}-host-state-mgmt:append:df-openpower = " openpower-debug-collector"
@@ -0,0 +1,7 @@
# Warning: Any providers listed here will have their whitelists ignored. Add
# providers with whitelists that should not be ignored to
# conf/machine/openpower.inc
VIRTUAL-RUNTIME_phosphor-ipmi-providers:append:df-openpower = " \
openpower-host-ipmi-flash \
"
@@ -0,0 +1,5 @@
RDEPENDS:${PN}:append:df-openpower = " \
pflash \
gard \
fsidbg \
"
@@ -0,0 +1,5 @@
OBMC_YAML_PROVIDER_RECIPES += " \
openpower-debug-collector-yaml-provider \
openpower-ipmi-oem-yaml-provider \
openpower-occ-control-yaml-provider \
"
@@ -0,0 +1,51 @@
SUMMARY = "OpenBMC for OpenPOWER - Applications"
PR = "r1"
inherit packagegroup
PROVIDES = "${PACKAGES}"
PACKAGES = " \
${PN}-chassis \
${PN}-fans \
${PN}-flash \
${PN}-system \
"
PROVIDES += "virtual/obmc-chassis-mgmt"
PROVIDES += "virtual/obmc-fan-mgmt"
PROVIDES += "virtual/obmc-flash-mgmt"
PROVIDES += "virtual/obmc-system-mgmt"
RPROVIDES:${PN}-chassis += "virtual-obmc-chassis-mgmt"
RPROVIDES:${PN}-fans += "virtual-obmc-fan-mgmt"
RPROVIDES:${PN}-flash += "virtual-obmc-flash-mgmt"
RPROVIDES:${PN}-system += "virtual-obmc-system-mgmt"
SUMMARY:${PN}-chassis = "OpenPOWER Chassis"
RDEPENDS:${PN}-chassis = " \
obmc-phosphor-buttons-signals \
obmc-phosphor-buttons-handler \
phosphor-skeleton-control-power \
obmc-host-failure-reboots \
"
#Pull in obmc-fsi on all P9 OpenPOWER systems
RDEPENDS:${PN}-chassis += "${@bb.utils.contains('MACHINE_FEATURES', 'op-fsi', 'op-fsi', '', d)}"
#Pull in p9-cfam-override on all P9 OpenPOWER systems
RDEPENDS:${PN}-chassis += "${@bb.utils.contains('MACHINE_FEATURES', 'p9-cfam-override', 'p9-cfam-override', '', d)}"
SUMMARY:${PN}-fans = "OpenPOWER Fans"
RDEPENDS:${PN}-fans = " \
"
SUMMARY:${PN}-flash = "OpenPOWER Flash"
RDEPENDS:${PN}-flash = " \
openpower-software-manager\
"
SUMMARY:${PN}-system = "OpenPOWER System"
RDEPENDS:${PN}-system = " \
pdbg \
croserver \
"
@@ -0,0 +1,19 @@
TRACE_EVENTS:append = " \
fsi_slave_init \
fsi_slave_invalid_cfam \
fsi_dev_init \
fsi_master_aspeed_cfam_reset \
fsi_master_scan \
fsi_master_unregister \
"
TRACE_EVENTS:append:p10bmc = " \
i2cr_i2c_error \
i2cr_status_error \
xdma_start \
xdma_irq \
xdma_reset \
xdma_perst \
xdma_unmap \
xdma_mmap_error \
xdma_mmap \
"
@@ -0,0 +1,23 @@
SUMMARY = "Inventory config for openpower-vpd-parser"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit openpower-fru-vpd
inherit native
SRC_URI += "file://inventory"
PROVIDES += "virtual/openpower-fru-inventory"
S = "${WORKDIR}"
do_install() {
# This recipe is supposed to create a systemd environment file
# with values for FRU types and paths. This example recipe
# uses a pre-defined file ($PN/inventory).
DEST=${D}${inventory_datadir_native}
install -d ${DEST}
install inventory ${DEST}
}
@@ -0,0 +1,2 @@
FRUS=BMC
PATHS=/system/chassis/bmc
@@ -0,0 +1,29 @@
SUMMARY = "Inventory config for openpower-vpd-parser"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit openpower-fru-vpd
inherit mrw-xml
inherit native
DEPENDS += " \
mrw-native \
mrw-perl-tools-native \
virtual/openpower-fru-vpd-layout \
"
PROVIDES += "virtual/openpower-fru-inventory"
S = "${WORKDIR}"
do_install() {
DEST=${D}${inventory_datadir_native}
install -d ${DEST}
${bindir}/perl-native/perl \
${bindir}/gen_openpower_fru.pl \
-m ${mrw_datadir}/${MRW_XML} \
-c ${vpdlayout_datadir}/layout.yaml \
-o ${DEST}/inventory
}
@@ -0,0 +1,23 @@
SUMMARY = "FRU properties config for openpower-vpd-parser"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit openpower-fru-vpd
inherit native
SRC_URI += "file://example.yaml"
PROVIDES += "virtual/openpower-fru-properties"
S = "${WORKDIR}"
do_install() {
# This recipe is supposed to create an output yaml file with
# FRU property values extracted from the MRW. This example recipe
# provides a sample output file.
DEST=${D}${properties_datadir}
install -d ${DEST}
install example.yaml ${DEST}/out.yaml
}
@@ -0,0 +1,6 @@
/system/chassis/motherboard/boxelder/bmc:
xyz.openbmc_project.Inventory.Decorator.Replaceable:
FieldReplaceable: 'false'
/system/chassis/motherboard/boxelder/bmc/ethernet:
xyz.openbmc_project.Inventory.Decorator.Replaceable:
FieldReplaceable: 'false'
@@ -0,0 +1,30 @@
SUMMARY = "FRU properties config for openpower-vpd-parser"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit openpower-fru-vpd
inherit mrw-xml
inherit native
SRC_URI += "file://config.yaml"
DEPENDS += " \
mrw-native \
mrw-perl-tools-native \
"
PROVIDES += "virtual/openpower-fru-properties"
S = "${WORKDIR}"
do_install() {
DEST=${D}${properties_datadir}
install -d ${DEST}
${bindir}/perl-native/perl \
${bindir}/gen_fru_properties.pl \
-m ${mrw_datadir}/${MRW_XML} \
-c config.yaml \
-o ${DEST}/out.yaml
}
@@ -0,0 +1,11 @@
BMC:
xyz.openbmc_project.Inventory.Decorator.Replaceable:
FieldReplaceable: 'false'
xyz.openbmc_project.Inventory.Item:
Present: 'true'
ETHERNET:
xyz.openbmc_project.Inventory.Decorator.Replaceable:
FieldReplaceable: 'false'
xyz.openbmc_project.Inventory.Item:
Present: 'true'

After

Width:  |  Height:  |  Size: 326 B

@@ -0,0 +1,20 @@
SUMMARY = "VPD layout for openpower-fru-vpd"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
inherit openpower-fru-vpd
inherit native
SRC_URI += "file://layout.yaml"
PROVIDES += "virtual/openpower-fru-vpd-layout"
S = "${WORKDIR}"
do_install() {
DEST=${D}${vpdlayout_datadir}
install -d ${DEST}
install layout.yaml ${DEST}
}
@@ -0,0 +1,18 @@
BMC:
xyz.openbmc_project.Inventory.Decorator.Asset:
OPFR,VP: PartNumber
OPFR,VS: SerialNumber
OPFR,VN: Manufacturer
xyz.openbmc_project.Inventory.Item:
VINI,DR: PrettyName
xyz.openbmc_project.Inventory.Item.Bmc:
ETHERNET:
xyz.openbmc_project.Inventory.Item.NetworkInterface:
VINI,B1: MACAddress
OPFR,B1: MACAddress
xyz.openbmc_project.Inventory.Item.Ethernet:
ETHERNET1:
xyz.openbmc_project.Inventory.Item.NetworkInterface:
VINI,B1: MACAddress
OPFR,B1: MACAddress
xyz.openbmc_project.Inventory.Item.Ethernet:

After

Width:  |  Height:  |  Size: 601 B

@@ -0,0 +1,6 @@
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;branch=master;protocol=https"
SRCREV = "4170bdad54a7583b7f8e0435a4702acb126aa326"
DEPENDS += "nlohmann-json"
@@ -0,0 +1 @@
SUBSYSTEM=="i2c", ENV{OF_NAME}=="eeprom", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="op-vpd-parser"
@@ -0,0 +1,12 @@
[Unit]
Description=Read OpenPOWER-format VPD from EEPROM
ConditionFileNotEmpty={envfiledir}/obmc/inventory
Wants=mapper-wait@-xyz-openbmc_project-inventory.service
After=mapper-wait@-xyz-openbmc_project-inventory.service
[Service]
Restart=no
Type=oneshot
EnvironmentFile={envfiledir}/obmc/inventory
ExecStart=/usr/bin/openpower-read-vpd --vpd $EEPROM --fru $FRUS --object $PATHS
RemainAfterExit=yes
@@ -0,0 +1,48 @@
SUMMARY = "Parser for OpenPOWER-format FRU VPD"
DESCRIPTION = "Parse OpenPOWER-format FRU VPD and update inventory"
PR = "r1"
PV = "1.0+git${SRCPV}"
inherit meson pkgconfig
inherit openpower-fru-vpd
inherit python3native
inherit obmc-phosphor-systemd
require ${BPN}.inc
SRC_URI += "file://70-op-vpd.rules"
DEPENDS += " \
virtual/openpower-fru-vpd-layout \
virtual/openpower-fru-inventory \
virtual/openpower-fru-properties \
sdbusplus \
phosphor-logging \
${PYTHON_PN}-mako-native \
${PYTHON_PN}-pyyaml-native \
autoconf-archive-native \
"
SYSTEMD_SERVICE:${PN} += "op-vpd-parser.service"
S = "${WORKDIR}/git"
PACKAGECONFIG ??= ""
PACKAGECONFIG[ibm-parser] = "-Dibm-parser=enabled, -Dibm-parser=disabled, libgpiod nlohmann-json cli11"
PACKAGECONFIG[vpd-manager] = "-Dvpd-manager=enabled, -Dvpd-manager=disabled"
EXTRA_OEMESON = " \
-Dtests=disabled \
-DFRU_YAML=${STAGING_DIR_NATIVE}${vpdlayout_datadir}/layout.yaml \
-DPROP_YAML=${STAGING_DIR_NATIVE}${properties_datadir}/out.yaml \
"
do_install:append() {
SRC=${STAGING_DATADIR_NATIVE}${inventory_datadir_name}
DEST=${D}${inventory_envdir}
install -d ${DEST}
install ${SRC}/inventory ${DEST}
install -d ${D}/${nonarch_base_libdir}/udev/rules.d/
install -m0644 ${WORKDIR}/70-op-vpd.rules ${D}/${nonarch_base_libdir}/udev/rules.d/
}
@@ -0,0 +1,3 @@
{
"redfishEventLogDisabled" : true
}
@@ -0,0 +1,10 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
SRC_URI:append:df-openpower = " file://config.json"
do_configure:append:df-openpower() {
# Overwrite the config.json to turn off/on Web UI panels
# E.g. Turn off the Redfish Event Log Panel since openpower systems use
# the D-Bus Event Log Panel
cp ${WORKDIR}/config.json ${S}/
}