You are not logged in.
Lenovo G45/50
Some of you may already know what this is about...
Whenever I run systemctl sleep, pm-suspend, or any other command that invokes sleep, it works perfectly the first time. The laptop goes to sleep. The second time, not so lucky. I get an error from the BIOS that states:
Warning!!! Boot script table has been modified. Please contact your vendor.
I already know what the issue is, I just don't know how to fix it. The issue is caused by the BIOS, which contains BIOS S3 boot script protection . There is something in the firmware that makes sure the EFI boot file is valid. The only potential solution I found was to downgrade the BIOS to a 2014 version, but I do not know how to do that or where to get the necessary files.
Additional info can be found on these other forums:
http://askubuntu.com/questions/752092/r … f-computer
https://forums.linuxmint.com/viewtopic.php?t=212044
Are there any files in the system I can modify or alternate sleep utilities I can use? How do I fix this? It would be nice to be able to put my laptop to sleep.
Thanks in advance!
Last edited by borix134 (2016-11-09 08:04:14)
Offline
The posts you linked to explain everything. What do you expect to have here that isn't already addressed in them? You don't have the possibility to boot in legacy Bios mode? (which would probably prevent the bios to check files validity, especially if have only Linux filesystem on them). I suppose you have checked the Bios options to disable any "security" things (among other secure boot)?
To flash another firmware, you will have to find it on the web (with a serious risk of bricking your laptop) or hack/reverse engineered the official one.
Last edited by olive (2016-10-24 10:45:53)
Offline
The posts you linked to explain everything. What do you expect to have here that isn't already addressed in them? You don't have the possibility to boot in legacy Bios mode? (which would probably prevent the bios to check files validity, especially if have only Linux filesystem on them). I suppose you have checked the Bios options to disable any "security" things (among other secure boot)?
A solution. I set the bios to legacy mode, and after that options like secure boot disappeared. Even in Legacy, the issue still persists.
Offline
Hello Fellows,
I have (ed) similar situation with my Lenovo g50-45 Netbook (AMD a6 6310).
From the information I've found it's coming out to be a kernel regression bug contrary to this link:
https://bugs.launchpad.net/ubuntu/+sour … ug/1528735
I've used arch linux (systemd with/without pm-utils), slackware (14.1 / 14.2 which is System V init, pm-utils) , fedora (systemd w/wo pm-utils) with kernels above 3.16 and this situation occurred.
Now I'm using Debian Jessie 8.6 (btw systemd distro) with kernel 3.16 and everything is working perfect (suspend/resume/hibernate). But how long ...
My Bios A2CN40WW(V2.08) - Release Date: 08/21/2015 so it is the latest.
My lack of knowledge in linux area is stopping me from submitting any bug reports.
Offline
Based on the information (link included) pso gave me, I am willing to bet that installing Linux Kernel 3.16 will fix the issue.
A simple yaourt -S linux-lts316 might fix the issue, such an old kernel though
Last edited by borix134 (2016-11-08 09:45:08)
Offline
By compiling far too many kernels, I have found that this bug is caused by git commit 821d6f0359b0614792ab8e2fb93b503e25a65079. The commit disables "saving NVS regions" on newer machines; apparently the Lenovo G50-45 still needs it.
I was able to produce properly suspending kernels just by reverting the git commit:
git revert 821d6f0359b0614792ab8e2fb93b503e25a65079
the reverse commit as patch:
## boot-table-bug.patch
bb75a09cf0a4f7b1acbfe196a5f4003add82930b
drivers/acpi/sleep.c | 5 -----
1 file changed, 5 deletions(-)
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
index 54abb26b7366..65b88b039489 100644
--- a/drivers/acpi/sleep.c
+++ b/drivers/acpi/sleep.c
@@ -329,11 +329,6 @@ static struct dmi_system_id acpisleep_dmi_table[] __initdata = {
static void __init acpi_sleep_dmi_check(void)
{
- int year;
-
- if (dmi_get_date(DMI_BIOS_DATE, &year, NULL, NULL) && year >= 2012)
- acpi_nvs_nosave_s3();
-
dmi_check_system(acpisleep_dmi_table);
}
applied like so in a PKGBUILD:
patch -p1 -i "${srcdir}/boot-table-bug.patch"
I have successfully compiled kernels 3.18 and 4.9.6, so I hope this would work on any kernel version.
This is all on a Lenovo G50-45 running Arch Linux.
Offline