Commit Graph
37 Commits
Author SHA1 Message Date
Michał Kopeć c61652ead0 Makefile.mk: Always pull FSP submodule
Change-Id: I502f5ffa0856c3ff9267e1ef1f51b5666202dfa3
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
2025-03-26 20:19:03 +02:00
Michał ŻygowskiandKrystian Hebel 0d88b56cda util/txesbmantool: Add utility to generate TXE SB manifests
Print key hashes when displaying manifests as it may be useful when
obtaining information from binary about the used keys and what hash
should be provisioned in TXE.

Change-Id: I288fbb3db6b42e231977683145ce67e8fbd98dfc
Upstream-Status: Pending
Co-authored-by: Krystian Hebel <krystian.hebel@3mdeb.com>
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
2025-03-13 17:50:48 +02:00
Michał Żygowski 5d6735cdc0 Makefile.mk: Put paylaod after fixed address files in CBFS
Change-Id: Ib6cac82b59bd4dc946a231efc7f1aeab48c0a623
Upstream-Status: Pending
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
2025-03-13 17:50:40 +02:00
Michał Żygowski 6fab6401b6 util/msi: add utility to generate the MSI ROMHOLE
Upstream-Status: Pending
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Change-Id: Icc27a9162b7a56c3fb1dba08406a1f3dae592b7b
2025-03-13 17:50:27 +02:00
Michał Żygowski d839eb3aa3 util/genbuild_h/genbuild_h.sh: generate Dasharo version
Change-Id: I656ab30e2d628719a9a68ef48967a1d327e96e05
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
2025-02-28 15:37:40 +02:00
Arthur Heymans 01dfc9b187 Makefile.mk: Suppress stack-usage LTO link warning
Suppress the following warning during linking with gcc:
src/drivers/spi/spi_flash.c: In function 'spi_flash_cmd_write':
src/drivers/spi/spi_flash.c:138:5: error: stack usage might be unbounded [-Werror=stack-usage=]
  138 | int spi_flash_cmd_write(const struct spi_slave *spi, const u8 *cmd,

Change-Id: If08d6d543a4fcff07003af8d1f8dd59ab79f42f8
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/84044
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
2024-11-06 04:55:09 +00:00
Elyes Haouas cb807fd78a Makefile.mk: Remove Wno-trigraphs
commit Ia219ccc added -Wno-trigraphs to let unit-tests builds.

Change-Id: Ibfe47194daafc02f89c83f045fb73c99a7c86d5d
Signed-off-by: Elyes Haouas <ehaouas@noos.fr>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/83453
Reviewed-by: coreboot org <coreboot.org@gmail.com>
Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2024-10-15 02:19:20 +00:00
Nicholas Chin cb7c58f626 Makefile.mk: Skip unnecessary recompiles when static.{c,h} are updated
The generated static.c file output by sconfig is currently added as a
prerequisite for all objects to ensure that static.h exists before
compiling anything that might need it. However, this forces every single
object out of date when the compiled devicetree is updated, even though
not every file actually needs static.h.

Only static.h actually needs to exist before compilation of other
objects, since static.c is an independent compilation unit that doesn't
need to exist before other objects can be built. Thus, change the
prerequisite from static.c to static.h, and add a rule for static.h that
depends on static.c. The recipe is a simple `true` since sconfig
generates static.c and static.h at the same time. To prevent unnecessary
recompiles, make static.h an order-only prerequisite [1] using the new
generated files argument for create_cc_template to ensure that the
header exists before any object might need it, but without forcing a
recompile of all objects by default whenever it is updated.

On a clean build, all objects will be compiled since they do not exist,
and these will occur after static.h is generated due to the default
order-only prerequisite. On subsequent incremental compiles, sources
that do need static.h will be appropriately marked out of date due to
the generated .d dependency files from the compiler, which list static.h
as a normal prerequisite for each objects that do include it, which
overrides the default order-only prerequisite. The dependency files
generated for all other objects will not include static.h, and thus the
objects will not be updated since the default order-only dependency does
not force them out of date.

After updating the devicetree of qemu-i440fx after a clean build,
comparing the build log with `make --debug=why` with the generated
dependency files indicates that only objects that actually depend on
static.h were rebuilt, instead of every object. Running a timeless
incremental build after making a change in the devicetree yielded
identical roms when performed with this patch and main, with the only
difference being the number of objects that needed to be rebuilt. Also
tested with the E6430.

[1] https://www.gnu.org/software/make/manual/html_node/Prerequisite-Types.html

Change-Id: I34efc162760ae703285f3982fa16cc23a86b37f6
Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/84387
Reviewed-by: Nico Huber <nico.h@gmx.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2024-09-20 13:04:10 +00:00
Michał Żygowski b14ec5fbab 3rdparty/open-power-signing-utils: add SecureBoot utility for OpenPOWER
Signing is performed with test keys by default, set
CONFIG_SIGNING_KEYS_DIR to a non-empty value to use other keys.

Depending on the version of the Talos II firmware this alone might not
allow booting because coreboot replaces only part of the stock firmware
and its newer versions enable secure boot by default (not to be confused
with SecureBoot in EFI).  The signing performed in this commit is still
a prerequisite and might as well be done on its own.  Fixing operation
with newer stock firmware will be done in a follow-up change.

Change-Id: Id88baef5ecb1f8ffd74a7f464bbbaaaea0ca643d
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/67065
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Krystian Hebel <krystian.hebel@3mdeb.com>
2024-09-06 13:55:50 +00:00
Michał Żygowski 6c8b0e430f Makefile.mk: compile ECC tools and inject ECC to final image
$ build/cbfstool build/coreboot.rom print
FMAP REGION: COREBOOT
Name                           Offset     Type           Size   Comp
cbfs_master_header             0x0        cbfs header        32 none
fallback/romstage              0x80       stage           18495 LZ4  (30096 decompressed)
fallback/ramstage              0x4940     stage           24288 LZMA (61240 decompressed)
config                         0xa880     raw              1324 LZMA (3308 decompressed)
revision                       0xae00     raw               726 none
build_info                     0xb100     raw               122 none
(empty)                        0xb1c0     null           347108 none
header_pointer                 0x5fdc0    cbfs header         4 none

Change-Id: I8541aa6f1429ed6143830ed11c47c150183ddf0d
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/67064
Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Elyes Haouas <ehaouas@noos.fr>
2024-09-06 13:27:18 +00:00
Arthur Heymans b56f407614 Add initial experimental LTO support
This will not succeed in compiling on all target and compiler
combinations but at least gets the ball rolling. The change is not
invasive.

Some notes:
- GCC has issues with LTO on ARM
- Clang uses LLD automatically on some arch
- Clang with LTO fails on x86 as it forwards the linking to GCC for some
  reason
- SMM building succeeds but the binary is empty

Change-Id: Ieb9204777fd349542744a8946e2207731c37969c
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/84003
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com>
Reviewed-by: Nico Huber <nico.h@gmx.de>
2024-08-24 12:50:38 +00:00
Arthur Heymans 7bb8de1843 Makefile.mk: Add a common link_stage function and use it
A few differences with the original link targets:
- 'libs' is now supported on all arch even though only x86 uses it
- compiler_rt is included on arch that previously did not (arm). This
  however has no impact as there compiler_rt is not defined for those
  arch in xcompile
- LIBGCC_FILE_NAME_bootblock is not included, but this was not defined
  anywhere so this is a noop

Change-Id: I64f7686894c99732d06972e7ba327061db6d7c44
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/83574
Reviewed-by: Nico Huber <nico.h@gmx.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2024-08-22 13:57:47 +00:00
Nico Huber 6b8c40a95a Makefile: Move `--no-warn-rwx-segments' into xcompile
The parameter is not available for binutils older than 2.39. So move it
to xcompile to provide backwards compatibility for a bit.

Change-Id: I02982769ae2c356f037a747e85d155368bfcb730
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/83693
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
2024-08-08 20:16:25 +00:00
Arthur Heymans 27d24f21ab Makefile.mk: Mark stack as not executable
Suppress the warning:
    missing .note.GNU-stack section implies executable stack
    NOTE: This behaviour is deprecated and will be removed in a
    future version of the linker

Since we don't need an executable stack this is fine. Some newer
linkers like LLD even default to this.

Change-Id: Ib787cc464e0924ab57575cec9fbfd1d59bdd3481
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/83560
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
Reviewed-by: Nico Huber <nico.h@gmx.de>
2024-07-22 14:05:53 +00:00
Arthur Heymans c4b9206a22 Makefile.mk: Remove linker warning on RWX segments
Silence a linker warnings about segments with RWX. Having one segment
for all sections is a good design choice as it makes parsing the elf
into a loadable binary simpler.

Change-Id: I1e0f51c69dabaea314ac45924474d446a9ab68f4
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/83559
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
Reviewed-by: Nico Huber <nico.h@gmx.de>
2024-07-22 14:05:27 +00:00
Maximilian Brune 6841670e4d Makefile.mk: Fix int-shift-left
commit 4a8d73d6a4 ("Makefile.mk: Remove bc dependency") broke the left
shift, since the expr tool does not support shifting operations.

This patch uses the left shift operator inside arithmetic expansion.
Every posix shell should support this.

Tested:
Build amd/birman mainboard and check that the soft-fuse parameter
doesn't change.

Signed-off-by: Maximilian Brune <maximilian.brune@9elements.com>
Change-Id: If3b29dae727875b0788100a2cb02c86736ffaf8c
Reviewed-on: https://review.coreboot.org/c/coreboot/+/83377
Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Martin L Roth <gaumless@gmail.com>
Reviewed-by: Matt DeVillier <matt.devillier@gmail.com>
2024-07-08 22:38:27 +00:00
Maximilian Brune 4a8d73d6a4 Makefile.mk: Remove bc dependency
bc was added as dependency in commit 229e021110 ("Makefile.inc: Add left shift macro")

bc is not stated as dependency in our docs (e.g. package installation).
If you don't have bc installed you can easily get false positives on
coreboot builds. For example you build a mainboard and coreboot tells
you the build succeeded, even though you don't have bc installed.

This patch is from julius comment on CB:21601.

Signed-off-by: Maximilian Brune <maximilian.brune@9elements.com>
Change-Id: I6ab4bc2bd7a45e84b923d4fe7ec473e6c7db2146
Reviewed-on: https://review.coreboot.org/c/coreboot/+/83313
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
2024-07-08 12:58:01 +00:00
Felix Held d05fe9fd3c Revert "Makefile.mk: Use Walloc-size GCC option"
This reverts commit 6ab188ee6c.

This breaks the build using a slightly older toolchain that doesn't know
this option yet.

Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Change-Id: I0bdc909c0e53b5353743dca521c963bbec792f7e
Reviewed-on: https://review.coreboot.org/c/coreboot/+/83311
Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Elyes Haouas <ehaouas@noos.fr>
Reviewed-by: Nicholas Chin <nic.c3.14@gmail.com>
2024-07-03 04:49:57 +00:00
Martin Roth 9f62ece050 Makefiles: Add site_local-target to run early in the build
This double-colon target doesn't do anything unless it's implemented by
another makefile. It's intended to be used only by the site-local
makefile to allow it to run any necessary steps before the actual
coreboot build begins.

Signed-off-by: Martin Roth <gaumless@gmail.com>
Change-Id: I01f98c9cf8375bca21ab87f9becf66a25402c758
Reviewed-on: https://review.coreboot.org/c/coreboot/+/83198
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
2024-07-02 18:44:39 +00:00
Elyes Haouas 4332d028fb Makefile.mk: Use Wcast-function-type GCC option
Change-Id: I25415d7fd82879889ffaa1bb534ad5d0b174854e
Signed-off-by: Elyes Haouas <ehaouas@noos.fr>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/82736
Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2024-07-01 11:43:30 +00:00
Elyes Haouas 6ab188ee6c Makefile.mk: Use Walloc-size GCC option
Change-Id: Ia26dcf097db125a5a734660d08d875459179241b
Signed-off-by: Elyes Haouas <ehaouas@noos.fr>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/82734
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
2024-07-01 11:31:36 +00:00
Felix Singer 0adf35537b Makefile.mk: Use one line per *_common flag
Use one line per *_common flag like it's done elsewhere in the tree.
It makes the list of options more readable.

Change-Id: I33c500e6eb74daf1e66c2b5e07b50f81c0f4587d
Signed-off-by: Felix Singer <felixsinger@posteo.net>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/83226
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Elyes Haouas <ehaouas@noos.fr>
Reviewed-by: Maximilian Brune <maximilian.brune@9elements.com>
2024-06-29 07:07:56 +00:00
Werner Zeh 1a77d1e437 Makefile.mk: Fix inclusion of site-local/Makefile.inc
In commit 854dd9a5d1
(Makefile.mk: Put site-local path first) the inclusion of
site-local/Makefile.inc was moved to the first place. Unfortunately,
the very next line where subdirs-y is modified resets the variable
instead of extending it which overwrites the inclusion of
site-local/Makefile.inc. This breaks setups where
site-local/Makefile.inc is required.

This patch fixes it.

Change-Id: I36ad1aca5742869c84e2fb556f898f896c6f037a
Signed-off-by: Werner Zeh <werner.zeh@siemens.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/83190
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Singer <service+coreboot-gerrit@felixsinger.de>
Reviewed-by: Elyes Haouas <ehaouas@noos.fr>
Reviewed-by: Michał Kopeć <michal.kopec@3mdeb.com>
2024-06-24 14:01:40 +00:00
Nikolai Vyssotski 854dd9a5d1 Makefile.mk: Put site-local path first
"site-local" Makfile(s) may need to override some of the macros/paths
used elsewhere in src/* Makefiles. If we include it last src/*
Makefile.mk will have already been processed. MAINBOARD_BLOBS_DIR is
an example where the path needs to be overwritten in site-local
requiring it to be included first before src/mainboard/* Makefile.mk
is processed.

Change-Id: I8ea865cd73aba5092a628b0422e5c4121b32fb4d
Signed-off-by: Nikolai Vyssotski <nikolai.vyssotski@amd.corp-partner.google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/68799
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
2024-06-21 20:37:27 +00:00
Arthur Heymans 6ed0ba1e93 cbfstool: Read XIP stage alignment requirements from ELF
On x86_64 romstage can contain page tables and a page table pointer
which have an larger alignment requirement of 4096. Instead of
hardcoding it, read if from the ELF phdrs.

Change-Id: I94e4a4209b7441ecb2966a1342c3d46625771bb8
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/82102
Reviewed-by: Shuo Liu <shuo.liu@intel.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Jérémy Compostella <jeremy.compostella@intel.com>
Reviewed-by: Julius Werner <jwerner@chromium.org>
2024-06-20 19:34:14 +00:00