public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Oram, Isaac W" <isaac.w.oram@intel.com>
To: devel@edk2.groups.io
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>,
	Chasel Chiu <chasel.chiu@intel.com>
Subject: [edk2-devel][edk2-platforms][PATCH V1 7/8] WhitleyOpenBoardPkg/WilsonCityRvp: Generate AML offset table
Date: Mon,  7 Feb 2022 11:02:44 -0800	[thread overview]
Message-ID: <987586e418eca8caa7afd342ec344bf0897b444d.1644259969.git.isaac.w.oram@intel.com> (raw)
In-Reply-To: <cover.1644259969.git.isaac.w.oram@intel.com>

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


  parent reply	other threads:[~2022-02-07 19:03 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-07 19:02 [edk2-devel][edk2-platforms][PATCH V1 0/8] Whitley ACPI Tables Oram, Isaac W
2022-02-07 19:02 ` [edk2-devel][edk2-platforms][PATCH V1 1/8] MinPlatformPkg/AmlGenOffset: Update for python 3 Oram, Isaac W
2022-02-09  3:20   ` Nate DeSimone
2022-02-07 19:02 ` [edk2-devel][edk2-platforms][PATCH V1 2/8] WhitleyOpenBoardPkg/AcpiTables: Add ACPI Table definitions Oram, Isaac W
2022-02-09  3:20   ` Nate DeSimone
2022-02-07 19:02 ` [edk2-devel][edk2-platforms][PATCH V1 3/8] WhitleyOpenBoardPkg/AcpiTables: South Cluster ASL Oram, Isaac W
2022-02-09  3:21   ` Nate DeSimone
2022-02-07 19:02 ` [edk2-devel][edk2-platforms][PATCH V1 4/8] WhitleyOpenBoardPkg/AcpiTables10nm: Add Static ACPI tables Oram, Isaac W
2022-02-09  3:21   ` Nate DeSimone
2022-02-07 19:02 ` [edk2-devel][edk2-platforms][PATCH V1 5/8] WhitleyOpenBoardPkg/AcpiTables10nm: Add DSDT ACPI table Oram, Isaac W
2022-02-09  3:21   ` Nate DeSimone
2022-02-07 19:02 ` [edk2-devel][edk2-platforms][PATCH V1 6/8] WhitleyOpenBoardPkg/Build: Enable includable build options Oram, Isaac W
2022-02-09  3:21   ` Nate DeSimone
2022-02-07 19:02 ` Oram, Isaac W [this message]
2022-02-09  3:21   ` [edk2-devel][edk2-platforms][PATCH V1 7/8] WhitleyOpenBoardPkg/WilsonCityRvp: Generate AML offset table Nate DeSimone
2022-02-07 19:02 ` [edk2-devel][edk2-platforms][PATCH V1 8/8] WhitleyOpenBoardPkg/StaticSkuDataDxe: Add open source driver Oram, Isaac W
2022-02-09  3:20   ` Nate DeSimone

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=987586e418eca8caa7afd342ec344bf0897b444d.1644259969.git.isaac.w.oram@intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox