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/ADLINK: Add new ComHpcAltPkg platform #226

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

bexcran
Copy link

@bexcran bexcran commented Oct 22, 2024

This new ComHpcAltPkg platform supports ADLINK's Ampere Altra Dev Kit,
Ampere Altra Developer Platform, and AVA Developer Platform.

They're all based on the COM-HPC-ALT module and carrier with an LGA
4926 socket supporting Ampere Altra and Ampere Altra Max CPUs up to
128 cores.


Add scripts which help users to build and flash firmware images for
platforms based on the Ampere Altra SoC.

'buildfw.sh' can be used to build images containing just UEFI, or if
the TF-A (ATF) binary is present TF-A + UEFI and complete 32MB SPI-NOR
images. If the SYS (SMPro and PMPro microprocessors) binary is also
present then a capsule update file for the SYS/SCP component of the SOC
will also be built. Usage:

Usage:
  ./Platform/Ampere/buildfw.sh [options]
    
Options:
  -b <bldtype>, --build <bldtype>  Specify the build type: DEBUG or
                                  RELEASE
  -t <tc>, --toolchain <tc>        Specify the toolchain to use: GCC or
                                   CLANG
  -m <mfg>, --manufacturer <mfg>   Specify platform manufacturer
                                   (e.g. Ampere)
  -p <plat>, --platform <plat>     Specify platform to build (e.g. Jade)
  -l <kern>, --linuxboot <kern>    Build LinuxBoot firmware instead of
           full EDK2 with UEFI Shell, specifying path to flashkernel
  -f, --flash                      Copy firmware to BMC and flash
           firmware (keeping EFI variables and NVPARAMs) after building
  -F, --full-flash                 Copy firmware to BMC and flash full
           EEPROM (resetting EFI variables and NVPARAMs) after building
    
  Note: flash options require bmc.sh file with env vars BMC_HOST, BMC_USER and BMC_PASS defined
  
  Available manufacturers:
    ADLINK
    Ampere
    ASRockRack
    
  Available platforms:
    ADLINK     -> ComHpcAlt
    Ampere     -> Jade
    ASRockRack -> Altrad8ud2

'fwver.sh' is used by buildfw.sh to keep track of the number of builds
done, so that firmware files of the format e.g.
comhpcalt_uefi_2024-10-22-5.bin are created along with displaying the
date including build number during boot.

'fwflash.sh' automates flashing the host firmware when the target
system is running a BMC with OpenBMC. 'fwflash.exp' is a helper
script used by 'fwflash.sh' to ssh into the BMC and run the
ampere_flash_bios.sh utility. Usage:

Copies firmware to the BMC (running OpenBMC) and runs
               ampere_flash_bios.sh to flash the host.
Usage:
      fwflash.sh [options] <Host firmware file>
    
    Options:
      -f, --full   Flash the entire SPI-NOR chip (default)
      -c, --code   Flash the code (TF-A + UEFI) area
      -t, --tfa    Flash the TF-A (ATF) area
      -u, --uefi   Flash the UEFI area
      -h, --help   This help message
    
    Note: TF-A (Trusted Firmware for ARMv8-A) is the same as ATF
          (ARM Trusted Firmware).

@bexcran bexcran force-pushed the bexcran-ampere branch 4 times, most recently from 0ce7280 to 7ac9199 Compare October 23, 2024 12:55
Add scripts which help users to build and flash firmware images for
platforms based on the Ampere Altra SoC.

'buildfw.sh' can be used to build images containing just UEFI, or if
the TF-A (ATF) binary is present TF-A + UEFI and complete 32MB SPI-NOR
images. If the SYS (SMPro and PMPro microprocessors) binary is also
present then a capsule update file for the SYS/SCP component of the SOC
will also be built. Usage:

Usage:
  ./Platform/Ampere/buildfw.sh [options]

Options:
  -b <bldtype>, --build <bldtype>  Specify the build type: DEBUG or
                                   RELEASE
  -t <tc>, --toolchain <tc>        Specify the toolchain to use: GCC or
                                   CLANG
  -m <mfg>, --manufacturer <mfg>   Specify platform manufacturer
                                   (e.g. Ampere)
  -p <plat>, --platform <plat>     Specify platform to build (e.g. Jade)
  -l <kern>, --linuxboot <kern>    Build LinuxBoot firmware instead of
           full EDK2 with UEFI Shell, specifying path to flashkernel
  -f, --flash                      Copy firmware to BMC and flash
           firmware (keeping EFI variables and NVPARAMs) after building
  -F, --full-flash                 Copy firmware to BMC and flash full
           EEPROM (resetting EFI variables and NVPARAMs) after building

  Note: flash options require bmc.sh file with env vars BMC_HOST, BMC_USER and BMC_PASS defined

  Available manufacturers:
    ADLINK
    Ampere
    ASRockRack

  Available platforms:
    ADLINK     -> ComHpcAlt
    Ampere     -> Jade
    ASRockRack -> Altrad8ud2

'fwver.sh' is used by buildfw.sh to keep track of the number of builds
done, so that firmware files of the format e.g.
comhpcalt_uefi_2024-10-22-5.bin are created along with displaying the
date including build number during boot.

'fwflash.sh' automates flashing the host firmware when the target
system is running a BMC with OpenBMC. 'fwflash.exp' is a helper
script used by 'fwflash.sh' to ssh into the BMC and run the
ampere_flash_bios.sh utility. Usage:

Copies firmware to the BMC (running OpenBMC) and runs
               ampere_flash_bios.sh to flash the host.
Usage:
  fwflash.sh [options] <Host firmware file>

Options:
  -f, --full   Flash the entire SPI-NOR chip (default)
  -c, --code   Flash the code (TF-A + UEFI) area
  -t, --tfa    Flash the TF-A (ATF) area
  -u, --uefi   Flash the UEFI area
  -h, --help   This help message

Note: TF-A (Trusted Firmware for ARMv8-A) is the same as ATF
      (ARM Trusted Firmware).

Signed-off-by: Rebecca Cran <[email protected]>
This new ComHpcAltPkg platform supports ADLINK's Ampere Altra Dev Kit,
Ampere Altra Developer Platform, and AVA Developer Platform.

They're all based on the COM-HPC-ALT module and carrier with an LGA
4926 socket supporting Ampere Altra and Ampere Altra Max CPUs up to
128 cores.

Signed-off-by: Rebecca Cran <[email protected]>

!if $(NETWORK_ENABLE) == TRUE
# Intel I210
INF IntelUndiBin/GigUndiBinRelease.inf
Copy link
Member

Choose a reason for hiding this comment

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

This file not found in edk2-platforms or edk2-non-osi

Copy link
Author

Choose a reason for hiding this comment

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

Right - I'm working on figuring out if it can be added to edk2-platforms or edk2-non-osi. In the meantime I'll create an IntelUndiPkg repo with binary releases that people can extract into the top-level directory.

Copy link
Member

@nhivp nhivp left a comment

Choose a reason for hiding this comment

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

I have not fully reviewed this. But there are several common comments can be applied in multiple places. Please help address them, then I will continue to review in the next revision.

#
INF Drivers/OptionRomPkg/RenesasFirmwarePD720202/RenesasFirmwarePD720202.inf
FILE FREEFORM = A059EBC4-D73D-4279-81BF-E4A89308B923 {
SECTION RAW = $(WORKSPACE)/K2026090.mem
Copy link
Member

Choose a reason for hiding this comment

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

K2026090.mem not found

Copy link
Author

Choose a reason for hiding this comment

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

You should get an error message saying how to get it.

Error: Renesas UPD720202 USB3 Controller firmware file /home/bcran/tiano/K2026090.mem not found.
See edk2-platforms/Drivers/OptionRomPkg/RenesasFirmwarePD720202/README.md for details on how to obtain it.

Copy link
Member

Choose a reason for hiding this comment

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

I think we should get user input from the build command for this mem file instead of failing to build. I would suggest adding a DEFINE USB_UPD720202_ROM_FILE which provides a way for users to input the mem file.

Then, we can check if the file exist or not before adding it to the FDF

!ifdef $(USB_UPD720202_ROM_FILE)
  FILE FREEFORM = A059EBC4-D73D-4279-81BF-E4A89308B923 {
    SECTION RAW = $(USB_UPD720202_ROM_FILE)
  }
!endif

Copy link
Member

Choose a reason for hiding this comment

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

Should we combine this file with ComHpcAlt.dec to have a single DEC file in a package? And, rename the DEC file to follow the rule (Leif suggested me earlier) <Name>Pkg/<Name>Pkg.dec

Copy link
Member

Choose a reason for hiding this comment

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

I'm not sure I understand the idea of having multiple the *.dsc.inc and *.fdf.inc here. I find it difficult to read. Should we combine them into single DSC/FDF file?

Copy link
Author

Choose a reason for hiding this comment

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

Yes, I'll do that. I left them as they were provided by ADLINK but I think combining them would be good.

Comment on lines +1 to +4
/** @file

**/

Copy link
Member

Choose a reason for hiding this comment

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

Missing license header. And, please check coding style in this file.

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.

2 participants