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
+17
View File
@@ -0,0 +1,17 @@
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
+175
View File
@@ -0,0 +1,175 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
+12
View File
@@ -0,0 +1,12 @@
Different components of meta-openpower are under different licenses (a mix
of MIT and Apache-2.0). Please see:
COPYING.Apache-2.0
COPYING.MIT (MIT)
All metadata is MIT licensed unless otherwise stated. Source code
included in tree for individual recipes is under the LICENSE stated in
the associated recipe (.bb file) unless otherwise stated.
License information for any other files is either explicitly stated
or defaults to Apache-2.0.
+3
View File
@@ -0,0 +1,3 @@
owners:
- joel@jms.id.au
- geissonator@yahoo.com
+48
View File
@@ -0,0 +1,48 @@
OpenEmbedded/Yocto/OpenBMC BSP layer for OpenPOWER reference platforms
======================================================================
This layer provides support for the BMC firmware on OpenPOWER reference
platforms, and/or a base upon which to create a BMC firmware implementation on
any POWER system.
```
This layer depends on:
URI: git://git.openembedded.org/openembedded-core
layers: meta
branch: master
revision: HEAD
URI: https://github.com/openbmc/meta-phosphor
branch: master
revision: HEAD
URI: https://github.com/openbmc/meta-aspeed
branch: master
revision: HEAD
```
More information on OpenPOWER can be found
[here](https://openpowerfoundation.org/).
Contributing
------------
meta-openpower patches are reviewed using the Gerrit instance at
https://gerrit.openbmc.org.
Please submit patches to Gerrit. More information on using Gerrit can be found
[here](https://github.com/openbmc/docs/blob/master/CONTRIBUTING.md#submitting-changes-via-gerrit-server).
https://github.com/openbmc/meta-openpower is a hosting mirror only and GitHub
pull requests are not monitored and will not be accepted.
Patch checklist. Please ensure patches adhere to the following guidelines:
- meta-openpower uses the [OE style
guidelines](https://www.openembedded.org/wiki/Styleguide).
- follow [the seven rules of a great git commit
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).
@@ -0,0 +1,5 @@
vpdlayout_datadir="${datadir}/openpower-fru-vpd/vpdlayout"
inventory_datadir_name="/openpower-fru-inventory/inventory"
inventory_datadir_native="${datadir}${inventory_datadir_name}"
inventory_envdir="${envfiledir}/obmc"
properties_datadir="${datadir}/openpower-fru-vpd/properties"
@@ -0,0 +1 @@
YAML_DEST="${D}${datadir}/openpower-occ-control"
@@ -0,0 +1,7 @@
PACKAGECONFIG:append = " mmc_layout"
SYSTEMD_SERVICE:${PN} += " \
obmc-flash-bios-init.service \
obmc-flash-bios-patch.service \
openpower-bios-factory-reset.service \
"
@@ -0,0 +1,6 @@
PACKAGECONFIG:append = " pldm"
SYSTEMD_SERVICE:${PN} += " \
openpower-process-host-firmware.service \
openpower-update-bios-attr-table.service \
"
@@ -0,0 +1,4 @@
RDEPENDS:${PN} += "pflash"
SYSTEMD_SERVICE:${PN} += "openpower-pnor-update@.service"
@@ -0,0 +1,11 @@
PACKAGECONFIG:append = " ubifs_layout"
SYSTEMD_SERVICE:${PN} += " \
obmc-flash-bios-ubiattach.service \
obmc-flash-bios-ubimount@.service \
obmc-flash-bios-ubiumount-ro@.service \
obmc-flash-bios-ubiumount-rw@.service \
obmc-flash-bios-ubipatch.service \
obmc-flash-bios-ubiremount.service \
obmc-flash-bios-cleanup.service \
"
@@ -0,0 +1,45 @@
PACKAGECONFIG:append = " virtual_pnor"
RDEPENDS:${PN} += " \
bash \
"
SYSTEMD_SERVICE:${PN} += " \
obmc-vpnor-updatesymlinks.service \
obmc-vpnor-check-clearvolatile@.service \
obmc-vpnor-enable-clearvolatile@.service \
"
# To handle warm reboot scenarios, the checking and clearing of
# the volatile section must occur in both the chassis and host
# targets
# Host target installation - only clear if going through
# full host start target
ENABLE_CLEAR_VOLATILE_TMPL = "obmc-vpnor-enable-clearvolatile@.service"
HOST_START_TGTFMT = "obmc-host-start@{0}.target"
ENABLE_CLEAR_VOLATILE_INSTFMT = "obmc-vpnor-enable-clearvolatile@{0}.service"
ENABLE_CLEAR_VOLATILE_START_FMT = "../${ENABLE_CLEAR_VOLATILE_TMPL}:${HOST_START_TGTFMT}.requires/${ENABLE_CLEAR_VOLATILE_INSTFMT}"
CHECK_CLEAR_VOLATILE_TMPL = "obmc-vpnor-check-clearvolatile@.service"
HOST_STARTMIN_TGTFMT = "obmc-host-startmin@{0}.target"
CHECK_CLEAR_VOLATILE_INSTFMT = "obmc-vpnor-check-clearvolatile@{0}.service"
CHECK_CLEAR_VOLATILE_START_FMT = "../${CHECK_CLEAR_VOLATILE_TMPL}:${HOST_STARTMIN_TGTFMT}.requires/${CHECK_CLEAR_VOLATILE_INSTFMT}"
UPDATE_SYMLINKS_SVC = "obmc-vpnor-updatesymlinks.service"
MBOXD_RELOAD_SVC = "mboxd-reload@{0}.service"
UPDATE_SYMLINKS_FMT = "../${UPDATE_SYMLINKS_SVC}:${MBOXD_RELOAD_SVC}.wants/${UPDATE_SYMLINKS_SVC}"
SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'ENABLE_CLEAR_VOLATILE_START_FMT', 'OBMC_HOST_INSTANCES')}"
SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'CHECK_CLEAR_VOLATILE_START_FMT', 'OBMC_HOST_INSTANCES')}"
SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'UPDATE_SYMLINKS_FMT', 'OBMC_HOST_INSTANCES')}"
# Chassis target installation - always enable and clear in chassis
# power on
CHASSIS_PON_TGTFMT = "obmc-chassis-poweron@{0}.target"
ENABLE_CLEAR_VOLATILE_PON_FMT = "../${ENABLE_CLEAR_VOLATILE_TMPL}:${CHASSIS_PON_TGTFMT}.requires/${ENABLE_CLEAR_VOLATILE_INSTFMT}"
CHECK_CLEAR_VOLATILE_PON_FMT = "../${CHECK_CLEAR_VOLATILE_TMPL}:${CHASSIS_PON_TGTFMT}.requires/${CHECK_CLEAR_VOLATILE_INSTFMT}"
SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'ENABLE_CLEAR_VOLATILE_PON_FMT', 'OBMC_CHASSIS_INSTANCES')}"
SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'CHECK_CLEAR_VOLATILE_PON_FMT', 'OBMC_CHASSIS_INSTANCES')}"
@@ -0,0 +1,6 @@
DISTRO_FEATURES += "openpower"
DISTRO_FEATURES_FILTER_NATIVE += "openpower"
DISTRO_FEATURES_FILTER_NATIVESDK += "openpower"
DISTROOVERRIDES .= ":df-openpower"
OBMC_ORG_YAML_SUBDIRS += " org/open_power"
@@ -0,0 +1,2 @@
DISTRO_FEATURES += "openpower-hostfw-over-pldm"
DISTROOVERRIDES .= ":df-openpower-hostfw-over-pldm"
@@ -0,0 +1,5 @@
require conf/distro/include/phosphor-mrw.inc
PREFERRED_PROVIDER_virtual/openpower-fru-inventory:df-mrw ?= "openpower-fru-inventory-mrw-native"
PREFERRED_PROVIDER_virtual/openpower-fru-properties:df-mrw ?= "openpower-fru-properties-mrw-native"
PREFERRED_PROVIDER_virtual/openpower-occ-control-config-native:df-mrw ?= "openpower-occ-control-config-mrw-native"
@@ -0,0 +1,4 @@
require conf/distro/include/openpower-virtual-pnor.inc
DISTRO_FEATURES += "openpower-ubi-fs"
DISTROOVERRIDES .= ":df-openpower-ubi-fs"
@@ -0,0 +1,2 @@
DISTRO_FEATURES += "openpower-virtual-pnor"
DISTROOVERRIDES .= ":df-openpower-virtual-pnor"
@@ -0,0 +1,3 @@
require conf/distro/include/phosphor-base.inc
require conf/distro/include/openpower-distrovars.inc
require conf/distro/include/phosphor-isolation.inc
+12
View File
@@ -0,0 +1,12 @@
# We have a conf and classes directory, add to BBPATH
BBPATH .= ":${LAYERDIR}"
# We have recipes-* directories, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
${LAYERDIR}/recipes-*/*/*.bbappend"
BBFILE_COLLECTIONS += "openpower-layer"
BBFILE_PATTERN_openpower-layer := "^${LAYERDIR}/"
LAYERVERSION_openpower-layer = "1"
LAYERDEPENDS_openpower-layer = "core phosphor-layer aspeed-layer"
LAYERSERIES_COMPAT_openpower-layer = "langdale mickledore"
@@ -0,0 +1,36 @@
MACHINE_FEATURES += "\
obmc-phosphor-fan-mgmt \
obmc-phosphor-chassis-mgmt \
obmc-phosphor-flash-mgmt \
obmc-host-ipmi \
obmc-host-ctl \
obmc-host-state-mgmt \
obmc-chassis-state-mgmt \
obmc-bmc-state-mgmt \
"
# Add OpenPOWER OEM commands handler library
VIRTUAL-RUNTIME_phosphor-ipmi-providers:append:df-openpower = " \
openpower-ipmi-oem \
"
PREFERRED_PROVIDER_virtual/obmc-host-ipmi-hw = "phosphor-ipmi-bt"
PREFERRED_PROVIDER_virtual/obmc-chassis-mgmt = "packagegroup-op-apps"
PREFERRED_PROVIDER_virtual/obmc-fan-mgmt = "packagegroup-op-apps"
PREFERRED_PROVIDER_virtual/obmc-flash-mgmt = "packagegroup-op-apps"
PREFERRED_PROVIDER_virtual/obmc-system-mgmt = "packagegroup-op-apps"
PREFERRED_PROVIDER_virtual/obmc-host-ctl ?= "obmc-op-control-host"
PREFERRED_PROVIDER_virtual/phosphor-ipmi-fru-hostfw-config ?= "hostboot-inventory-config-native"
PREFERRED_PROVIDER_virtual/openpower-fru-vpd-layout ?= "openpower-fru-vpd-layout-native"
PREFERRED_PROVIDER_virtual/openpower-fru-inventory ?= "openpower-fru-inventory-example-native"
PREFERRED_PROVIDER_virtual/openpower-fru-properties ?= "openpower-fru-properties-example-native"
# The openpower-occ-control application is data-driven and requires an input
# yaml of OCC instance numbers to sensor IDs.
# This virtual is a native recipe that provides that mapping by installing
# configuration files in the format and native sysroot location expected by
# the openpower-occ-control build process in the native sysroot.
PREFERRED_PROVIDER_virtual/openpower-occ-control-config-native ?= "openpower-occ-control-config-example-native"
#Default value for power supply output power efficiency.
POWER_SUPPLY_DERATING_FACTOR = "90"
@@ -0,0 +1,3 @@
include conf/machine/include/ibm-power10-cpu.inc
MACHINE_FEATURES += 'op-fsi'
PREFERRED_PROVIDER_virtual/obmc-host-ctl = "p9-host-start"
@@ -0,0 +1,2 @@
include conf/machine/include/ibm-power8-cpu.inc
MACHINE_FEATURES += 'i2c-occ'
@@ -0,0 +1,3 @@
include conf/machine/include/ibm-power9-cpu.inc
MACHINE_FEATURES += 'op-fsi p9-cfam-override'
PREFERRED_PROVIDER_virtual/obmc-host-ctl = "p9-host-start"
@@ -0,0 +1,23 @@
SUMMARY = "eCMD plugin with pdbg backend"
DESCRIPTION = "The glue code necessary for pdbg to be used as an eCMD plugin"
PR = "r1"
PV = "1.0+git${SRCPV}"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=34400b68072d710fecd0a2940a0d1658"
inherit meson
inherit pkgconfig
SRC_URI = "git://git@github.com/open-power/ecmd-pdbg.git;branch=master;protocol=https"
SRCREV = "349e04048409b4a619f4bc979aa5dd76e2bbc665"
S = "${WORKDIR}/git"
DEPENDS = "pdbg zlib libyaml ipl"
FILES:${PN} += "${prefix}/help"
EXTRA_OEMESON = " \
-Dchip=p10 \
"
@@ -0,0 +1,36 @@
SUMMARY = "eCMD"
DESCRIPTION = "eCMD is a hardware access API for IBM Systems"
LICENSE= "Apache-2.0"
LIC_FILES_CHKSUM = "file://${S}/NOTICE;md5=fee220301a2af3faf8f211524b4248ea"
SRC_URI = "git://github.com/open-power/eCMD.git;branch=ecmd15;protocol=https"
SRCREV = "72b925d4fabc8bff71d56f7a5ec7e3f0730f8f06"
DEPENDS += "zlib"
SRC_URI += "file://croserver.service"
S = "${WORKDIR}/git"
inherit python3native
DEPENDS += "${PYTHON_PN}-distro-native"
do_configure() {
LD="${CXX}" ${PYTHON} ${S}/config.py \
--without-swig --output-root ${B} --target obj \
--extensions "cmd cip" --build-verbose
}
do_compile() {
cd ${S}/dllNetwork/server
oe_runmake
}
do_install() {
install -d ${D}${bindir}
install -m 0755 out_obj/lib/server1p ${D}${bindir}/croserver
install -d ${D}${systemd_system_unitdir}
install -m 0644 ${WORKDIR}/croserver.service ${D}${systemd_system_unitdir}/
}
FILES:${PN} += "${systemd_system_unitdir}/croserver.service"
@@ -0,0 +1,12 @@
[Unit]
Description=Cronus Server
Documentation=https://github.com/open-power/eCMD/
After=network.service
[Service]
Type=simple
ExecStart=/usr/bin/croserver
Restart=on-failure
ProtectHome=yes
ProtectSystem=full
RestrictAddressFamilies=AF_INET AF_INET6
@@ -0,0 +1,61 @@
SUMMARY = "eCMD"
DESCRIPTION = "eCMD is a hardware access API for POWER Systems"
LICENSE= "Apache-2.0"
LIC_FILES_CHKSUM = "file://${S}/NOTICE;md5=fee220301a2af3faf8f211524b4248ea"
SRC_URI = "git://github.com/open-power/eCMD.git;branch=ecmd15;protocol=https"
SRCREV = "15e382180d49f7ea4117ccc341ca91e361721fd4"
inherit python3native
DEPENDS = "zlib"
S = "${WORKDIR}/git"
export LD="${CXX}"
export SLDFLAGS="${LDFLAGS}"
# use native config.py to build required ecmd extensions
do_configure() {
${S}/config.py --without-swig --without-python --without-python3 --without-perl \
--without-pyecmd --install-path ${D}${prefix} --output-root ${B} --target ${TARGET_ARCH} \
--extensions "cmd cip"
}
do_compile() {
oe_runmake all
}
do_install() {
oe_runmake install
# we don't need the target scripts or ecmd setup
rm ${D}${bindir}/target.* ${D}${bindir}/ecmdsetup.pl
# ecmd installs to atypical places in the filesystem.
# move all the installed files to more conventional directories.
install -d ${D}${includedir} ${D}${datadir}/${BPN}/help ${D}${bindir} ${D}${libdir}
mv ${D}${prefix}/help/** ${D}${datadir}/${BPN}/help
mv ${D}${prefix}/${TARGET_ARCH}/bin/** ${D}${bindir}
mv ${D}${prefix}/${TARGET_ARCH}/lib/** ${D}${libdir}
rm ${D}${bindir}/ecmdVersion
rmdir ${D}${prefix}/help \
${D}${prefix}/${TARGET_ARCH}/lib \
${D}${prefix}/${TARGET_ARCH}/bin \
${D}${prefix}/${TARGET_ARCH}/perl \
${D}${prefix}/${TARGET_ARCH}
}
# ecmd makefile assumes that dependencies are built from left to right.
PARALLEL_MAKE = ""
# ecmd doesn't have proper library versioning
FILES:${PN}-dev:remove = "${libdir}/lib*.so"
FILES:${PN} += "${libdir}/lib*.so"
RDEPENDS:${PN}-bin = "libecmd"
# This allows someone to easily use ecmd bins, even if you dont want them.
PACKAGE_BEFORE_PN = "libecmd-bin"
FILES:${PN}-bin += "${bindir}"
+24
View File
@@ -0,0 +1,24 @@
EKB_BRANCH = "main-p10"
EKB_URI = "git://git@github.com/open-power/pub-ekb;branch=${EKB_BRANCH};protocol=https"
EKB_REV = "7fd7e4d6c66d6ee0aa863ea879c106e86099eb10"
REQ_ATTRS_XMLS = "hwpf/fapi2/xml/attribute_info/chip_attributes.xml \
hwpf/fapi2/xml/attribute_info/common_attributes.xml \
hwpf/fapi2/xml/attribute_info/scratch_attributes.xml \
hwpf/fapi2/xml/attribute_info/system_attributes.xml \
hwpf/fapi2/xml/attribute_info/unit_attributes.xml \
chips/p10/procedures/xml/attribute_info/p10_bars_attributes.xml \
chips/p10/procedures/xml/attribute_info/p10_chip_ec_attributes.xml \
chips/p10/procedures/xml/attribute_info/p10_clock_attributes.xml \
chips/p10/procedures/xml/attribute_info/p10_freq_attributes.xml \
chips/p10/procedures/xml/attribute_info/p10_hcode_image_build_attributes.xml \
chips/p10/procedures/xml/attribute_info/p10_ipl_attributes.xml \
chips/p10/procedures/xml/attribute_info/p10_ipl_customize_attributes.xml \
chips/p10/procedures/xml/attribute_info/p10_memory_bars_attributes.xml \
chips/p10/procedures/xml/attribute_info/p10_nest_attributes.xml \
chips/p10/procedures/xml/attribute_info/p10_pervasive_attributes.xml \
chips/p10/procedures/xml/attribute_info/p10_qme_attributes.xml \
chips/p10/procedures/xml/attribute_info/p10_runn_attributes.xml \
chips/p10/procedures/xml/attribute_info/p10_sbe_load_bootloader_attributes.xml \
chips/p10/procedures/xml/attribute_info/p10_sbe_attributes.xml \
chips/p10/procedures/xml/attribute_info/pm_plat_attributes.xml"
+25
View File
@@ -0,0 +1,25 @@
SUMMARY = "To get required hardware procedure attribute xml files"
DESCRIPTION = "Copy all the required hardware procedures attributes xml file \
with respective directory structures"
PR = "r1"
PV = "1.0+git${SRCPV}"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${S}/LICENSE_PROLOG;md5=d8e5f403c98fd80dcea90b9cc8cd083c"
require ekb.inc
SRC_URI = "${EKB_URI}"
SRCREV = "${EKB_REV}"
S = "${WORKDIR}/git"
BBCLASSEXTEND = "native"
do_install() {
mkdir -p ${D}${datadir}/${BPN}
# Copying all required hwp's attributes xml file with respective directory structures
(cd ${S} && cp --parents ${REQ_ATTRS_XMLS} ${D}${datadir}/${BPN})
}
+17
View File
@@ -0,0 +1,17 @@
SUMMARY = "Tools for manipulating FFS flash images."
DESCRIPTION = "FFS is the FSP Flash File Structure which is also currently \
used on OpenPOWER machines for the flash layout."
HOMEPAGE = "https://github.com/open-power/ffs"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=34400b68072d710fecd0a2940a0d1658"
inherit autotools pkgconfig
ALLOW_EMPTY:${PN} = "1"
PACKAGE_BEFORE_PN += "${PN}-ecc ${PN}-deprecated"
FILES:${PN}-ecc = "${bindir}/ecc"
FILES:${PN}-deprecated = "${bindir}"
BBCLASSEXTEND = "native nativesdk"
@@ -0,0 +1,8 @@
require ffs.inc
PV = "v0.1.0+git${SRCPV}"
SRCREV = "3ec70fbc458e32eef0d0b1de79688b4dc48cbd57"
SRC_URI = "git://github.com/open-power/ffs.git;branch=master;protocol=https"
S = "${WORKDIR}/git"
@@ -0,0 +1,18 @@
SUMMARY = "FSI debug tool"
DESCRIPTION = "fsidbg is a tool to access remote FSI engines and perform client driver operations"
LICENSE = "GPLv3"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=84dcc94da3adb52b53ae4fa38fe49e5d"
SRC_URI = "git://github.com/eddiejames/fsidbg.git;branch=master;protocol=https"
SRCREV = "dfe278065c877724242dfae15a4c627fd2e3611c"
PV = "git${SRCREV}"
S = "${WORKDIR}/git"
do_install() {
install -d ${D}${bindir}
install -m 0755 fsidbg ${D}${bindir}
}
TARGET_CC_ARCH += "${LDFLAGS}"
@@ -0,0 +1,19 @@
HOMEPAGE = "https://github.com/open-power/guard"
SUMMARY = "Guard the faulty components"
DESCRIPTION = "Provide a way to guard the faulty component from the system"
PR = "r1"
PV = "1.0+git${SRCPV}"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
inherit pkgconfig meson
S = "${WORKDIR}/git"
SRC_URI = "git://git@github.com/open-power/guard;branch="main";protocol=https"
SRCREV = "e000b571c82e854180ddcbda3b76754341c72618"
DEPENDS = "cli11"
PACKAGECONFIG ??= "${@bb.utils.filter('MACHINE_FEATURES', 'phal', d)}"
PACKAGECONFIG[phal] = "-Ddevtree=enabled, -Ddevtree=disabled, pdata pdbg"
+23
View File
@@ -0,0 +1,23 @@
HOMEPAGE = "https://github.com/open-power/ipl/"
SUMMARY = "Initial Program Load steps"
DESCRIPTION = "Provides infrastructure to run istep"
PR = "r1"
PV = "1.0+git${SRCPV}"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
inherit autotools pkgconfig
S = "${WORKDIR}/git"
SRC_URI = "git://git@github.com/open-power/ipl;branch="main";protocol=https"
SRCREV = "da64b07adeb2a234c47343642c43f8aab96904a2"
DEPENDS = " \
libekb pdbg autoconf-archive guard pdata \
"
RDEPENDS:${PN} = "phal-devtree"
EXTRA_OECONF = "CHIP=p10 --enable-libphal"
@@ -0,0 +1,27 @@
HOMEPAGE = "https://github.com/open-power/libekb_p10"
SUMMARY = "Hardware Procedure Framework"
DESCRIPTION = "Provides infrastructure to run hardware procedures"
PR = "r1"
PV = "1.0+git${SRCPV}"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
S = "${WORKDIR}/git"
require recipes-bsp/ekb/ekb.inc
inherit autotools
inherit python3native
inherit perlnative
SRCREV_FORMAT = "libekb_ekb"
SRCREV_libekb = "b62ed7865055145593cc05a3c654dddc5dcbc704"
SRCREV_ekb = "${EKB_REV}"
SRC_URI = "git://git@github.com/open-power/libekb_p10;branch=main;name=libekb;protocol=https \
${EKB_URI};name=ekb;destsuffix=git/ekb \
"
DEPENDS = "pdbg libxml-simple-perl-native"
+9
View File
@@ -0,0 +1,9 @@
#!/bin/sh
# Command line debug tools like pdbg and ecmd requires
# PDBG_DTB environment variable.
# attributes tool required PDBG_DTB, PDATA_INFODB and PDATA_ATTR_OVERRIDE
export PDBG_DTB=/var/lib/phosphor-software-manager/pnor/rw/DEVTREE
export PDATA_INFODB=/usr/share/pdata/attributes_info.db
export PDATA_ATTR_OVERRIDE=/tmp/devtree_attr_override
@@ -0,0 +1,28 @@
HOMEPAGE = "https://github.com/open-power/pdata/"
SUMMARY = "POWER Host data management"
DESCRIPTION = "Devicetree based POWER host data management"
PR = "r1"
PV = "1.0+git${SRCPV}"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
S = "${WORKDIR}/git"
inherit autotools \
perlnative
SRC_URI = "git://git@github.com/open-power/pdata;branch="main";protocol=https"
SRCREV = "298b7970fb2268ea1e2de7bfc7db338243dc7fc3"
DEPENDS = "pdbg \
libxml-simple-perl-native \
libxml-libxml-perl-native \
ekb-native \
autoconf-archive \
dtc-native"
PDATA_CONFARG = "CHIP=p10"
EXTRA_OECONF = "--enable-gen_attrsinfo ${PDATA_CONFARG}"
EXTRA_OEMAKE = "EKB=${STAGING_DATADIR_NATIVE}/ekb/"
@@ -0,0 +1,22 @@
SUMMARY = "Tools and libraries to manage the phal devicetree"
DESCRIPTION = "phal(power hardware abstraction layer) devicetree data \
modelling mainly includes the host hardware topology and attributes, \
which includes the configuration data"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
PDATA_DTB_PATH="${datadir}/pdata"
FILES:${PN} += "${PDATA_DTB_PATH}"
do_install() {
DTB_FILE_ENV=power-target.sh
DTB_FILE_CONF_PATH=${D}${PDATA_DTB_PATH}
install -d ${DTB_FILE_CONF_PATH}
install -m 744 ${THISDIR}/files/${DTB_FILE_ENV} ${DTB_FILE_CONF_PATH}/${DTB_FILE_ENV}
install -d ${D}${sysconfdir}/profile.d
ln -s ${PDATA_DTB_PATH}/${DTB_FILE_ENV} ${D}${sysconfdir}/profile.d/${DTB_FILE_ENV}
}
@@ -0,0 +1,15 @@
SUMMARY = "PowerPC FSI Debugger"
DESCRIPTION = "pdbg allows JTAG-like debugging of the host POWER processors"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=3b83ef96387f14655fc854ddc3c6bd57"
SRC_URI = "git://github.com/open-power/pdbg.git;branch=master;protocol=https"
SRCREV = "3a21a79267bc5faa9e4bc56dc3124be610e9d475"
DEPENDS += "dtc-native"
S = "${WORKDIR}/git"
inherit autotools
BBCLASSEXTEND = "native"
@@ -0,0 +1,5 @@
SUMMARY = "gard record tool for OpenPower"
DESCRIPTION = "gard record tool for OpenPower machines"
require skiboot.inc
EXTRA_OEMAKE:append = " PFLASH_VERSION=${PV} GARD_VERSION=${PV}"
@@ -0,0 +1,8 @@
SUMMARY = "pflash programmer for OpenPower"
DESCRIPTION = "pflash firmware programming tool for OpenPower machines"
require skiboot.inc
EXTRA_OEMAKE:append = " PFLASH_VERSION=${PV} LINKAGE=dynamic"
#TODO: openbmc/openbmc#1361 - Fix GNU_HASH warnings in pflash
TARGET_CC_ARCH += "${LDFLAGS}"
@@ -0,0 +1,32 @@
HOMEPAGE = "https://github.com/open-power"
LICENSE = "Apache-2.0"
SRC_URI += "git://github.com/open-power/skiboot.git;branch=skiboot-6.5.x;protocol=https"
FILESEXTRAPATHS:prepend := "${THISDIR}/skiboot:"
LIC_FILES_CHKSUM = "file://${S}/LICENCE;md5=3b83ef96387f14655fc854ddc3c6bd57"
SRCREV = "aff9301bb341b5387228e82036a7d72e519d8855"
PV = "6.5.1+git${SRCPV}"
S = "${WORKDIR}/git"
EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX} SKIBOOT_VERSION=${PV} V=1"
SKIBOOT_SUBDIR ?= "external/${PN}"
do_compile() {
oe_runmake -C ${SKIBOOT_SUBDIR} all
}
# TODO: remove PREFIX=$prefix when updating to a version that has
# http://patchwork.ozlabs.org/patch/923741/ is merged upstream
do_install() {
oe_runmake -C ${SKIBOOT_SUBDIR} install DESTDIR=${D} prefix=/usr PREFIX=$prefix
}
# libflash.so is a SONAME and is strongly required in the production
INSANE_SKIP:${PN}:append = "dev-so"
FILES_SOLIBSDEV = ""
FILES:${PN}:append = " ${libdir}/libflash.so"
@@ -0,0 +1,21 @@
SUMMARY = "Recipe for enabling hostboot-debug-tools"
DESCRIPTION = "Support to enable running hostboot-debug-tools"
LICENSE = "Apache-2.0"
PR = "r1"
inherit allarch
RDEPENDS:${PN} = " \
perl perl-module-pod-text perl-module-lib \
perl-module-constant \
perl-module-errno perl-module-fcntl \
perl-module-file-basename perl-module-file-copy \
perl-module-file-find perl-module-file-glob \
perl-module-file-path perl-module-file-spec \
perl-module-file-temp perl-module-getopt-long \
perl-module-re perl-module-text-wrap \
perl-module-posix perl-module-bigint \
perl-module-integer \
"
ALLOW_EMPTY:${PN} = "1"
@@ -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

Some files were not shown because too many files have changed in this diff Show More