Dasharo / dasharo-issues

The Dasharo issue tracker
https://dasharo.com/
24 stars 0 forks source link

Supermicro X11SSH - prepare coreboot release branch #329

Open miczyg1 opened 1 year ago

miczyg1 commented 1 year ago

Dasharo version (if applicable) v0.1.0

Dasharo variant (if applicable) Dasharo compatible with Supermicro X11SSH

Affected component(s) or functionality (if applicable) coreboot

Brief summary Checklist:

If all above points are fulfilled, tag the repository with supermicro_x11ssh_v0.1.0.

miczyg1 commented 1 year ago

@pietrushnic I am wondering what will be the base commit for this branch: https://github.com/Dasharo/coreboot/tree/supermicro_x11-lga1151-series/develop As you merged the common-base-rebased branch, our commits mixed with upstream repo history and it is now impossible to tell apart where upstream is and where our changes are.

I foresee three paths here:

  1. Start from scratch by creating new branch from common-base-rebased (then apply your miniconfigs)
  2. Start from scratch by creating new branch from upstream and cherry-pick our changes from common-base-rebased (then apply your miniconfigs)
  3. Rebase the common-base-rebased on recent upstream and then start a new branch for X11SSH from it (then apply your miniconfigs)

Third path seems the most rightful thing to do.

miczyg1 commented 1 year ago

Created a common-base-4.19 branch with our changes based on upstream 4.19. From that point I have created x11ssh branch: https://github.com/Dasharo/coreboot/tree/supermicro_x11-lga1151-series/develop

The EDK2 build is working with all applicable features. But I have a problem with using SUM to update the firmware. I am afraid of bricking without a recovery possibility. Despite having the license activated, I cannot update BIOS via OOB method.

pietrushnic commented 1 year ago

@miczyg1 I will try to use SUM on my side and we will see if I'm facing the same issues as you.

pietrushnic commented 1 year ago

I guess SUM discussion belongs more to #327 so I will continue there.

pietrushnic commented 1 year ago

I tried to build with most recent coreboot-sdk (2022-12-18_3b32af950d) and get following trace:

Processing meta-data ......# 
/home/coreboot/coreboot/payloads/external/edk2/workspace/Dasharo/BaseTools/BinWrappers/PosixLike/../../Source/Python/build/build.py:532: DeprecationWarning: isSet() is deprecated, use is_set() instead
  return not BuildTask._SchedulerStopped.isSet()

build.py...
 : error C0DE: Unknown fatal error when processing [/home/coreboot/coreboot/payloads/external/edk2/workspace/Dasharo/ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.inf [X64, COREBOOT, RELEASE]]

(Please send email to devel@edk2.groups.io for help, attaching following call stack trace!)

(Python 3.10.9 on linux) Traceback (most recent call last):
  File "/home/coreboot/coreboot/payloads/external/edk2/workspace/Dasharo/BaseTools/BinWrappers/PosixLike/../../Source/Python/build/build.py", line 2586, in Main
    MyBuild.Launch()
  File "/home/coreboot/coreboot/payloads/external/edk2/workspace/Dasharo/BaseTools/BinWrappers/PosixLike/../../Source/Python/build/build.py", line 2381, in Launch
    self._MultiThreadBuildPlatform()
  File "/home/coreboot/coreboot/payloads/external/edk2/workspace/Dasharo/BaseTools/BinWrappers/PosixLike/../../Source/Python/build/build.py", line 2231, in _MultiThreadBuildPlatform
    Wa, self.BuildModules = self.PerformAutoGen(BuildTarget,ToolChain)
  File "/home/coreboot/coreboot/payloads/external/edk2/workspace/Dasharo/BaseTools/BinWrappers/PosixLike/../../Source/Python/build/build.py", line 2106, in PerformAutoGen
    CmdListDict = self._GenFfsCmd(Wa.ArchList)
  File "/home/coreboot/coreboot/payloads/external/edk2/workspace/Dasharo/BaseTools/BinWrappers/PosixLike/../../Source/Python/build/build.py", line 2003, in _GenFfsCmd
    GenFfsDict = GenFds.GenFfsMakefile('', GlobalData.gFdfParser, self, ArchList, GlobalData)
  File "/home/coreboot/coreboot/payloads/external/edk2/workspace/Dasharo/BaseTools/Source/Python/GenFds/GenFds.py", line 541, in GenFfsMakefile
    FdObj.GenFd(Flag=True)
  File "/home/coreboot/coreboot/payloads/external/edk2/workspace/Dasharo/BaseTools/Source/Python/GenFds/Fd.py", line 131, in GenFd
    RegionObj.AddToBuffer (FdBuffer, self.BaseAddress, self.BlockSizeList, self.ErasePolarity, GenFdsGlobalVariable.ImageBinDict, self.DefineVarDict, Flag=Flag)
  File "/home/coreboot/coreboot/payloads/external/edk2/workspace/Dasharo/BaseTools/Source/Python/GenFds/Region.py", line 134, in AddToBuffer
    FvObj.AddToBuffer(FvBuffer, FvBaseAddress, BlockSize, BlockNum, ErasePolarity, Flag=Flag)
  File "/home/coreboot/coreboot/payloads/external/edk2/workspace/Dasharo/BaseTools/Source/Python/GenFds/Fv.py", line 127, in AddToBuffer
    FileName = FfsFile.GenFfs(MacroDict, FvParentAddr=BaseAddress, IsMakefile=Flag, FvName=self.UiFvName)
  File "/home/coreboot/coreboot/payloads/external/edk2/workspace/Dasharo/BaseTools/Source/Python/GenFds/FfsInfStatement.py", line 518, in GenFfs
    InputSectList, InputSectAlignments = self.__GenComplexFileSection__(Rule, FvChildAddr, FvParentAddr, IsMakefile=IsMakefile)
  File "/home/coreboot/coreboot/payloads/external/edk2/workspace/Dasharo/BaseTools/Source/Python/GenFds/FfsInfStatement.py", line 969, in __GenComplexFileSection__
    SectList, Align = Sect.GenSection(self.OutputPath, self.ModuleGuid, SecIndex, self.KeyStringList, self, IsMakefile = IsMakefile)
  File "/home/coreboot/coreboot/payloads/external/edk2/workspace/Dasharo/BaseTools/Source/Python/GenFds/EfiSection.py", line 318, in GenSection
    GenFdsGlobalVariable.GenerateSection(OutputFile,
  File "/home/coreboot/coreboot/payloads/external/edk2/workspace/Dasharo/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py", line 519, in GenerateSection
    if (os.path.getsize(Output) >= GenFdsGlobalVariable.LARGE_FILE_SIZE and
  File "/home/coreboot/coreboot/payloads/external/edk2/workspace/Dasharo/BaseTools/Source/Python/Common/LongFilePathOsPath.py", line 21, in getsize
    return os.path.getsize(LongFilePath(filename))
  File "/usr/lib/python3.10/genericpath.py", line 50, in getsize
    return os.stat(filename).st_size
FileNotFoundError: [Errno 2] No such file or directory: '/home/coreboot/coreboot/payloads/external/edk2/workspace/Build/UefiPayloadPkgX64/RELEASE_COREBOOT/FV/Ffs/CB683001-379F-48C7-B7B6-707D29454BF5exfat/CB683001-379F-48C7-B7B6-707D29454BF5SEC2.1.pe32'

- Failed -
Build end time: 23:08:59, Feb.24 2023
Build total time: 00:00:06

Failed!
make[1]: *** [Makefile:304: /home/coreboot/coreboot/payloads/external/edk2/workspace/Build/UefiPayloadPkgX64/RELEASE_COREBOOT/FV/UEFIPAYLOAD.fd] Error 1
make: *** [payloads/external/Makefile.inc:162: build/UEFIPAYLOAD.fd] Error 2
pietrushnic commented 1 year ago

When using 2021-09-23_b0d87f753c build ends up correctly, but warnings may be concerning:

(...)
    CC            firmware/2lib/2tpm_bootmode.o
    CC            firmware/lib/cgptlib/cgptlib.o
    CC            firmware/lib20/api_kernel.o
    CC            firmware/lib20/kernel.o
    CC            firmware/stub/vboot_api_stub_stream.o
    RM            libvboot_util.a
    AR            libvboot_util.a
    RM            vboot_fw.a
    AR            vboot_fw.a
    LD            futility/futility
/usr/bin/ld: /home/coreboot/coreboot/build/util/vboot_lib/libvboot_util.a(2crypto.o): warning: relocation in read-only section `.rodata.vb2_sig_names'
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE
    CREATE GBB (without BMPFV)
successfully created new GBB to: build/gbb.stub.tmp
    SETUP GBB
 - import root_key from 3rdparty/vboot/tests/devkeys/root_key.vbpubk: success
 - import recovery_key from 3rdparty/vboot/tests/devkeys/recovery_key.vbpubk: success
successfully saved new image to: build/gbb.region.tmp
    WRITE GBB

        ** WARNING **
coreboot has been built without an Intel Firmware Descriptor.
Never write a complete coreboot.rom without an IFD to your
board's flash chip! You can use flashrom's IFD or layout
parameters to flash only to the BIOS region.

WARNING: prepare_slot: VBLOCK_A keyblock is invalid.
WARNING: prepare_slot: VBLOCK_B keyblock is invalid.
    FLASHMAP Layout generated for RO, A and B partition.

If we should not care about that, then I would add that information to building documentation.

miczyg1 commented 1 year ago

@pietrushnic 2021-09-23_b0d87f753c is the latest one that works. We cannot use newer until edk2 is rebased.

I agree that vboot utilities make a huge fuss with all those warnings... Things are much more cleaner without vboot I think.

pietrushnic commented 1 year ago

I will ad notes in building manual that those warning are nothing to worry about.

macpijan commented 1 year ago

We cannot use newer until edk2 is rebased.

Do we necessarily need to build coreboot and edk2 in the same container? It is not uncommon that payload is build separately. We could even share the same payload build for a few platforms.

miczyg1 commented 1 year ago

We cannot use newer until edk2 is rebased.

Do we necessarily need to build coreboot and edk2 in the same container? It is not uncommon that payload is build separately. We could even share the same payload build for a few platforms.

The thing is you would have to pass all the environment variables and coreboot config options to edk2 build system. Furthermore you would have to switch containers back to use cbfstool and include the freshly built UEFI Payload. It will be much more mess than it is now. Lastly, avoiding edk2 rebase by splitting builds is not a solution.