Bug #267

Lenovo T60: Hang when decompression payload with resource allocator v4

Added by Paul Menzel about 1 month ago. Updated 14 days ago.

Status:NewStart date:06/28/2020
Priority:NormalDue date:
Assignee:-% Done:

0%

Category:-
Target version:-

Description

With coreboot 4.12-406-g87e36c442e and normal bootblock, coreboot hangs when decompressing the – still fallback – SeaBIOS payload. The exact same payload was decompressed successfully in #266.

coreboot-4.12-406-g87e36c442e Mon Jun  1 19:06:28 UTC 2020 bootblock starting (log level: 8)...
[…]
CBFS: Locating 'fallback/payload'
CBFS: Found @ offset 4d3c0 size 11109
Checking segment from ROM address 0xffe4d5f8
Checking segment from ROM address 0xffe4d614
Loading segment from ROM address 0xffe4d5f8
  code (compression=1)
  New segment dstaddr 0x000dfac0 memsize 0x20540 srcaddr 0xffe4d630 filesize 0x110d1
Loading Segment: addr: 0x000dfac0 memsz: 0x0000000000020540 filesz: 0x00000000000110d1
using LZMA

Please find the serial logs, and coreboot.rom attached.

coreboot_console-4.12-406-g87e36c442e-serial-spew-hang-in-using-lzma.txt Magnifier - Serial console output with log level SPEW (35.7 KB) Paul Menzel, 06/28/2020 09:23 AM

coreboot.rom.gz - Compressed coreboot image (469 KB) Paul Menzel, 06/28/2020 09:32 AM

coreboot_console-4.12-406-g87e36c442e-with-resource-allocator-v3-serial-spew-hang-in-using-lzma.txt Magnifier - Serial console output with resource allocator v3 (28.9 KB) Paul Menzel, 07/19/2020 10:22 AM

coreboot_console-4.12-1535-g4aac953665-serial-debug-memtest86+-1gib-dimm.txt Magnifier - Serial console output with resource allocator v3 and just 1 GiB DIMM (31.1 KB) Paul Menzel, 07/19/2020 08:27 PM

coreboot_console-4.12-1535-g4aac953665-serial-debug-memtest86+-1gib-and-2gib-dimm.txt Magnifier - Serial console output with resource allocator v3 and just 1 GiB + 2 GiB DIMMs (31.3 KB) Paul Menzel, 07/19/2020 08:34 PM

History

#1 Updated by Paul Menzel about 1 month ago

#2 Updated by Paul Menzel 16 days ago

Commit nb/intel/i945: Switch back from V4 to V3 resource allocator to fix hangs reverts devices with northbridge Intel 945 back to version 3 of the resource allocator.

#3 Updated by Paul Menzel 16 days ago

The same happens with the SeaBIOS payload.

CBFS: Found @ offset 4cdc0 size 1124b
Checking segment from ROM address 0xffe4cff8
Checking segment from ROM address 0xffe4d014
Loading segment from ROM address 0xffe4cff8
  code (compression=1)
  New segment dstaddr 0x000df9e0 memsize 0x20620 srcaddr 0xffe4d030 filesize 0x11213
Loading Segment: addr: 0x000df9e0 memsz: 0x0000000000020620 filesz: 0x0000000000011213
using LZMA
build/util/cbfstool/cbfstool build/coreboot.rom print -r COREBOOT
FMAP REGION: COREBOOT
Name                           Offset     Type           Size   Comp
cbfs master header             0x0        cbfs header        32 none
fallback/romstage              0x80       stage           49212 none
cpu_microcode_blob.bin         0xc140     microcode       86016 none
fallback/ramstage              0x211c0    stage           80126 none
config                         0x34b00    raw               338 none
revision                       0x34cc0    raw               675 none
fallback/dsdt.aml              0x34fc0    raw             12600 none
cmos_layout.bin                0x38140    cmos_layout      1664 none
pci1002,7149.rom               0x38800    optionrom       64512 none
fallback/postcar               0x48480    stage           18676 none
(empty)                        0x4cdc0    null          1748952 none
bootblock                      0x1f7dc0   bootblock       32768 none

#4 Updated by Paul Menzel 15 days ago

Reverting commit 7cf96aeeb7 (northbridge/intel/i945: Mark legacy VGA memory as reserved) 1 seems to also help to get the payload executed. GRUB hangs due to some EHCI issue, which the commit in question fixed. SeaBIOS didn’t show issues.

I guess commit 7cf96aeeb7 (northbridge/intel/i945: Mark legacy VGA memory as reserved) 1 is tailored for devices with integrated Intel graphics devices. Devices with a dedicated/external graphics device need to be handled differently?

#5 Updated by Paul Menzel 15 days ago

  • Subject changed from Lenovo T60p: Hang when decompression payload to Lenovo T60p: Hang when decompression payload with resource allocator v4

#6 Updated by Paul Menzel 15 days ago

Paul Menzel wrote:

Reverting commit 7cf96aeeb7 (northbridge/intel/i945: Mark legacy VGA memory as reserved) seems to also help to get the payload executed. GRUB hangs due to some EHCI issue, which the commit in question fixed. SeaBIOS didn’t show issues.

I guess commit 7cf96aeeb7 (northbridge/intel/i945: Mark legacy VGA memory as reserved) is tailored for devices with integrated Intel graphics devices. Devices with a dedicated/external graphics device need to be handled differently?

Scratch that, I now got hangs too with just commit 7cf96aeeb7 (northbridge/intel/i945: Mark legacy VGA memory as reserved) reverted.

#7 Updated by Paul Menzel 15 days ago

  • Subject changed from Lenovo T60p: Hang when decompression payload with resource allocator v4 to Lenovo T60: Hang when decompression payload with resource allocator v4

#9 Updated by Paul Menzel 15 days ago

It also got hangs sometimes with resource allocator v3. Very confusing. Maybe I need to save the CBFS output too. I am currently at a loss.

Memtest86+ payload successfully run one pass on the 2 GiB and 1 GiB (separately, as it failed to boot with both). After putting both DIMMs back in, the system booted.

Here are the three commits on top of origin/master, which produced an image not booting and hanging when SeaBIOS executes the VGA Option ROM. Using just either the 1 GiB or 2 GiB module, the system booted (that log is attached).

4aac953665 (HEAD -> master) Revert "northbridge/intel/i945: Mark legacy VGA memory as reserved"
1866f5cb9d device: Default to V3 resource allocator
e2ef6a71ec device/cardbus: Add debug statements
75db8c8ea8 (origin/master, origin/HEAD) soc/intel/common/gpio_defs: Fix coding style

#10 Updated by Paul Menzel 15 days ago

commit e2ef6a71ec0fbe8d5c9b5cc78549f68a792ab992
Author: Paul Menzel <pmenzel@molgen.mpg.de>
Date:   Sun Jul 19 20:22:25 2020 +0200

    device/cardbus: Add debug statements

    Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de>

diff --git a/src/device/cardbus_device.c b/src/device/cardbus_device.c
index cbe0c724fb..34b43e5f3c 100644
--- a/src/device/cardbus_device.c
+++ b/src/device/cardbus_device.c
@@ -78,6 +78,7 @@ void cardbus_read_resources(struct device *dev)

        pci_get_resource(dev, PCI_BASE_ADDRESS_0);

+       printk(BIOS_DEBUG, "read_res: after pci_get_resource: bridge_ctrl %04x\n", dev->link_list->bridge_ctrl);
        compact_resources(dev);

        /* See which bridge I/O resources are implemented. */
@@ -132,6 +133,7 @@ void cardbus_read_resources(struct device *dev)
        cardbus_size_bridge_resource(dev, PCI_CB_MEMORY_BASE_1);

        compact_resources(dev);
+       printk(BIOS_DEBUG, "read_res: after compact_resources: bridge_ctrl %04x\n", dev->link_list->bridge_ctrl);
 }

 void cardbus_enable_resources(struct device *dev)
@@ -148,6 +150,7 @@ void cardbus_enable_resources(struct device *dev)
        ctrl |= (PCI_CB_BRIDGE_CTL_PARITY | PCI_CB_BRIDGE_CTL_SERR);
        printk(BIOS_DEBUG, "%s bridge ctrl <- %04x\n", dev_path(dev), ctrl);
        pci_write_config16(dev, PCI_CB_BRIDGE_CONTROL, ctrl);
+       printk(BIOS_DEBUG, "bridge_ctrl %04x\n", dev->link_list->bridge_ctrl);

        pci_dev_enable_resources(dev);
 }

#11 Updated by Paul Menzel 14 days ago

Memtest86+ also passed the 3 GiB twice, but hung after 2:20 hours – maybe a thermal issue, or some problem in Memtest86+.

Anyway, RAM seems working.

Also available in: Atom PDF