Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Platform/RISC-V: fix building failure caused by not found RiscVSbiLib #155

Closed
wants to merge 170 commits into from
Closed

Platform/RISC-V: fix building failure caused by not found RiscVSbiLib #155

wants to merge 170 commits into from

Conversation

GustavsC
Copy link

@GustavsC GustavsC commented Jun 6, 2024

This patch fixes the following errors during compilation

$ build -a RISCV64 -t GCC5 -p Platform/RISC-V/PlatformPkg/RiscVPlatformPkg.dsc

build.py...
/home/tianocore/edk2-platforms/Platform/RISC-V/PlatformPkg/RiscVPlatformPkg.dsc(...): error 4000: Instance of library class [RiscVSbiLib] is not found in [/home/tianocore/edk2-platforms/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.inf [RISCV64] consumed by module [/home/tianocore/edk2-platforms/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.inf]

Failed - Build end time: 20:17:40, Jun.06 2024
Build total time: 00:00:00

This patch fixes the following errors during compilation

$ build -a RISCV64 -t GCC5 -p Platform/RISC-V/PlatformPkg/RiscVPlatformPkg.dsc

build.py...
/home/tianocore/edk2-platforms/Platform/RISC-V/PlatformPkg/RiscVPlatformPkg.dsc(...): error 4000: Instance of library class [RiscVSbiLib] is not found
in [/home/tianocore/edk2-platforms/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.inf [RISCV64]
consumed by module [/home/tianocore/edk2-platforms/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.inf]

    Failed - Build end time: 20:17:40, Jun.06 2024
    Build total time: 00:00:00
@hrw
Copy link
Contributor

hrw commented Sep 13, 2024

Please rebase

@hrw hrw requested a review from vlsunil September 13, 2024 09:11
@hrw
Copy link
Contributor

hrw commented Sep 13, 2024

 $  build -a RISCV64 -t GCC -p edk2-platforms/Platform/RISC-V/PlatformPkg/RiscVPlatformPkg.dsc
Build environment: Linux-6.9.12-401.asahi.fc40.aarch64+16k-aarch64-with-glibc2.39
Build start time: 11:10:10, Sep.13 2024

WORKSPACE        = /home/marcin/devel/linaro/sbsa-qemu/code
PACKAGES_PATH    = /home/marcin/devel/linaro/sbsa-qemu/code/edk2:/home/marcin/devel/linaro/sbsa-qemu/code/edk2-platforms:/home/marcin/devel/linaro/sbsa-qemu/code/edk2-non-osi:/home/marcin/devel/linaro/sbsa-qemu/code/edk2-libc
EDK_TOOLS_PATH   = /home/marcin/devel/linaro/sbsa-qemu/code/edk2/BaseTools
CONF_PATH        = /home/marcin/devel/linaro/sbsa-qemu/code/edk2/Conf
PYTHON_COMMAND   = python3


Architecture(s)  = RISCV64

Processing meta-data Build target     = DEBUG
.Toolchain        = GCC

Active Platform          = /home/marcin/devel/linaro/sbsa-qemu/code/edk2-platforms/Platform/RISC-V/PlatformPkg/RiscVPlatformPkg.dsc


build.py...
/home/marcin/devel/linaro/sbsa-qemu/code/edk2-platforms/Platform/RISC-V/PlatformPkg/RiscVPlatformPkg.dsc(...): error 4000: Instance of library class [RiscVSbiLib] is not found
        in [/home/marcin/devel/linaro/sbsa-qemu/code/edk2-platforms/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.inf] [RISCV64]
        consumed by module [/home/marcin/devel/linaro/sbsa-qemu/code/edk2-platforms/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.inf]


- Failed -
Build end time: 11:10:11, Sep.13 2024
Build total time: 00:00:00

Copy link
Contributor

@vlsunil vlsunil left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thanks!

@hrw
Copy link
Contributor

hrw commented Sep 17, 2024

@GustavsC please add Signed-off-by to your patch as this is required for all edk2 contributions.

GustavsC and others added 21 commits September 17, 2024 14:46
This patch fixes the following errors during compilation

$ build -a RISCV64 -t GCC5 -p Platform/RISC-V/PlatformPkg/RiscVPlatformPkg.dsc

build.py...
/home/tianocore/edk2-platforms/Platform/RISC-V/PlatformPkg/RiscVPlatformPkg.dsc(...): error 4000: Instance of library class [RiscVSbiLib] is not found
in [/home/tianocore/edk2-platforms/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.inf [RISCV64]
consumed by module [/home/tianocore/edk2-platforms/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.inf]

    Failed - Build end time: 20:17:40, Jun.06 2024
    Build total time: 00:00:00

Signed-off-by: Gustavo Bastos <[email protected]>
Implements SpiHcPlatformLib library for AMD platform.
Its AMD platform specific SPI host controller library.

Cc: Abner Chang <[email protected]>
Cc: Paul Grimes <[email protected]>
Signed-off-by: Abdul Lateef Attar <[email protected]>
Temparory stack memory on PEI is hardcoded now, also minimium memory
size 256M is hardcoded now. Here memory map table from fw cfg can be
parsed. If there is memory map entry contains pei stack, it can be
published as usable memory at PEI stage.

Cc: Bibo Mao <[email protected]>
Cc: Chao Li <[email protected]>
Signed-off-by: Bibo Mao <[email protected]>
Signed-off-by: Xianglai Li <[email protected]>
Reviewed-by: Chao Li <[email protected]>
(1) Add the below definition for FIT entry type
    - FIT_TYPE_03_DIAGNOSTIC_ACM
    - FIT_TYPE_05_MMC_FIRMWARE_IMAGE
    - FIT_TYPE_06_FIT_RESET_STATE
    - FIT_TYPE_1A_VAB_PROVISIONING_TABLE
    - FIT_TYPE_1B_VAB_KEY_MANIFEST
    - FIT_TYPE_1C_VAB_IMAGE_MANIFEST
    - FIT_TYPE_1D_VAB_IMAGE_HASH_DESC
    - FIT_TYPE_2C_SACM_DEBUG
    - FIT_TYPE_2E_GRANULAR_SCRTM_ERROR

(2) Add the below definition to support FIT table range
    - FIT_TABLE_LOWER_ADDRESS
    - FIT_TABLE_UPPER_ADDRESS

(3) Add the below definition and structure for Type02 (Ver. 0x200) entry
    - FIT_TYPE_02_VERSION_200
    - FIT_TYPE_02_VERSION_200_ENTRY

Cc: Ashraf Ali S <[email protected]>
Cc: Rangasai V Chaganty <[email protected]>
Cc: Ray Ni <[email protected]>

Signed-off-by: Jason1 Lin <[email protected]>
QEMU no longer permits misaligned access to device memory, which breaks
QemuVideoDxe on SbsaQemu.

c1d1910be6e04a8b1a73090cf2881fb698947a6e commit in EDK2 fixed it by
enabling WriteCombine for Framebuffer memory. This change enables that
fix.

Signed-off-by: Marcin Juszkiewicz <[email protected]>
Reviewed-by: Ard Biesheuvel <[email protected]>
A patch adding a mapping for ImagePropertiesRecordLib introduced a bunch of
LF line endings in otherwise CRLF files, so clean that up.

Cc: Ard Biesheuvel <[email protected]>
Cc: Chuong Tran <[email protected]>
Cc: Graeme Gregory <[email protected]>
Cc: Marcin Juszkiewicz <[email protected]>
Cc: Marcin Wojtas <[email protected]>
Cc: Meenakshi Aggarwal <[email protected]>
Cc: Narinder Dhillon <[email protected]>
Cc: Nhi Pham <[email protected]>
Cc: Rebecca Cran <[email protected]>
Cc: Sami Mujawar <[email protected]>
Cc: Thomas Abraham <[email protected]>
Signed-off-by: Leif Lindholm <[email protected]>
Reviewed-by: Ard Biesheuvel <[email protected]>
Reviewed-by: Marcin Juszkiewicz <[email protected]>
PcdArmArchTimerFreqInHz is about to be removed, as it is now obsolete.
Some platforms already explicitly set it to 0, which is the default.
And some modules reference it in their .inf without actually ever
using it.

Drop these redundant uses first.

Cc: Ard Biesheuvel <[email protected]>
Cc: Chuong Tran <[email protected]>
Cc: Graeme Gregory <[email protected]>
Cc: Marcin Juszkiewicz <[email protected]>
Cc: Meenakshi Aggarwal <[email protected]>
Cc: Nhi Pham <[email protected]>
Cc: Rebecca Cran <[email protected]>
Cc: Sami Mujawar <[email protected]>
Cc: Thomas Abraham <[email protected]>
Cc: Wenyi Xie <[email protected]>
Signed-off-by: Leif Lindholm <[email protected]>
Reviewed-by: Ard Biesheuvel <[email protected]>
Reviewed-by: Nhi Pham <[email protected]>
GCC is unable to find a header file located into IpmiFeaturePkg:
  fatal error: Library/ServerMgmtRtLib.h: No such file or directory
     11 | #include <Library/ServerMgmtRtLib.h>
        |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Mike Maslenkin <[email protected]>
Reviewed-by: Nate DeSimone <[email protected]>
Cc: Liming Gao <[email protected]>
Fix gcc build failure:
IpmiFeaturePkg/GenericIpmi/Smm/SmmGenericIpmi.c:414:1:
  error: conflicting types for 'InitializeSmmGenericIpmi'
  414 | InitializeSmmGenericIpmi (
      | ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from <command-line>:
IpmiFeaturePkg/GenericIpmi/Smm/SmmGenericIpmi/DEBUG/AutoGen.h:138:1:
  note: previous declaration of 'InitializeSmmGenericIpmi' was here
  138 | InitializeSmmGenericIpmi (
      | ^~~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Mike Maslenkin <[email protected]>
Reviewed-by: Nate DeSimone <[email protected]>
Cc: Liming Gao <[email protected]>
uncrustify is required in EDK2 repository. SbsaQemu (and other platforms
in edk2-platforms) code was free from using it IIRC.

Reformat all files to make new contributions easier. We can recommend
formatting sources without generating extra work for developers.

Signed-off-by: Marcin Juszkiewicz <[email protected]>
Reviewed-by: Leif Lindholm <[email protected]>
Some Arm ltd. platforms explicitly set PcdArmArchTimerFreqInHz, however
the intended effect of that is not possible from AArch64 EL2/1, and has
never been performed unless built for ARM.

The Pcd is now being deleted, so drop the setting.

This has however affected timer timout calculations, so could lead to a
change in platform behaviour.

Cc: Sami Mujawar <[email protected]>
Cc: Thomas Abraham <[email protected]>
Signed-off-by: Leif Lindholm <[email protected]>
Reviewed-by: Ard Biesheuvel <[email protected]>
Reviewed-by: Sami Mujawar <[email protected]>
Lot of time passed since 10th of August 2020 when this platform was
added to EDK2-platforms repository.

So let bump PcdAcpiDefaultOemRevision value to today. So everyone will
see during OS boot that things are changing.

Signed-off-by: Marcin Juszkiewicz <[email protected]>
Reviewed-by: Leif Lindholm <[email protected]>
This patch is to enable the PcdSmrrEnable since the simics
report it has the capability to enable the smrr.

Signed-off-by: Jiaxin Wu <[email protected]>
This patch Add a new PchSpiStandaloneMm.inf driver for the PCH
SPI Interface support.

Signed-off-by: Ray Ni <[email protected]>
Co-authored-by: Jiaxin Wu <[email protected]>
Adds a library to generate and install HPET table.

Cc: Abner Chang <[email protected]>
Cc: Paul Grimes <[email protected]>
Signed-off-by: Abdul Lateef Attar <[email protected]>
Adds a library to generate and install WSMT table.

Cc: Abner Chang <[email protected]>
Cc: Paul Grimes <[email protected]>
Signed-off-by: Abdul Lateef Attar <[email protected]>
Adds a library to generate and install SPMI table.

Cc: Abner Chang <[email protected]>
Cc: Paul Grimes <[email protected]>
Signed-off-by: Abdul Lateef Attar <[email protected]>
Adds a library to generate and install FACS table.

Cc: Abner Chang <[email protected]>
Cc: Paul Grimes <[email protected]>
Signed-off-by: Abdul Lateef Attar <[email protected]>
There was an error in the wildcard path described for U5SeriesPkg, so
it failed to match. Fix the mistake.

Cc: Michael D Kinney <[email protected]>
Cc: Daniel Schaefer <[email protected]>
Signed-off-by: Leif Lindholm <[email protected]>
Reviewed-by: Michael D Kinney <[email protected]>
Cc: Daniel Schaefer <[email protected]>
Cc: Sunil V L <[email protected]>
Cc: Abner Chang <[email protected]>
Signed-off-by: Leif Lindholm <[email protected]>
Reviewed-by: Sunil V L <[email protected]>
ardbiesheuvel and others added 29 commits September 17, 2024 14:47
Remove all the ArmPlatformLib routines that are no longer used now that
the MPCore SEC drivers have been retired. The prototypes will be removed
from the ArmPlatformLib library class in a subsequent EDK2 change.

Signed-off-by: Ard Biesheuvel <[email protected]>
Reviewed-by: Leif Lindholm <[email protected]>
Reviewed-by: Nhi Pham <[email protected]>
Tested-by: Nhi Pham <[email protected]>
The following individuals are no longer active maintainers:

- Kelly Steele
- Zailiang Sun

Signed-off-by: Nate DeSimone <[email protected]>
Cc: Leif Lindholm <[email protected]>
Cc: Michael D Kinney <[email protected]>
This patch corrects the order of operations when freeing resources.

Also this patch fixes possible access to NULL pointer in
ReleaseTransportSession(). If NULL pointer is passed to this function,
the container_of(NULL) will return some invalid pointer.

The behavior of this function remains the same. If some valid pointer
is passed it will be dereferenced and freed. Function returns success
only if pointer to the passed token is equal to the saved
mSingleSessionToken value.

Cc: Abner Chang <[email protected]>
Cc: Abdul Lateef Attar <[email protected]>
Cc: Nickle Wang <[email protected]>
Cc: Nhi Pham <[email protected]>
Signed-off-by: Mike Maslenkin <[email protected]>
PrePi has been superseded by PeilessSec.inf, which is a more common
naming for the SEC module, aligned with other architectures. No
functional changes intended.

Switch all users to PeilessSec.inf so the old implementation can be
retired from EDK2. No ArmPlatformStackLib resolution is needed in this
case, so drop those as well.

Signed-off-by: Ard Biesheuvel <[email protected]>
Reviewed-by: Jeremy Linton <[email protected]>
Tested-by: Jeremy Linton <[email protected]>
This introduces two input parameters to the I2cProbe() and updates the
InternalI2cRead() for the support of the SMBUS operation with optional
PEC check, which will be used by the IPMI SSIF driver.

Signed-off-by: Nhi Pham <[email protected]>
Reviewed-by: Chuong Tran <[email protected]>
This corrects the line ending format to CRLF which is introduced by
44c735c
('Silicon/Ampere: Set default SMBIOS fw major/minor version to 0xFF')

Signed-off-by: Nhi Pham <[email protected]>
Reviewed-by: Chuong Tran <[email protected]>
This introduces fixed PCDs for SMBUS and BMC as specified to Ampere.

Signed-off-by: Nhi Pham <[email protected]>
Reviewed-by: Chuong Tran <[email protected]>
This adds the implementation of SMBUS PPI and Protocol to produce SMBUS
interface in both PEI and DXE phases for use by IPMI SSIF.

Signed-off-by: Nhi Pham <[email protected]>
Reviewed-by: Chuong Tran <[email protected]>
This adds the PlatformBmcReadyLib library instance, which provides a
function to check whether the BMC is ready for transaction or not. The
function checks the GPIO pin specified by the PcdBmcReadyGpio PCD and
returns TRUE if the pin is set to a logic high level, indicating that
the BMC is ready.

Signed-off-by: Nhi Pham <[email protected]>
Reviewed-by: Chuong Tran <[email protected]>
This adds the building of IPMI SSIf and associated modules.

Signed-off-by: Nhi Pham <[email protected]>
Reviewed-by: Chuong Tran <[email protected]>
This implements the BMC configuration screen to provide basic
information such as IPMI version, BMC version, and BMC IPv4.

Signed-off-by: Nhi Pham <[email protected]>
Reviewed-by: Chuong Tran <[email protected]>
Signed-off-by: Nhi Pham <[email protected]>
Reviewed-by: Chuong Tran <[email protected]>
This implements ACPI SPMI table as defined in the IPMI specification.

Signed-off-by: Nhi Pham <[email protected]>
Reviewed-by: Chuong Tran <[email protected]>
…ssMap()

OS kernel with greater than or equal to 48-bit VA space avoids EFI's
SetVirtualAddressMap() runtime service on Arm64 and simply uses the 1:1
address mapping that UEFI used at booting. However, AmpereAltraPkg's
RuntimeFlashLib replies on function call SetVirtualAddressMap() to
determine whether it is in boot time or run-time. If
SetVirtualAddressMap() has not been called prior, it causes the kernel
crash. This patch fixes that issue by removing the separation between
UEFI boot time and run-time in RuntimeFlashLib.

Signed-off-by: Nhi Pham <[email protected]>
Acked-by: Chuong Tran <[email protected]>
Add some missing library class resolutions relating to changes in the
core upstream EDK2 repo.

Signed-off-by: Ard Biesheuvel <[email protected]>
Reviewed-by: Ilias Apalodimas <[email protected]>
MbedTls is much smaller than OpenSSL, and does not require a softfloat
library on 32-bit ARM. So use that instead.

Note that we still need to resolve OpensslLib, given that MbedTlsLib has
a dependency on it (but only for SM3 digital signatures, which are not
used here)

Signed-off-by: Ard Biesheuvel <[email protected]>
Reviewed-by: Ilias Apalodimas <[email protected]>
Commit

  8676e88 ("Platform/ ARM AARCH64: Remove ArmPlatformLib MPCore boilerplate")

inadvertently removed the implementation of ArmGetCpuCountPerCluster(),
which was hiding in the RTSM ArmPlatformLib implementation, even though
it was not part of that library class interface.

Given that the implementation just returned PcdCoreCount, fix up the
code that got broken by using that value directly.

Signed-off-by: Ard Biesheuvel <[email protected]>
Reviewed-by: Sami Mujawar <[email protected]>
The PrePi->PeilessSec migration broke FVP boot because it lacks the
required LZMA support for decompressing the compressed FV.

Signed-off-by: Ard Biesheuvel <[email protected]>
Tested-by: Sami Mujawar <[email protected]>
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4828

Support Type5 for Memory Microcontroller Firmware Image entry.

Signed-off-by: HoraceX Lien <[email protected]>
Cc: Yuwei Chen <[email protected]>
Cc: Feng Bob C <[email protected]>
Cc: Liming Gao <[email protected]>
This commit adds the initial support for BOSC's
nanhu platform which provides up to 2 RISC-V RV64
processor cores.

Signed-off-by: Yang Wang <[email protected]>
Signed-off-by: Ran Wang <[email protected]>
Signed-off-by: YunFeng Yang <[email protected]>
Signed-off-by: YaXing Guo <[email protected]>
Cc: Leif Lindholm <[email protected]>
Cc: Michael D Kinney <[email protected]>
Cc: Sunil V L <[email protected]>
Cc: Daniel Schaefer <[email protected]>
Migrate data from Maintainers.txt to the GitHub standard CODEOWNERS
files plus REVIEWERS and CONTRIBUTORS.md. The latter file contains
mappings from name to email address and GitHub usernames, which will
help people who want to email maintainers instead of using GitHub.

Add .github/workflows/AssignReviewers.yml which adds reviewers to a
Pull Request based on the content of the REVIEWERS file.

Signed-off-by: Rebecca Cran <[email protected]>
Reviewed-by: Michael D Kinney <[email protected]>
ArmPlatformIsPrimaryCore() was removed in
8676e88 commit:

> Remove all the ArmPlatformLib routines that are no longer used now
> that the MPCore SEC drivers have been retired. The prototypes will be
> removed from the ArmPlatformLib library class in a subsequent EDK2
> change.

Signed-off-by: Marcin Juszkiewicz <[email protected]>
Yi Qian is @yqian4, not @yqian.

Signed-off-by: Rebecca Cran <[email protected]>
Move from v2 to v4 gets rid of warnings present in each workflow run:

The following actions uses node12 which is deprecated and will be forced
to run on node16: actions/checkout@v2.

The following actions use a deprecated Node.js version and will be
forced to run on node20: actions/checkout@v2,

Signed-off-by: Marcin Juszkiewicz <[email protected]>
Cache maintenance by set/way should only be used to manage the state of
a particular level in the cache hierarchy while the CPU is not taking
part in the coherency protocol. Use for any other purpose is not
supported by the architecture, and so the ArmLib routines that rely on
this will be removed.

BeagleBoard is a uni-processor system with non-cache coherent DMA,
where the use of set/way instructions to remove junk from the D-caches
at power-on is not entirely unreasonable. So incorporate the D-cache
invalidation code from ArmLib before dropping it from the library.

Signed-off-by: Ard Biesheuvel <[email protected]>
@GustavsC GustavsC closed this Sep 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.