From 335b8263f84e9fbb720c901afe8fd0a5e0e64951 Mon Sep 17 00:00:00 2001 From: Alexander Filippov Date: Mon, 28 Sep 2020 20:02:03 +0300 Subject: meta-yadro: dbus-intf: fix bootmbox interface Since the `phosphor-dbus-interfaces` has switched to `meson` simply adding a new YAML is not enough. This commit appends a YAML file and few required changes in the meson scripts to fix `xyz.openbmc_project.Control.Boot.Mailbox` interface building. (From meta-yadro rev: 1df817ffff7f18f435402872df1f51fa0d19f08f) Change-Id: I211d15995f1cf6d92957b51891da1ed942ffa7b4 Signed-off-by: Alexander Filippov Signed-off-by: Andrew Geissler --- ...0001-Add-boot-initiator-mailbox-interface.patch | 138 +++++++++++++++++++++ .../Control/Boot/Mailbox.interface.yaml | 63 ---------- .../dbus/phosphor-dbus-interfaces_%.bbappend | 16 +-- 3 files changed, 141 insertions(+), 76 deletions(-) create mode 100644 meta-yadro/recipes-phosphor/dbus/phosphor-dbus-interfaces/0001-Add-boot-initiator-mailbox-interface.patch delete mode 100644 meta-yadro/recipes-phosphor/dbus/phosphor-dbus-interfaces/xyz/openbmc_project/Control/Boot/Mailbox.interface.yaml (limited to 'meta-yadro') diff --git a/meta-yadro/recipes-phosphor/dbus/phosphor-dbus-interfaces/0001-Add-boot-initiator-mailbox-interface.patch b/meta-yadro/recipes-phosphor/dbus/phosphor-dbus-interfaces/0001-Add-boot-initiator-mailbox-interface.patch new file mode 100644 index 000000000..e3da4378a --- /dev/null +++ b/meta-yadro/recipes-phosphor/dbus/phosphor-dbus-interfaces/0001-Add-boot-initiator-mailbox-interface.patch @@ -0,0 +1,138 @@ +From 104027fff5db49d60d2ff7256580b8efb6429a27 Mon Sep 17 00:00:00 2001 +From: Alexander Amelkin +Date: Wed, 20 Mar 2019 19:33:00 +0300 +Subject: [PATCH] Add boot initiator mailbox interface + +Add the xyz.openbmc_project.Control.Boot.Mailbox interface to allow +for provision of the boot initiator (such as Petitboot or UEFI) with +its specific parameters. This is based on IPMI 2.0 Table 28-14 'Boot +Option Parameters' parameter 7 'Boot initiator mailbox'. + +Partially resolves openbmc/openbmc#3391 + +Change-Id: If2a7dce6fae812fc3f1f325cd07c77f31900cf42 +Signed-off-by: Alexander Amelkin +--- + .../Control/Boot/Mailbox/meson.build | 14 +++++ + .../openbmc_project/Control/Boot/meson.build | 15 +++++ + .../Control/Boot/Mailbox.interface.yaml | 63 +++++++++++++++++++ + 3 files changed, 92 insertions(+) + create mode 100644 gen/xyz/openbmc_project/Control/Boot/Mailbox/meson.build + create mode 100644 xyz/openbmc_project/Control/Boot/Mailbox.interface.yaml + +diff --git a/gen/xyz/openbmc_project/Control/Boot/Mailbox/meson.build b/gen/xyz/openbmc_project/Control/Boot/Mailbox/meson.build +new file mode 100644 +index 0000000..149e68a +--- /dev/null ++++ b/gen/xyz/openbmc_project/Control/Boot/Mailbox/meson.build +@@ -0,0 +1,14 @@ ++# Generated file; do not modify. ++generated_sources += custom_target( ++ 'xyz/openbmc_project/Control/Boot/Mailbox__cpp'.underscorify(), ++ input: [ meson.source_root() / 'xyz/openbmc_project/Control/Boot/Mailbox.interface.yaml', ], ++ output: [ 'server.cpp', 'server.hpp', 'client.hpp', ], ++ command: [ ++ sdbuspp_gen_meson_prog, '--command', 'cpp', ++ '--output', meson.current_build_dir(), ++ '--tool', sdbusplusplus_prog, ++ '--directory', meson.source_root(), ++ 'xyz/openbmc_project/Control/Boot/Mailbox', ++ ], ++) ++ +diff --git a/gen/xyz/openbmc_project/Control/Boot/meson.build b/gen/xyz/openbmc_project/Control/Boot/meson.build +index ba8a19f..6901fc0 100644 +--- a/gen/xyz/openbmc_project/Control/Boot/meson.build ++++ b/gen/xyz/openbmc_project/Control/Boot/meson.build +@@ -1,4 +1,19 @@ + # Generated file; do not modify. ++subdir('Mailbox') ++generated_others += custom_target( ++ 'xyz/openbmc_project/Control/Boot/Mailbox__markdown'.underscorify(), ++ input: [ meson.source_root() / 'xyz/openbmc_project/Control/Boot/Mailbox.interface.yaml', ], ++ output: [ 'Mailbox.md' ], ++ command: [ ++ sdbuspp_gen_meson_prog, '--command', 'markdown', ++ '--output', meson.current_build_dir(), ++ '--tool', sdbusplusplus_prog, ++ '--directory', meson.source_root(), ++ 'xyz/openbmc_project/Control/Boot/Mailbox', ++ ], ++ build_by_default: true, ++) ++ + subdir('Mode') + generated_others += custom_target( + 'xyz/openbmc_project/Control/Boot/Mode__markdown'.underscorify(), +diff --git a/xyz/openbmc_project/Control/Boot/Mailbox.interface.yaml b/xyz/openbmc_project/Control/Boot/Mailbox.interface.yaml +new file mode 100644 +index 0000000..839e8be +--- /dev/null ++++ b/xyz/openbmc_project/Control/Boot/Mailbox.interface.yaml +@@ -0,0 +1,63 @@ ++description: > ++ Implement to provide the boot initiator (such as Petitboot or UEFI) ++ with its specific parameters. This is based on IPMI 2.0 Table 28-14 ++ 'Boot Option Parameters' parameter 7 'Boot initiator mailbox'. ++ ++properties: ++ - name: Supported ++ type: boolean ++ flags: ++ - const ++ default: false ++ description: > ++ Specifies whether or not the mailbox is supported by the ++ boot initiator on this machine. ++ ++ The property is constant and is only set by the implementation ++ on startup. ++ ++ - name: IANAEnterpriseNumber ++ type: uint32 ++ flags: ++ - const ++ default: 0 ++ description: > ++ The 24-bit IANA Private Enterprise Number for the company or organization ++ that has specified the boot initiator. This is a machine-specific ++ constant. The implementing application is responsible for setting ++ this to the proper machine-specific value (0x000000..0xFFFFFF) ++ according to https://www.iana.org/assignments/enterprise-numbers/enterprise-numbers. ++ ++ The property is constant and is only set by the implementation ++ on startup. ++ ++ - name: Data ++ type: array[byte] ++ description: > ++ The array of data bytes for the boot initiator to treat ++ in its specific way. This interface doesn't impose any ++ limitiations on the format or make any assumptions regarding ++ it. The boot initiator is responsible for parsing this array. ++ ++ The size of the array is a constant depending on the requirements ++ set by the boot initiator used for a particular architecture or ++ a machine. The implementing application is responsible for setting ++ the size of this array to the proper value. ++ ++ For conformance to the IPMI 2.0 specification, the size of the array ++ plus 3 (the size of IPMI 2.0 representation of IANA Enterprise Number) ++ must be a multiple of 16 with the minimum allowed size being 77 ++ (5 x 16-byte blocks, minus 3) if mailbox is at all Supported. ++ ++ For IPMI 2.0 this array is supposed to be split into 16-byte ++ blocks by the implementing service (block 0 being made of IANA PEN ++ plus first 13 bytes of this array). Please pay special attention ++ that this array does NOT include the IANA PEN needed for IPMI 2.0. ++ Only the actual PEN-specific data is stored here. ++ ++ When partially written to, the remaining parts of this array ++ must not be automatically cleared. This is per IPMI 2.0 ++ specification. ++ ++ Other interfaces to the boot initiator (such as MCTP) may process ++ this array differently. +-- +2.26.2 + diff --git a/meta-yadro/recipes-phosphor/dbus/phosphor-dbus-interfaces/xyz/openbmc_project/Control/Boot/Mailbox.interface.yaml b/meta-yadro/recipes-phosphor/dbus/phosphor-dbus-interfaces/xyz/openbmc_project/Control/Boot/Mailbox.interface.yaml deleted file mode 100644 index 839e8beca..000000000 --- a/meta-yadro/recipes-phosphor/dbus/phosphor-dbus-interfaces/xyz/openbmc_project/Control/Boot/Mailbox.interface.yaml +++ /dev/null @@ -1,63 +0,0 @@ -description: > - Implement to provide the boot initiator (such as Petitboot or UEFI) - with its specific parameters. This is based on IPMI 2.0 Table 28-14 - 'Boot Option Parameters' parameter 7 'Boot initiator mailbox'. - -properties: - - name: Supported - type: boolean - flags: - - const - default: false - description: > - Specifies whether or not the mailbox is supported by the - boot initiator on this machine. - - The property is constant and is only set by the implementation - on startup. - - - name: IANAEnterpriseNumber - type: uint32 - flags: - - const - default: 0 - description: > - The 24-bit IANA Private Enterprise Number for the company or organization - that has specified the boot initiator. This is a machine-specific - constant. The implementing application is responsible for setting - this to the proper machine-specific value (0x000000..0xFFFFFF) - according to https://www.iana.org/assignments/enterprise-numbers/enterprise-numbers. - - The property is constant and is only set by the implementation - on startup. - - - name: Data - type: array[byte] - description: > - The array of data bytes for the boot initiator to treat - in its specific way. This interface doesn't impose any - limitiations on the format or make any assumptions regarding - it. The boot initiator is responsible for parsing this array. - - The size of the array is a constant depending on the requirements - set by the boot initiator used for a particular architecture or - a machine. The implementing application is responsible for setting - the size of this array to the proper value. - - For conformance to the IPMI 2.0 specification, the size of the array - plus 3 (the size of IPMI 2.0 representation of IANA Enterprise Number) - must be a multiple of 16 with the minimum allowed size being 77 - (5 x 16-byte blocks, minus 3) if mailbox is at all Supported. - - For IPMI 2.0 this array is supposed to be split into 16-byte - blocks by the implementing service (block 0 being made of IANA PEN - plus first 13 bytes of this array). Please pay special attention - that this array does NOT include the IANA PEN needed for IPMI 2.0. - Only the actual PEN-specific data is stored here. - - When partially written to, the remaining parts of this array - must not be automatically cleared. This is per IPMI 2.0 - specification. - - Other interfaces to the boot initiator (such as MCTP) may process - this array differently. diff --git a/meta-yadro/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend b/meta-yadro/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend index 656e1514b..8a5b4c363 100644 --- a/meta-yadro/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend +++ b/meta-yadro/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend @@ -1,15 +1,5 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" -# Directory with new layer of source tree with additional files -YAML_DIR = "xyz" - -SRC_URI += "file://${YAML_DIR}" - -S = "${WORKDIR}/git" - -# Merge source tree by original project with our layer of additional files -do_add_yamls(){ - cp -r "${WORKDIR}/${YAML_DIR}" "${S}" -} - -addtask do_add_yamls after do_unpack before do_configure +SRC_URI_append = "\ + file://0001-Add-boot-initiator-mailbox-interface.patch \ +" -- cgit v1.2.3