Project

General

Profile

Actions

Bug #412

open

x230 reboots on suspend

Added by Carson A. over 2 years ago. Updated about 1 year ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
-
Target version:
Start date:
09/02/2022
Due date:
% Done:

100%

Estimated time:
Affected versions:
Needs backport to:
Affected hardware:
x230
Affected OS:
windows/arch linux

Description

Very similar to issue 393 where the x230 reboots when suspended to RAM. Seems to be an issue with coreboot v4.16 & 4.17 or something is missing in the config (attached). Any insight on this would be appreciated!


Files

coreboot_config.txt (18.8 KB) coreboot_config.txt My coreboot config file Carson A., 09/02/2022 02:25 AM
normal_boot.txt (48.1 KB) normal_boot.txt Carson A., 09/02/2022 02:06 PM
suspend_boot.txt (48 KB) suspend_boot.txt Carson A., 09/02/2022 02:06 PM
12mb_boot.txt (47.6 KB) 12mb_boot.txt Carson A., 09/02/2022 03:48 PM
cbmem.20221019200724.from_suspend.log (36.3 KB) cbmem.20221019200724.from_suspend.log Josh R, 10/20/2022 04:09 AM
cbmem.20221019195923.normal_boot.log (36.2 KB) cbmem.20221019195923.normal_boot.log Josh R, 10/20/2022 04:09 AM
dmesg_ok.txt (95.3 KB) dmesg_ok.txt dmesg of my X230t, when WakeUp works fine Pawel Radomychelski, 11/07/2023 12:56 AM
dmesg_broken.txt (93.8 KB) dmesg_broken.txt dmesg of my X230t, when it restarts on WakeUp Pawel Radomychelski, 11/07/2023 12:57 AM
.config (20.5 KB) .config Actual Coreboot config Pawel Radomychelski, 11/07/2023 12:58 AM
Actions #1

Updated by Paul Menzel over 2 years ago

Please attach the coreboot console messages from a normal boot, and from resuming from suspend to RAM.

In GNU/Linux you should be able to do it using cbmem -1, or, if available, loading the module memconsole-coreboot with sudo modprobe memconsole-coreboot, and looking at /sys/firmware/log.

Actions #3

Updated by Carson A. over 2 years ago

Paul Menzel wrote in #note-1:

Please attach the coreboot console messages from a normal boot, and from resuming from suspend to RAM.

In GNU/Linux you should be able to do it using cbmem -1, or, if available, loading the module memconsole-coreboot with sudo modprobe memconsole-coreboot, and looking at /sys/firmware/log.

Ok, I've attached the logs; one for booting normally and the other rebooting from suspend.

Actions #4

Updated by Nico Huber over 2 years ago

[ERROR]  SF size 0xc00000 does not correspond to CONFIG_ROM_SIZE 0x400000!!

CONFIG_ROM_SIZE needs to cover both chips. It's a known issue that coreboot will write the MRC cache at the wrong offset otherwise. As reading happens memory-mapped (not with manual SPI flash commands) it will use a different offset then. The cache is needed to bring DRAM up without destroying memory contents (would be bad during resume).

Actions #5

Updated by Angel Pons over 2 years ago

I concur with Nico's assessment. I imagine you changed the "ROM chip size" option to get a 4 MiB file to flash to the second flash chip (4 MiB).

Instead of doing that, https://doc.coreboot.org/mainboard/lenovo/Ivy_Bridge_series.html#splitting-the-coreboot-rom provides the commands to split a 12 MiB image into 8 MiB and 4 MiB parts. You'd want to use dd of=top.rom bs=1M if=build/coreboot.rom skip=8 to obtain a 4 MiB image.

As you've already installed coreboot, you can also flash internally with sudo flashrom -p internal --ifd -i bios -w build/coreboot.rom --noverify-all. This tells flashrom to write build/coreboot.rom to the flash chip(s) using the internal programmer, but only the "bios" region as described by the IFD of the system. The --noverify-all option tells flashrom to not verify the entire flash chip (to make sure other regions did not change), but only the written regions. This is needed when flashrom cannot read the entire flash chip, and the ME region is not readable by default.

Actions #6

Updated by Carson A. over 2 years ago

Angel Pons wrote in #note-5:

I concur with Nico's assessment. I imagine you changed the "ROM chip size" option to get a 4 MiB file to flash to the second flash chip (4 MiB).

Instead of doing that, https://doc.coreboot.org/mainboard/lenovo/Ivy_Bridge_series.html#splitting-the-coreboot-rom provides the commands to split a 12 MiB image into 8 MiB and 4 MiB parts. You'd want to use dd of=top.rom bs=1M if=build/coreboot.rom skip=8 to obtain a 4 MiB image.

As you've already installed coreboot, you can also flash internally with sudo flashrom -p internal --ifd -i bios -w build/coreboot.rom --noverify-all. This tells flashrom to write build/coreboot.rom to the flash chip(s) using the internal programmer, but only the "bios" region as described by the IFD of the system. The --noverify-all option tells flashrom to not verify the entire flash chip (to make sure other regions did not change), but only the written regions. This is needed when flashrom cannot read the entire flash chip, and the ME region is not readable by default.

Yep, that worked, suspend works now. I've been having this issue for so long but didn't know exactly why. Thanks everyone for your help!

Edit: well it worked in linux, at least. Resuming S3 in windows flashes the power and mic LEDs, indicating a fatal error. I've attached the boot log (12mb_boot.txt) in case anyone has any ideas.

Edit 2: Nevermind, I figured it out. Just had to uncheck "rerun VGA option roms on S3 resume".

Actions #7

Updated by Carson A. over 2 years ago

Actions #8

Updated by Carson A. over 2 years ago

  • % Done changed from 0 to 100

Updated by Josh R about 2 years ago

Carson A. wrote in #note-6:

Angel Pons wrote in #note-5:

I concur with Nico's assessment. I imagine you changed the "ROM chip size" option to get a 4 MiB file to flash to the second flash chip (4 MiB).

Instead of doing that, https://doc.coreboot.org/mainboard/lenovo/Ivy_Bridge_series.html#splitting-the-coreboot-rom provides the commands to split a 12 MiB image into 8 MiB and 4 MiB parts. You'd want to use dd of=top.rom bs=1M if=build/coreboot.rom skip=8 to obtain a 4 MiB image.

As you've already installed coreboot, you can also flash internally with sudo flashrom -p internal --ifd -i bios -w build/coreboot.rom --noverify-all. This tells flashrom to write build/coreboot.rom to the flash chip(s) using the internal programmer, but only the "bios" region as described by the IFD of the system. The --noverify-all option tells flashrom to not verify the entire flash chip (to make sure other regions did not change), but only the written regions. This is needed when flashrom cannot read the entire flash chip, and the ME region is not readable by default.

Yep, that worked, suspend works now. I've been having this issue for so long but didn't know exactly why. Thanks everyone for your help!

Edit: well it worked in linux, at least. Resuming S3 in windows flashes the power and mic LEDs, indicating a fatal error. I've attached the boot log (12mb_boot.txt) in case anyone has any ideas.

Edit 2: Nevermind, I figured it out. Just had to uncheck "rerun VGA option roms on S3 resume".

Can you clarify which method you used to resolve this?

I am having a similar issue with my t440p. It already has coreboot installed, but my attempt at running the sudo flashrom -p internal --ifd -i bios -w the_full_coreboot_rom.rom --noverify-all did not seem to do the trick (still "restarts" without resuming from RAM).

Note that I am using the "full" 12MB coreboot.rom (not split by 4MiB and 8MiB, as that seemed intended for the hardware flashing instructions).

coreboot version looks like 4.15.204, and flashrom version 1.2-640.

If it helps, attached cbmem -1 output with a "normal boot" followed by a later resume from suspend (that resulted in a restart).

Thanks in advance. I guess you don't realize how much you use suspend until it doesn't work anymore :)

Actions #10

Updated by Angel Pons about 2 years ago

Josh, could you please open a separate issue? Thanks.

Actions #11

Updated by Josh R about 2 years ago

Angel Pons wrote in #note-10:

Josh, could you please open a separate issue? Thanks.

Sure thing, added here: https://ticket.coreboot.org/issues/432

Updated by Pawel Radomychelski about 1 year ago

Hello guys!
I can confirm the same Problem on my ThinkPad X230t.
The first Coreboot 4.21 release: WakeUp from Standby is working fine,
Actual coreboot release: Computer restart after waking up from Standby.

Actions

Also available in: Atom PDF