Skip to content

WIP: configs/config.lenovo_m920q: new platform - #676

Draft
macpijan wants to merge 838 commits into
dasharofrom
dasharo_lenovo_920q
Draft

macpijan wants to merge 838 commits into
dasharofrom
dasharo_lenovo_920q

Conversation

@macpijan

Copy link
Copy Markdown
Contributor

Notes:

  • blobs are extracted from original Lenovo firmware and are not uploaded anywhere (yet?); ME image would need to be reconstructed first based on a clean one
  • [EMERG] ASSERTION ERROR: file 'src/soc/intel/cannonlake/pmutil.c', line 157

Upstream-Status: Inappropriate [Dasharo downstream]

Change-Id: I1658ef9c430ab21b2567538442744f49745defa1

SergiiDmytruk and others added 30 commits March 26, 2025 20:19
Change-Id: Ie5a7b3129d4944da3f0d77894be03d9762c72c52
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
cf5fc23 didn't update this file leading to code like this (in this
particular order of lines):

  #include <drivers/efi/efivars.h>
  #include <efi/efi_datatype.h>

Failing on `#define EFIAPI` in <efi/efi_datatype.h> because definitions
don't agree with each other.

Change-Id: I0437dca36ef10f7b8f5842bcf5d0964a685b0fad
Upstream-Status: Pending
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
9c8debf added functions which don't compile for PC Engines due
to missing definitions.  It's also not clear whether this platform is
capable of providing the functionality.

Change-Id: I22bb833cf95f81d30650fe7721d44f669209ca2d
Upstream-Status: Pending
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
Make sure NULL is defined by <types.h> before including EDK2 headers.
Otherwise, Base.h defines it causing <types.h> to fail on redefinition.

Change-Id: Ic0ca947fabc7de7641576c24a0de803dbe2d921f
Upstream-Status: Pending
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
Upstream-Status: Inappropriate [Dasharo downstream]
Change-Id: I8441fc95b586c61c11542387e5fd793c1bc11f85
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
Skip redundant logic in ACPI and trust what the EC says.

Change-Id: Ic8f2010298319e0af09ddd40f17913ce47655374
Upstream-Status: Pending
Signed-off-by: Wiktor Mowinski <wiktor.mowinski@3mdeb.com>
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Change-Id: I3a91aa7ada7c85bd9e19037ee9961a1795f73345
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Change-Id: I45c2d22326c5b1921892cfee6b5026b4ae52594f
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
… fast boot opts

Change-Id: I50eef5aa82bf94f2e5c8d2c5fd9f01004dbc9c16
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Change-Id: Ic0ddea1b55d975487b728ecbf6bf9a69bacb53b9
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Change-Id: Ic8763a4176021dbbc3c138a09f78c543b976cc7f
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Fixes the following error message:
"CNVi WiFi is enabled without CNVi being enabled"

Upstream-Status: Inappropriate (baseboard still in review)

Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
iGPU variant has a lower Psys PMAX value of 99W per schematic. Program
it correctly, to ensure power reporting scale is correct and Psys power
limits work as expected.

Upstream-Status: Inappropriate (board still in review)

Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
The device is only present on the dGPU models, and is already enabled in
the dGPU overridetree. Remove from the baseboard devicetre, to fix
yellow bang in Windows 11 device manager.

Upstream-Status: Inappropriate (board still in review)

Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Don't parse memory controllers that are not present or disabled.
Can save a little boot time. Verified by parsing the raw memory hob
that FSP correctly marks the controllers as not present with all
underlying channels and dimms.

Change-Id: I46d6ed1a50ecd914729235303b5d6a4425530613
Upstream-Status: Pending
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
The configs had the debugging enabled by default which made the
boot time unnecessarily longer.

Also update the FSP paths to use publicly available components.

Change-Id: I65f26bd37ca6abd79372ce0cd0d678fb1d535dc8
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Change-Id: I2167f2e2897541a28c68fdc2a52890bd742ef687
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Change-Id: I03091452bb21f267ed6b40933b3f5b890bec2663
Upstream-Status: Pending
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Change-Id: Ifcf0ba009bad56f2153145ba9f7b25ca51a5596b
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Change-Id: I8436050c63ca676a4b495546bd3da126c2711561
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Upstream-Status: Inappropriate [Dasharo downstream]
Change-Id: I840b6b75b69057d6085f7db979315de558fd7ee1
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
FV of DasharoPayloadPkg was too small after 9c15a9b adding
`-z common-page-size=0x1000` to linker's invocation.

Change-Id: Ic4a7e5d4b019c5ddba32f5f09e5f15b29c1f0f84
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
IDs taken from ADL-N and TWL EDS Vol 1 Rev 2.5 doc #645548.

Upstream-Status: https://review.coreboot.org/c/coreboot/+/86750
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Serial ports have been swapped on newer revision of VP2430.
There is no need to swap the I/O ports anymore in coreboot.

Change-Id: If197be757122e483beaee3a637afa03db83fc4fa
Upstream-Status: Pending
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Change-Id: I5a69a5ee4dbe8792504f61d83eb481655b39b866
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
…ating UPDs"

This reverts commit 491afc3.

Reason for revert: Starting with FSP MR6, the 'PchPcieClockGating' and
'PchPciePowerGating' UPDs are also available on ADL-N.

Upstream-Status: Pending
Change-Id: I0134737cfb956163ea6e722cd0a3f39dffbaa13b
Signed-off-by: Filip Brozovic <fbrozovic@gmail.com>
The newest IoT FSPs have the PchPciePowerGating and PchPcieClockGating
UPDs present. There is no need to guard it against custom FSP for one
platform.

Change-Id: I0591c303cab4e208fe84bab14eaea8bd5f896748
Upstream-Status: Pending
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Change-Id: Iebcaeeea0b9de17f488c8c39664afbac294501c2
Upstream-Status: Pending
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Change-Id: I111a5ddfe33aa509ea19a507d19ddf604a822699
Upstream-Status: Inappropriate [Dasharo downstream]
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
mkopec and others added 28 commits July 21, 2025 17:13
Upstream-Status: Pending
Change-Id: Ic358e9750152881f4b965b94fb1103411f0df30c
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Make it depend on DASHARO_FIRMWARE_UPDATE_MODE being enabled because
EDK2_FUM_AUTO_IPXE_BOOT adjusts the way FUM is handled by EDK.

Upstream-Status: Inappropriate [Dasharo downstream]
Change-Id: I0bcd654440b61c567059a8a47033808dcc8b3cbb
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
This fixes the following Perl error (which prevents pre-commit hook from
succeeding):

    Possible precedence problem between ! and pattern match (m//)

`!$filename =~ /~$/` was apparently interpreted as
`(!$filename) =~ /~$/`.  Fix that by wrapping `=~` expression in
parenthesis.

Upstream-Status: Pending
Change-Id: If63a4b6981e5b562a9af7f2f8ac64947fad7f7b0
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
enable_capsule_smi() is responsible for enabling the access by sending a
command to SMMSTORE, but there seems to be something related to Clevo
laptops that makes SMIs prone to be lost and unhandled.

The implementation is modeled after EDK2 code which uses SMMSTORE in
tianocore/edk2@034de59
with a difference that up to 11 attempts in total are made and the delay
is not done via a CPU loop.

Upstream-Status: Pending
Change-Id: I95d61174806988137869d37335fa4f4f4a052348
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
For better logs and more reliable SMIs.

Upstream-Status: Inappropriate [Dasharo downstream]
Change-Id: I3da3b7640ad42451fad1271d95a71695807b07f9
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
When RW decode window was added without extended MMAP window,
xlate_region_device_ro_init() was passed an array with uninitialized
second element (corresponds to the extended window) because
real_dev_windows[] was filled by indices rather than by adding the next
element in the next free slot.

Clearly separate storage of windows from array passed to
xlate_region_device_ro_init() and fill that array dynamically with
copies of windows (can't discard originals at least for MMAP windows as
they are used by other functions, preserving RW window for consistency).

This must be squashed with the previous changes to this file on the next
rebase.

Upstream-Status: Pending
Change-Id: Ib08c01d3f13dafec76ea6df20ac30cf505e16c4e
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
Commands and parameters are passed as raw numbers, but that's the point,
we want to test it with something more than normal SMMSTORE interface.

Upstream-Status: Pending
Change-Id: Ib3a32f0bdef038e4ccc2fb2bb8a6c98ae6d0cfbd
Signed-off-by: Krystian Hebel <krystian.hebel@3mdeb.com>
Some variables can't be described using any of the predefined types.
Allow passing their values from a file.

Upstream-Status: Pending
Change-Id: Idb03e8dbdbdd446cc16cae584640cf1641ecc2c1
Signed-off-by: Krystian Hebel <krystian.hebel@3mdeb.com>
It is useful for more than event log management.

Upstream-Status: Pending
Change-Id: I779f948115af786ecda873cd01c9ef1506252c7d
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
To make it accessible outside of logging.c file.

Upstream-Status: Pending
Change-Id: I3bd7fb126fb197c88bec933a88ded59232d520a1
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
Extract the definition from src/cpu/intel/fit/fit_table.c, change first
field to a union and add defines for types.  This provides a basis for
parsing FIT data from coreboot.

Upstream-Status: Pending
Change-Id: If857e21864fd8be2f15a35c154e1f22802fafddd
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
The event seems to be specific to TPM2, so not adding to TPM1 log.

Upstream-Status: Pending
Change-Id: I99b9c23a5089b039b01090eec08a808346f7c389
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
BootGuard/CbnT can optionally measure data into PCRs before passing
control to BIOS which must be taken into account by coreboot for
Measured Boot to work correctly.  This is done by constructing the data
the same way BootGuard does, hashing it and creating an entry in the
event log without extending the corresponding PCR.

BootGuard measurements must precede all coreboot measurements, so the
new code is hooked to tspi_init_crtm() which is responsible for event
log initialization and performing initial measurements (starting with
measuring FMAP).

This also includes 2 other kinds of entries:
 - creation of Startup Locality event on log initialization when startup
   locality of the TPM is locality 3
 - optionally capping PCRs with a separator after a TPM error (the case
   of capping unsupported but active PCR bank is not implemented as
   coreboot hard-codes PCR it works with)

Upstream-Status: Pending
Change-Id: Ib56cadac85d9ef1d747ecf3cfc2976dc6785262a
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
BootGuard/CbnT can optionally measure data into PCRs before passing
control to BIOS which must be taken into account by coreboot for
Measured Boot to work correctly.  This is done by constructing the data
the same way BootGuard does, hashing it and creating an entry in the
event log without extending the corresponding PCR.

Extending PCR-7 is optional and breaks BitLocker on Windows 10, so may
not be utilized.  However, it doesn't require large amount of code and
might as well be implemented along with PCR-0 since both use the same
data structures.

Upstream-Status: Pending
Change-Id: Ic1bfb016600f9f00b8f2fa1965aedfa99647a8e0
Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com>
That's the minimum log size for client platforms per "TCG PC Client
Platform Firmware Profile Specification" [0].

[0]: https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification/

Upstream-Status: Pending
Change-Id: Ifed85a91d5e2cf28fcc40262710e0ec688479a62
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>
Calling stopwatch_duration_msecs causes the stopwatch to stop, which
means the timeout would never occur. Use stopwatch_expired instead.

Upstream-Status: Pending
Change-Id: I312a8c49cf8ac900b4474d18b43576ad9ead036a
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Upstream-Status: Pending
Change-Id: I4d9212c2bd845063df145544d675fb735286bc3c
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Change-Id: I3795b154349ddcafd501ed861f2a40ccafc1a74c
Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
Notes:
- blobs are extracted from original Lenovo firmware and are not uploaded
  anywhere (yet?); ME image would need to be reconstructed first based
  on a clean one
- [EMERG]  ASSERTION ERROR: file 'src/soc/intel/cannonlake/pmutil.c', line 157

Upstream-Status: Inappropriate [Dasharo downstream]

Change-Id: I1658ef9c430ab21b2567538442744f49745defa1
Signed-off-by: Maciej Pijanowski <maciej.pijanowski@3mdeb.com>
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.