Skip to content

M900 Tiny Dasharo - #728

Draft
mkopec wants to merge 971 commits into
dasharofrom
m900_tiny_backport
Draft

M900 Tiny Dasharo#728
mkopec wants to merge 971 commits into
dasharofrom
m900_tiny_backport

Conversation

@mkopec

@mkopec mkopec commented Jul 25, 2025

Copy link
Copy Markdown
Member

Dasharo enablement and backports of some fixes.

pietrushnic and others added 30 commits June 13, 2025 11:27
This change look for AIRGAP environment variable and if it is set it
perform airgap build of Dasharo for Odroid H4 and its version for
Intel Boot Guard.

This is required for security, privacy and trainers who would like to
perform 100% offline build.

To make that possible couple requirements have to be fulfilled:
- repository cannot be distcleaned, because it remove all artifacts, the
  assumption is that provided repository already has all dependencies
  fetched, so only make clean is made before proceeding
- since whole process rely on mounting edk2 as volume inside Dasharo SDK
  container, workspace directory to which it would be mount needs proper
  permissions otherwise docker will create mountpoint with root
  privileges, what cause issues in further use and build process
- finally we take into consideration BUILD_TIMELESS environment
  variable, which improve testability of build process and toolchain
  change

This change was tested by:
1. cloning relevant version of edk2
2. cloning coreboot, cd coreboot
3. running checkout on ipxe:

docker run --rm --user $(id -u):$(id -g) -v $PWD:/home/coreboot/coreboot \
  ${DASHARO_SDK} \
  make -C /home/coreboot/coreboot/payloads/external/iPXE checkout

4. Build

EDK2_REPO_PATH="${PWD}/../edk2" AIRGAP=1 BUILD_TIMELESS=1 ./build.sh odroid_h4_btg
EDK2_REPO_PATH="${PWD}/../edk2" AIRGAP=1 BUILD_TIMELESS=1 ./build.sh odroid_h4

Upstream-Status: Inappropriate [custom build script]
Signed-off-by: Piotr Król <piotr.krol@3mdeb.com>
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Upstream-Status: Inappropriate [CI workflow and custom build script]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Upstream-Status: Inappropriate [CI workflow]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
The NV4X and NS5X ADL are the only with enabled ccache. Disable it
for consistency.

Also dasharo-sdk v1.6.0 does not have ccache installed which causes
the build to fail.

Upstream-Status: Inappropriate [custom configs]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
This corrects change-id I885252a488bd35fc3afef571e6178642a059f883
("soc/intel/fast_spi/mmap_boot.c: allow mapping whole flash").  Looks
like hardware/chipset/ME/whatever limits what can be accessed via the
memory mapping to IFD BIOS region.

Instead of requesting mapping whatever is in front of IFD BIOS region,
add another xlate window for accessing that part of the flash via
implementation in src/soc/intel/common/block/fast_spi/fast_spi_flash.c

Upstream-Status: Pending
Change-Id: I2363f88655461951662c1a6fda9333785527e258
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
- Restart APs after BIOS ACM LOCK_CONFIG
- Prepare TXT environment for BIOS ACM LOCK_CONFIG
- Set the TXT platform type if CBNT is used
- Restart APs after clearing secrets
- Invalidate cache and reset system depending on ACM parameters

Upstream-Status: Pending
Change-Id: Ib57b4c7e60e37a8f48dd528bc5b23f0306b730e1
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Co-authored-by: SergiiDmytruk <sergii.dmytruk@3mdeb.com>
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
This is required for CBnT

Upstream-Status: Pending
Change-Id: I5e8fd3ae48908da9d7316fb0c453025b216f291c
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
…ching ME image

Upstream-Status: Pending
Change-Id: I76a4313bbc3a84dff51dfd5d3c74ea98d25db7c6
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Fix printing minor CBnT error codes

Upstream-Status: Pending
Change-Id: I5ba0965233783c47e86b8899cf0cab048df14180
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Add BtG and TXT FSP configuration parameters and add a defconfig for
V560TNx with CBnT enabled.

Upstream-Status: Pending
Change-Id: I84fffa4e4463a2b52f21ae6e768f732ad9cf956d
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Trust that CBnT has set up a safe environment, if NO_XIP_EARLY_STAGES is
not set by the platform.

Upstream-Status: Pending
Change-Id: I29fba8c5beb367feffe49e8cdfee995adec9cfba
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Log CBnT status if CBnT is enabled.

Upstream-Status: Pending
Change-Id: I938461176812431e46281832393d64b9bb6a64d4
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
There is no need to have them in RW sections.

Upstream-Status: Pending
Change-Id: I1cd6bc4dfc862313493b9cb45eb058c41fdc514a
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Enable CBnT with placeholder manifests for NovaCustom laptops. The
manifests are replaced with their actual contents by the BtG
provisioning scripts.

Upstream-Status: Pending
Change-Id: I06c57195e08330aa92cce0e25d9555b8b09a792b
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Increase RW_FWID and RO_FRID to accomodate larger FW IDs.

Upstream-Status: Pending
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Change-Id: I536b36ec4c1e3c5a0e3912bdc6f04b5a88a12c0c
CbnT does the TPM startup as a part of the ACM execution. It will
cause an invalid postinit error on TPM startup in bootblock or
verstage. Avoid it by selecting the option to ignore invalid postinit.

Upstream-Status: Pending
Change-Id: Idf5e481faf7aa21a8cd934957c5e676de1ee0638
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Log CBnT status if CBnT is enabled.

Upstream-Status: Pending
Change-Id: I3ef5cc73ac6440bf76457952f9352dd446be8082
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Enable CBnT on NovaCustom TGL platforms with sample manifests, which are
replaced by BtG provisioning scripts.

Upstream-Status: Pending
Change-Id: I0f5115a752d899b55fe84b58b669bd3841a79588
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Configure the necessary FSP parameters for TXT on Alder Lake

Upstream-Status: Pending
Change-Id: If301749bdc6ddb12129b7c86f1926c8ad4d07a62
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Enable CBnT with sample manifests on NovaCustom ADL platforms. The
sample manifests are replaced with their actual contents by BtG
provisioning scripts.

Upstream-Status: Pending
Change-Id: Ifa79f037f86716aa1275e27bdda0db5f1c9b5ec4
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
CBnT requires a larger ME region, so use an FMAP with enlarged ME and
shrunken BIOS region with RW-A support only.

Upstream-Status: Pending
Change-Id: Ib88f34c7479f41792b13dc6df6dd934e8e62488a
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
CBnT has been integrated into the default defconfig, so remove the
redundant TXT defconfig.

Upstream-Status: Pending
Change-Id: Iba0f6952781b85d3cdc2aaf9f6309be68160cff7
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Allow building from source without providing BIOS ACM at build time.

Upstream-Status: Pending
Change-Id: I249a44816e813ba7c4fc1349ba0532deee04f5b3
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
The bitfield values are: 0 for locality 3, 1 for locality 0.

Upstream-Status: Pending
Change-Id: I5ac9671d978af70a8a547e63edc2fe8ff894a371
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Allow building from source by not requiring ACMs at build time. ACMs are
added at provisioning time by the provisioning scripts.

Upstream-Status: Pending
Change-Id: Iacc3a1609b4baf051168b4a5b623802117a838d5
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Use public CBnT manifests that have been uploaded to dasharo-blobs.

Upstream-Status: Inappropriate [Dasharo downstream]
Change-Id: Ia005e36fd16c09784f38abdc3c7a5415fbe8f380
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
- Add missing comment to Clevo NS50PU board
- Don't double-check CONFIG(INTEL_TXT) if it's already guarded by the
  preprocessor

Upstream-Status: Pending
Change-Id: If5b99655357f055a1b204d1c02c220f9b6a1fc7d
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Originally km_sample was used as the BPM due to a copy-paste error.

Upstream-Status: Pending
Change-Id: Icc44520ba9da62b15ad1c45c4ed25e98de523412
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Upstream-Status: Inappropriate [Dasharo downstream]
Change-Id: I6665532a6c69622e4e8436d9e7fb689534759569
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Upstream-Status: Inappropriate [Dasharo downstream]
Change-Id: Ia3d19e1b745396bc81c5d0888a73810c784ce4a2
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
SergiiDmytruk and others added 13 commits September 15, 2025 00:58
When picking a persistent name for a network device systemd checks
ID_NET_NAME_ONBOARD, ID_NET_NAME_SLOT, ID_NET_NAME_PATH and
ID_NET_NAME_MAC udev attributes in this order and uses the first which
is present [0].  ID_NET_NAME_ONBOARD is derived (by systemd) from Type
41 records when available.

Do not publish the records to force the use of geographical/physical
persistent names in ID_NET_NAME_PATH (derived from PCIe paths).

This requirement seems to be motivated by compatibility, so considering
this a local change.

[0]: https://github.com/systemd/systemd/blob/778e95420a66ca34eb78008ccfac6153adf26310/src/shared/netif-util.c#L64

Change-Id: I61d3e7be39eea58a3c736ac97425e0721eefd31f
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
The value of 10 is outdated since smbios_onboard_device_type enumeration
was extended with 6 more types in commit f6c100f
("include/smbios.h: Update misc_slot_type and
smbios_onboard_device_type"):
 * SMBIOS_DEVICE_TYPE_WIRELESS_LAN
 * SMBIOS_DEVICE_TYPE_BLUETOOTH
 * SMBIOS_DEVICE_TYPE_WWAN
 * SMBIOS_DEVICE_TYPE_EMMC
 * SMBIOS_DEVICE_TYPE_NVME
 * SMBIOS_DEVICE_TYPE_UFS

One side-effect of this is that devices with the new types won't have
Type 41 SMBIOS records generated for them automatically.  Haven't
observed this happening, but shouldn't hurt fixing the issue since it
has been noticed.

Change-Id: Iddaff8f71d9f028cdc9af692370a46e114e47332
Upstream-Status: Pending
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
Upstream-Status: Inappropriate [Dasharo downstream]
Change-Id: I15b326d4d47b101ce31ecb4e07c5c704c51d89c2
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
ME Soft Disable is not available on this platform, therefore disable the
ME menu.

Power state after power failure is not implemented, so also hide it.

Upstream-Status: Inappropriate [Dasharo downstream]
Change-Id: I657c63bafdd1463769a8517bbd826671ab7958f9
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Required for the persistent bootsplash functionality.

Upstream-Status: Inappropriate [Dasharo downstream]
Change-Id: I4ad9ff55d4fd3e50c2aa7be63c53bd6a3b773b92
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Upstream-Status: Inappropriate [Dasharo downstream]
Change-Id: Ic5f0f43f48ae7bd13f42d44328ec18eba3194144
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Upstream-Status: Pending
Change-Id: Idb9065444f8da2b7e2c70f6f9cc4ed2c9362f6af
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Upstream-Status: Inappropriate [custom configs]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Upstream-Status: Inappropriate [custom configs]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Upstream-Status: Inappropriate [custom config]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Upstream-Status: Inappropriate [custom configs]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Upstream-Status: Inappropriate [custom config]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Upstream-Status: Inappropriate [Dasharo downstream]
Change-Id: I349f3dbaccd8d4aefc0adaec1274770f278eff24
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
@BeataZdunczyk

Copy link
Copy Markdown
Member

@mkopec We have two PRs regarding M900: this one and #402. Can we close one PR and integrate it into the other?

filipleple and others added 12 commits September 25, 2025 12:20
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Filip Lewiński <filip.lewinski@3mdeb.com>
This fixes EFI runtime services crashing when called by a FreeBSD as it
enforces aligned accesses.

Change-Id: I55b9965de237dae0f212d46c10fafd5d53d4666e
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
Update VBT to one extracted from newer Lenovo UEFI, version FWKTBFA.

The newer VBT has build number 1037 and supports Kaby Lake graphics,
while the old VBT with build number 1000 only supports Skylake.

The old VBT starts with $VBT_SKYLAKE while the new one starts with
$VBT_KABYLAKE.

TEST=Insert CPU with integrated HD 630 graphics (i3-7100) and check if
all video outputs work in firmware.

Upstream-Status: Backport
Change-Id: I5e108d4ad8bf0663f3e1fa32145e40ea9babeac5
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/84873
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
Reviewed-by: Matt DeVillier <matt.devillier@gmail.com>
Reviewed-by: Alicja Michalska <ahplka19@gmail.com>
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
It's been observed that at least on some M700 Tiny boards, CLKREQ
signals aren't wired as per the schematic. Disable them and configure
their pads as per original Lenovo UEFI.

This change fixes Wi-Fi card detection on M700 Tiny.

TEST=Boot M700 Tiny with AX200 card in Wi-Fi card slot and boot to
Windows 10. Check that Wi-Fi works correctly.

Upstream-Status: Backport
Change-Id: I5b26937cd4a6937b516304fefad9186b9e1cdc76
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/84813
Reviewed-by: Martin L Roth <gaumless@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Upstream-Status: Backport
Change-Id: I259f88a3ceb9aee54016bb88a7d4de2b58dffa83
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/87048
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Matt DeVillier <matt.devillier@gmail.com>
Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
The power LED may be disabled by GPP_D1. The pin is PWM capable, so
configure it in PWM mode with a frequency of 0.5Hz, duty cycle of 50%
when entering sleep.

The result is that the power LED toggles on/off every second.

TEST=Boot to Windows 10, enter S3, and wake. The power LED will blink
when system is asleep and glow continuously when awake.

Upstream-Status: Backport
Change-Id: I121e0ef3e47aec1cacdace3f2af47a3fdacf69cf
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/84860
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Matt DeVillier <matt.devillier@gmail.com>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Add Vboot configuration (Kconfig and FMDs for RO only and RW_A layouts).

TEST=Build with UEFIPayload and boot to payload. Verify in cbmem logs
that verstage has executed and selected Slot A in the case of RW_A
layout.

Upstream-Status: Backport
Change-Id: Ide2a3a4b59be5b27bf7315690520c9392a98d044
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Allow user to select it via menuconfig if they want it.

Upstream-Status: Pending
Change-Id: Iefe8ec161c1266af3568695f06b5bf500f94f4b1
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Fixes compilation which failed due to missing function definitions for
e.g. recovery switch.

Upstream-Status: Pending
Change-Id: I11b6da0587b3e7f37ed78bb9d5da2bfce7cca9e9
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Upstream-Status: Inappropriate [Dasharo downstream]
Change-Id: I1cd6916191ddf45cf5f9c5a82c965e476595c11c
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Upstream-Status: Inappropriate [Dasharo downstream]
Change-Id: I530e6e2a46e24e485a39a5cd870f07f47e1216d4
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Change-Id: I3795b154349ddcafd501ed861f2a40ccafc1a74c
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
@mkopec

mkopec commented Oct 2, 2025

Copy link
Copy Markdown
Member Author

some observations:

  • Vboot VBNV CMOS offset is incorrect
  • M900 blobs don't work on an M700

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.