Add PreBuild step to generate the AML offset table for the
ACPI tables.
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Chasel Chiu <chasel.chiu@intel.com>
Signed-off-by: Isaac Oram <isaac.w.oram@intel.com>
---
Platform/Intel/.gitignore | 2 +
Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets.dsc | 41 +++++++++++++
Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets/AmlOffsets.inf | 26 ++++++++
Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_board.py | 63 ++++++++++++++++++++
Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_config.cfg | 15 +++++
5 files changed, 147 insertions(+)
diff --git a/Platform/Intel/.gitignore b/Platform/Intel/.gitignore
new file mode 100644
index 0000000000..548fee5bea
--- /dev/null
+++ b/Platform/Intel/.gitignore
@@ -0,0 +1,2 @@
+WhitleyOpenBoardPkg/Uba/UbaMain/StaticSkuDataDxe/AmlOffsetTable.c
+__init__.py
diff --git a/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets.dsc b/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets.dsc
new file mode 100644
index 0000000000..2e5ebf432a
--- /dev/null
+++ b/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets.dsc
@@ -0,0 +1,41 @@
+## @file
+# Build file for generating AML offset table
+#
+# @copyright
+# Copyright (C) 2021 Intel Corporation.
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+##
+
+[Defines]
+ PLATFORM_NAME = $(RP_PKG)
+ PLATFORM_GUID = D7EAF54D-C9B9-4075-89F0-71943DBCFA61
+ PLATFORM_VERSION = 0.1
+ DSC_SPECIFICATION = 0x00010005
+ OUTPUT_DIRECTORY = Build/$(RP_PKG)
+ SUPPORTED_ARCHITECTURES = IA32|X64
+ BUILD_TARGETS = DEBUG|RELEASE
+ PLATFORM_SI_PACKAGE = ClientOneSiliconPkg
+ DEFINE PLATFORM_SI_BIN_PACKAGE = WhitleySiliconBinPkg
+ PEI_ARCH = IA32
+ DXE_ARCH = X64
+
+!if $(CPUTARGET) == "CPX"
+ DEFINE FSP_BIN_PKG = CedarIslandFspBinPkg
+ DEFINE IIO_INSTANCE = Skx
+!elseif $(CPUTARGET) == "ICX"
+ DEFINE FSP_BIN_PKG = WhitleyFspBinPkg
+ DEFINE IIO_INSTANCE = Icx
+!else
+ DEFINE IIO_INSTANCE = UnknownCpu
+!endif
+
+ #
+ # Platform On/Off features are defined here
+ #
+ !include $(RP_PKG)/PlatformPkgConfig.dsc
+
+[Components.X64]
+ $(RP_PKG)/WilsonCityRvp/AmlOffsets/AmlOffsets.inf
+
+!include $(RP_PKG)/Include/Dsc/BuildOptions.dsc
diff --git a/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets/AmlOffsets.inf b/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets/AmlOffsets.inf
new file mode 100644
index 0000000000..8945f372e3
--- /dev/null
+++ b/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets/AmlOffsets.inf
@@ -0,0 +1,26 @@
+## @file
+# Generate AML offset table EPRPPlatform10nm.offset.h via edk2 build
+#
+# @copyright
+# Copyright (C) 2022 Intel Corporation.
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+##
+
+[Defines]
+ INF_VERSION = 0x00010005
+ BASE_NAME = AmlOffsets
+ FILE_GUID = d7641589-753a-44c5-91c2-bd09686205c6
+ MODULE_TYPE = USER_DEFINED
+ VERSION_STRING = 1.0
+
+[Sources]
+ WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Dsdt/EPRPPlatform10nm.asl
+
+[Packages]
+ MdePkg/MdePkg.dec
+ WhitleySiliconPkg/SiliconPkg.dec
+
+[BuildOptions]
+ # add -vr and -so to generate offset.h
+ *_*_*_ASL_FLAGS = -oi -vr -so
diff --git a/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_board.py b/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_board.py
index a0c31e4558..5f625f5f92 100644
--- a/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_board.py
+++ b/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_board.py
@@ -23,6 +23,7 @@ def pre_build_ex(config, functions):
:returns: nothing
"""
print("pre_build_ex")
+
config["BUILD_DIR_PATH"] = os.path.join(config["WORKSPACE"],
'Build',
config["PLATFORM_BOARD_PACKAGE"],
@@ -53,6 +54,68 @@ def pre_build_ex(config, functions):
if config.get("API_MODE_FSP_WRAPPER_BUILD", "FALSE") == "TRUE":
raise ValueError("FSP API Mode is currently unsupported on Ice Lake Xeon Scalable")
+
+ # Build the ACPI AML offset table *.offset.h
+ print("Info: re-generating PlatformOffset header files")
+
+ execute_script = functions.get("execute_script")
+
+ command = ["build", "-D", "MAX_SOCKET=" + config["MAX_SOCKET"]]
+
+ if config["EXT_BUILD_FLAGS"] and config["EXT_BUILD_FLAGS"] != "":
+ ext_build_flags = config["EXT_BUILD_FLAGS"].split(" ")
+ ext_build_flags = [x.strip() for x in ext_build_flags]
+ ext_build_flags = [x for x in ext_build_flags if x != ""]
+ command.extend(ext_build_flags)
+
+ aml_offsets_split = os.path.split(os.path.normpath(config["AML_OFFSETS_PATH"]))
+ command.append("-p")
+ command.append(os.path.normpath(config["AML_OFFSETS_PATH"]) + '.dsc')
+ command.append("-m")
+ command.append(os.path.join(aml_offsets_split[0], aml_offsets_split[1], aml_offsets_split[1] + '.inf'))
+ command.append("-y")
+ command.append(os.path.join(config["WORKSPACE"], "PreBuildReport.txt"))
+ command.append("--log=" + os.path.join(config["WORKSPACE"], "PreBuild.log"))
+
+ _, _, _, code = execute_script(command, config)
+ if code != 0:
+ print(" ".join(command))
+ print("Error re-generating PlatformOffset header files")
+ sys.exit(1)
+
+ # Build AmlGenOffset command to consume the *.offset.h and produce AmlOffsetTable.c for StaticSkuDataDxe use.
+
+ # Get destination path and filename from config
+ relative_file_path = os.path.normpath(config["STRIPPED_AML_OFFSETS_FILE_PATH"]) # get path relative to Platform/Intel
+ out_file_path = os.path.join(config["WORKSPACE_PLATFORM"], relative_file_path) # full path to output file
+ out_file_dir = os.path.dirname(out_file_path) # remove filename
+
+ out_file_root_ext = os.path.splitext(os.path.basename(out_file_path)) # root and extension of output file
+
+ # Get relative path for the generated offset.h file
+ relative_dsdt_file_path = os.path.normpath(config["DSDT_TABLE_FILE_PATH"]) # path relative to Platform/Intel
+ dsdt_file_root_ext = os.path.splitext(os.path.basename(relative_dsdt_file_path)) # root and extension of generated offset.h file
+
+ # Generate output directory if it doesn't exist
+ if not os.path.exists(out_file_dir):
+ os.mkdir(out_file_dir)
+
+ command = ["python",
+ os.path.join(config["MIN_PACKAGE_TOOLS"], "AmlGenOffset", "AmlGenOffset.py"),
+ "-d", "--aml_filter", config["AML_FILTER"],
+ "-o", out_file_path,
+ os.path.join(config["BUILD_X64"], aml_offsets_split[0], aml_offsets_split[1], aml_offsets_split[1], "OUTPUT", os.path.dirname(relative_dsdt_file_path), dsdt_file_root_ext[0] + ".offset.h")]
+
+ # execute the command
+ _, _, _, code = execute_script(command, config)
+ if code != 0:
+ print(" ".join(command))
+ print("Error re-generating PlatformOffset header files")
+ sys.exit(1)
+
+ print("GenOffset done")
+
+
return None
def _merge_files(files, ofile):
diff --git a/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_config.cfg b/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_config.cfg
index 1676c08813..4cc9496153 100644
--- a/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_config.cfg
+++ b/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_config.cfg
@@ -34,3 +34,18 @@ FSP_BINARY_BUILD = FALSE
FSP_TEST_RELEASE = FALSE
SECURE_BOOT_ENABLE = FALSE
BIOS_INFO_GUID = 4A4CA1C6-871C-45BB-8801-6910A7AA5807
+
+#
+# AML offset table generation configuration options
+# All paths should use / and be relative to edk2-platforms/Platform/Intel
+#
+# AML_FILTER - AML filter is used to strip out unused AML offset data
+# AML_OFFSETS_PATH - Path to INF file that builds AML offsets C source file
+# The directory name, DSC file name, INF file name, and BASE_NAME must match identically
+# DSDT_TABLE_FILE_PATH - Path to DSDT ASL file for the board
+# STRIPPED_AML_OFFSETS_FILE_PATH - Target AML offset data file consumed by UBA driver
+#
+AML_FILTER = \"PSYS\" .\.DRVT\" .\.FIX[0-9,A-Z] BBI[0] BBU[0] CRCM BAR0 .\.CCT[0-9A-Z]\" .\.CFH[0-9A-Z]\" .\.FXCD\" .\.FXST\" .\.FXIN\" .\.FXOU\" .\.FXBS\" .\.FXFH\" .\.CENA\" .\.DRVT\" .\.CFIS\" {NULL };
+AML_OFFSETS_PATH = WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets
+DSDT_TABLE_FILE_PATH = WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Dsdt/EPRPPlatform10nm.asl
+STRIPPED_AML_OFFSETS_FILE_PATH = WhitleyOpenBoardPkg/Uba/UbaMain/StaticSkuDataDxe/AmlOffsetTable.c
--
2.27.0.windows.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#86430): https://edk2.groups.io/g/devel/message/86430
Mute This Topic: https://groups.io/mt/88979449/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
Reviewed-by: Nate DeSimone <nathaniel.l.desimone@intel.com>
> -----Original Message-----
> From: Oram, Isaac W <isaac.w.oram@intel.com>
> Sent: Monday, February 7, 2022 11:03 AM
> To: devel@edk2.groups.io
> Cc: Desimone, Nathaniel L <nathaniel.l.desimone@intel.com>; Chiu, Chasel
> <chasel.chiu@intel.com>
> Subject: [edk2-devel][edk2-platforms][PATCH V1 7/8]
> WhitleyOpenBoardPkg/WilsonCityRvp: Generate AML offset table
>
> Add PreBuild step to generate the AML offset table for the ACPI tables.
>
> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
> Cc: Chasel Chiu <chasel.chiu@intel.com>
> Signed-off-by: Isaac Oram <isaac.w.oram@intel.com>
> ---
> Platform/Intel/.gitignore | 2 +
> Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets.dsc |
> 41 +++++++++++++
>
> Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets/AmlOffset
> s.inf | 26 ++++++++
> Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_board.py |
> 63 ++++++++++++++++++++
> Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_config.cfg |
> 15 +++++
> 5 files changed, 147 insertions(+)
>
> diff --git a/Platform/Intel/.gitignore b/Platform/Intel/.gitignore new file
> mode 100644 index 0000000000..548fee5bea
> --- /dev/null
> +++ b/Platform/Intel/.gitignore
> @@ -0,0 +1,2 @@
> +WhitleyOpenBoardPkg/Uba/UbaMain/StaticSkuDataDxe/AmlOffsetTable.c
> +__init__.py
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets.dsc
> b/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets.dsc
> new file mode 100644
> index 0000000000..2e5ebf432a
> --- /dev/null
> +++ b/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets.dsc
> @@ -0,0 +1,41 @@
> +## @file
> +# Build file for generating AML offset table # # @copyright # Copyright
> +(C) 2021 Intel Corporation.
> +#
> +# SPDX-License-Identifier: BSD-2-Clause-Patent ##
> +
> +[Defines]
> + PLATFORM_NAME = $(RP_PKG)
> + PLATFORM_GUID = D7EAF54D-C9B9-4075-89F0-71943DBCFA61
> + PLATFORM_VERSION = 0.1
> + DSC_SPECIFICATION = 0x00010005
> + OUTPUT_DIRECTORY = Build/$(RP_PKG)
> + SUPPORTED_ARCHITECTURES = IA32|X64
> + BUILD_TARGETS = DEBUG|RELEASE
> + PLATFORM_SI_PACKAGE = ClientOneSiliconPkg
> + DEFINE PLATFORM_SI_BIN_PACKAGE = WhitleySiliconBinPkg
> + PEI_ARCH = IA32
> + DXE_ARCH = X64
> +
> +!if $(CPUTARGET) == "CPX"
> + DEFINE FSP_BIN_PKG = CedarIslandFspBinPkg
> + DEFINE IIO_INSTANCE = Skx
> +!elseif $(CPUTARGET) == "ICX"
> + DEFINE FSP_BIN_PKG = WhitleyFspBinPkg
> + DEFINE IIO_INSTANCE = Icx
> +!else
> + DEFINE IIO_INSTANCE = UnknownCpu
> +!endif
> +
> + #
> + # Platform On/Off features are defined here # !include
> + $(RP_PKG)/PlatformPkgConfig.dsc
> +
> +[Components.X64]
> + $(RP_PKG)/WilsonCityRvp/AmlOffsets/AmlOffsets.inf
> +
> +!include $(RP_PKG)/Include/Dsc/BuildOptions.dsc
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets/AmlOffs
> ets.inf
> b/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets/AmlOffs
> ets.inf
> new file mode 100644
> index 0000000000..8945f372e3
> --- /dev/null
> +++
> b/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets/AmlOff
> +++ sets.inf
> @@ -0,0 +1,26 @@
> +## @file
> +# Generate AML offset table EPRPPlatform10nm.offset.h via edk2 build #
> +# @copyright # Copyright (C) 2022 Intel Corporation.
> +#
> +# SPDX-License-Identifier: BSD-2-Clause-Patent ##
> +
> +[Defines]
> + INF_VERSION = 0x00010005
> + BASE_NAME = AmlOffsets
> + FILE_GUID = d7641589-753a-44c5-91c2-bd09686205c6
> + MODULE_TYPE = USER_DEFINED
> + VERSION_STRING = 1.0
> +
> +[Sources]
> +
> +WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Dsdt/EPRPPlatform10nm
> .asl
> +
> +[Packages]
> + MdePkg/MdePkg.dec
> + WhitleySiliconPkg/SiliconPkg.dec
> +
> +[BuildOptions]
> + # add -vr and -so to generate offset.h
> + *_*_*_ASL_FLAGS = -oi -vr -so
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_board.py
> b/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_board.py
> index a0c31e4558..5f625f5f92 100644
> --- a/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_board.py
> +++ b/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_board.py
> @@ -23,6 +23,7 @@ def pre_build_ex(config, functions):
> :returns: nothing
> """
> print("pre_build_ex")
> +
> config["BUILD_DIR_PATH"] = os.path.join(config["WORKSPACE"],
> 'Build',
> config["PLATFORM_BOARD_PACKAGE"], @@ -53,6
> +54,68 @@ def pre_build_ex(config, functions):
>
> if config.get("API_MODE_FSP_WRAPPER_BUILD", "FALSE") == "TRUE":
> raise ValueError("FSP API Mode is currently unsupported on Ice Lake
> Xeon Scalable")
> +
> + # Build the ACPI AML offset table *.offset.h
> + print("Info: re-generating PlatformOffset header files")
> +
> + execute_script = functions.get("execute_script")
> +
> + command = ["build", "-D", "MAX_SOCKET=" + config["MAX_SOCKET"]]
> +
> + if config["EXT_BUILD_FLAGS"] and config["EXT_BUILD_FLAGS"] != "":
> + ext_build_flags = config["EXT_BUILD_FLAGS"].split(" ")
> + ext_build_flags = [x.strip() for x in ext_build_flags]
> + ext_build_flags = [x for x in ext_build_flags if x != ""]
> + command.extend(ext_build_flags)
> +
> + aml_offsets_split =
> os.path.split(os.path.normpath(config["AML_OFFSETS_PATH"]))
> + command.append("-p")
> + command.append(os.path.normpath(config["AML_OFFSETS_PATH"]) +
> '.dsc')
> + command.append("-m")
> + command.append(os.path.join(aml_offsets_split[0],
> aml_offsets_split[1], aml_offsets_split[1] + '.inf'))
> + command.append("-y")
> + command.append(os.path.join(config["WORKSPACE"],
> "PreBuildReport.txt"))
> + command.append("--log=" + os.path.join(config["WORKSPACE"],
> + "PreBuild.log"))
> +
> + _, _, _, code = execute_script(command, config)
> + if code != 0:
> + print(" ".join(command))
> + print("Error re-generating PlatformOffset header files")
> + sys.exit(1)
> +
> + # Build AmlGenOffset command to consume the *.offset.h and produce
> AmlOffsetTable.c for StaticSkuDataDxe use.
> +
> + # Get destination path and filename from config
> + relative_file_path =
> os.path.normpath(config["STRIPPED_AML_OFFSETS_FILE_PATH"]) # get
> path relative to Platform/Intel
> + out_file_path = os.path.join(config["WORKSPACE_PLATFORM"],
> relative_file_path) # full path to output file
> + out_file_dir = os.path.dirname(out_file_path) #
> remove filename
> +
> + out_file_root_ext = os.path.splitext(os.path.basename(out_file_path))
> # root and extension of output file
> +
> + # Get relative path for the generated offset.h file
> + relative_dsdt_file_path =
> os.path.normpath(config["DSDT_TABLE_FILE_PATH"]) # path relative to
> Platform/Intel
> + dsdt_file_root_ext =
> os.path.splitext(os.path.basename(relative_dsdt_file_path)) # root and
> extension of generated offset.h file
> +
> + # Generate output directory if it doesn't exist
> + if not os.path.exists(out_file_dir):
> + os.mkdir(out_file_dir)
> +
> + command = ["python",
> + os.path.join(config["MIN_PACKAGE_TOOLS"], "AmlGenOffset",
> "AmlGenOffset.py"),
> + "-d", "--aml_filter", config["AML_FILTER"],
> + "-o", out_file_path,
> + os.path.join(config["BUILD_X64"], aml_offsets_split[0],
> + aml_offsets_split[1], aml_offsets_split[1], "OUTPUT",
> + os.path.dirname(relative_dsdt_file_path), dsdt_file_root_ext[0] +
> + ".offset.h")]
> +
> + # execute the command
> + _, _, _, code = execute_script(command, config)
> + if code != 0:
> + print(" ".join(command))
> + print("Error re-generating PlatformOffset header files")
> + sys.exit(1)
> +
> + print("GenOffset done")
> +
> +
> return None
>
> def _merge_files(files, ofile):
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_config.cfg
> b/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_config.cfg
> index 1676c08813..4cc9496153 100644
> --- a/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_config.cfg
> +++ b/Platform/Intel/WhitleyOpenBoardPkg/WilsonCityRvp/build_config.cfg
> @@ -34,3 +34,18 @@ FSP_BINARY_BUILD = FALSE FSP_TEST_RELEASE =
> FALSE SECURE_BOOT_ENABLE = FALSE BIOS_INFO_GUID = 4A4CA1C6-871C-
> 45BB-8801-6910A7AA5807
> +
> +#
> +# AML offset table generation configuration options # All paths should
> +use / and be relative to edk2-platforms/Platform/Intel #
> +# AML_FILTER - AML filter is used to strip out unused AML offset
> data
> +# AML_OFFSETS_PATH - Path to INF file that builds AML offsets C
> source file
> +# The directory name, DSC file name, INF file name, and BASE_NAME must
> match identically
> +# DSDT_TABLE_FILE_PATH - Path to DSDT ASL file for the board
> +# STRIPPED_AML_OFFSETS_FILE_PATH - Target AML offset data file
> +consumed by UBA driver # AML_FILTER = \"PSYS\" .\.DRVT\"
> +.\.FIX[0-9,A-Z] BBI[0] BBU[0] CRCM BAR0 .\.CCT[0-9A-Z]\"
> +.\.CFH[0-9A-Z]\" .\.FXCD\" .\.FXST\" .\.FXIN\" .\.FXOU\" .\.FXBS\"
> +.\.FXFH\" .\.CENA\" .\.DRVT\" .\.CFIS\" {NULL }; AML_OFFSETS_PATH =
> +WhitleyOpenBoardPkg/WilsonCityRvp/AmlOffsets
> +DSDT_TABLE_FILE_PATH =
> +WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Dsdt/EPRPPlatform10nm
> .asl
> +STRIPPED_AML_OFFSETS_FILE_PATH =
> +WhitleyOpenBoardPkg/Uba/UbaMain/StaticSkuDataDxe/AmlOffsetTable.c
> --
> 2.27.0.windows.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#86473): https://edk2.groups.io/g/devel/message/86473
Mute This Topic: https://groups.io/mt/88979449/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
© 2016 - 2026 Red Hat, Inc.