Issue #499 has been updated by Michał Żygowski.
Throwing my 2 cents here after finding out TOP_DOWN is the culprit of my problems today:
Seems to affect more than Haswell, as I can reproduce on ADL and RDL w/ UefiPayloadPkg or UPL.
Yes, it most likely affects almost everything which uses EDKII.
Sean Rhodes wrote in #note-20:
Seems like the root cause is CB:76127, apparently, edk2 thinks the DSDT has already been added so it says Access Denied, so revert CB:76143 and CB:76127 and it'll boot with TOP_DOWN=y.
TOP_DOWN does break some things in edk2 that don't prevent it booting, first is BlSupportDxe:
Failed to add memory space :0xFEC00000 0x1000
That's something different AFAIK. EDKII cannot reassign the IOAPIC (FEC00000) memory (which is already marked as MMIO in the memory map/GCD, or as reserved in older EDKII revisions) to MMIO memory type. Not related to TOP_DOWN. It doesn't fail for HPET memory because there is a hole, apparently:
``` 11. 00000000FEC00000 - 00000000FECFFFFF [02] buildhob: base = 0xFEC00000, size = 0x100000, type = 0x1 12. 00000000FED40000 - 00000000FED6FFFF [02] buildhob: base = 0xFED40000, size = 0x30000, type = 0x1 ``` `ReserveResourceInGcd (TRUE, EfiGcdMemoryTypeMemoryMappedIo, 0xFEC00000, SIZE_4KB, 0, ImageHandle); // IOAPIC` even tries to assign a different range. Anyways such attempts will always fail if the given range is already in GCD.
What I noticed today is that TOP_DOWN breaks the IGD display in EDKII. For some reason, PciIo Protocol is not installed on the BDF 2.0 (IGD) handle, and thus the drivers cannot connect the controllers/drivers to it properly. What I found quite weird was the I/O space assigned to IGD: ffc0 - ffff (makes sense for TOP_DOWN). Maybe it is some problem for EDKII?
---------------------------------------- Bug #499: coreboot will not boot edk2 on Lenovo T440p with CONFIG_RESOURCE_ALLOCATION_TOP_DOWN enabled, cannot disable this setting during build https://ticket.coreboot.org/issues/499#change-1584
* Author: Oberon 4071 * Status: New * Priority: Normal * Assignee: Nico Huber * Start date: 2023-06-29 * Affected versions: 4.21 * Needs backport to: none * Related links: https://review.coreboot.org/c/coreboot/+/76198 https://review.coreboot.org/c/coreboot/+/76199 * Affected hardware: lenovo/t440p ---------------------------------------- coreboot revision in git: feb27dcbf3fc685b070c950a16e8adec958bc1ce coreboot revision (git describe --tags): 4.20-520-gfeb27dcbf3 Tested payloads: edk2 from MrChromebox revision uefipayload_202304 and uefipayload_202306
coreboot will not boot my Lenovo ThinkPad T440p with CONFIG_RESOURCE_ALLOCATION_TOP_DOWN enabled, when using the edk2 payload (MrChromebox version, either uefipayload_202304 or uefipayload_202306). The display sometimes turns on, indicating that some of the hardware initialization was successful, but the payload will not start.
I tried to disable CONFIG_RESOURCE_ALLOCATION_TOP_DOWN in .config, but the build process insists on leaving this config enabled. This seems to be caused by the RESOURCE_ALLOCATION_TOP_DOWN setting changed to "def_bool y" in src/device/Kconfig in commit 5226301765ded70e0ef640e5252bbaca8cd14451 (allocator_v4: Treat above 4G resources more natively). The make target for building coreboot seems to automatically rerun olddefconfig, causing this setting to always remain enabled no matter what was previously saved in the .config file.
Modifying src/device/Kconfig to change RESOURCE_ALLOCATION_TOP_DOWN to "def_bool n" appears to fix the problem on my machine.
I have attached my .config file (with CONFIG_RESOURCE_ALLOCATION_TOP_DOWN enabled to reproduce the problem).
---Files-------------------------------- .config (20.7 KB) console.log (128 KB) cbmem.txt (151 KB) cbmem_seabios_with_resource_allocation_top_down.txt (41.1 KB) dmesg_change_76199.txt (56.7 KB) cbmem_change_76199.txt (120 KB) cbmem.txt (116 KB) cbmem_top_down_n.txt (163 KB) dmesg_top_down_n.txt (58.2 KB) dmesg.txt (58.3 KB) cbmem.txt (166 KB)