Bug 203119

Summary: x86/reboot: Acer TravelMate X514-51T hangs up in the booting process of reboot
Product: Platform Specific/Hardware Reporter: jian-hong
Component: x86-64Assignee: platform_x86_64 (platform_x86_64)
Status: RESOLVED CODE_FIX    
Severity: normal    
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 5.1.0-rc3 Subsystem:
Regression: No Bisected commit-id:
Attachments: The journal log for reboot
dmesg for showing the ACPI related variables/flags

Description jian-hong 2019-04-01 06:33:59 UTC
Created attachment 282081 [details]
The journal log for reboot

We have an Acer TravelMate X514-51T laptop equipped with Intel i5-8265U CPU, which boots failed in rebooting process.  Tested the reboot with Linux kernel 5.1.0-rc3 and examine the journal log:

Apr 01 13:42:13 endless systemd[1]: Reached target Shutdown.
Apr 01 13:42:13 endless systemd[1]: Starting Save the current clock...
Apr 01 13:42:13 endless kernel: printk: systemd-readahe: 259 output lines suppressed due to ratelimiting
Apr 01 13:42:13 endless systemd[1310]: fake-hwclock.service: Executing: /sbin/fake-hwclock save
Apr 01 13:42:13 endless systemd[1]: fake-hwclock.service: Succeeded.
Apr 01 13:42:13 endless systemd[1]: Started Save the current clock.
Apr 01 13:42:13 endless systemd[1]: Reached target Final Step.
Apr 01 13:42:13 endless systemd[1]: systemd-reboot.service: Succeeded.
Apr 01 13:42:13 endless systemd[1]: Started Reboot.
Apr 01 13:42:13 endless systemd[1]: Reached target Reboot.
Apr 01 13:42:13 endless systemd[1]: Shutting down.
Apr 01 13:42:13 endless kernel: printk: systemd-shutdow: 1245 output lines suppressed due to ratelimiting
Apr 01 13:42:13 endless systemd-shutdown[1]: Found cgroup2 on /sys/fs/cgroup/unified, unified hierarchy for systemd controller
Apr 01 13:42:13 endless systemd-shutdown[1]: Successfully forked off '(sd-sync)' as PID 1315.
Apr 01 13:42:13 endless systemd-shutdown[1]: Syncing filesystems and block devices.
Apr 01 13:42:13 endless systemd-shutdown[1]: Sending SIGTERM to remaining processes...
Apr 01 13:42:13 endless systemd-journald[352]: Journal stopped

The system did shutdown and tried to boot, but the BIOS logo did not show again, nor GRUB and system hung up.  Besides, the screen kept black.

PS: Secure Boot is enabled in BIOS.  If the Secure BOOT is disabled, then system does not hit this issue with this configuration.
Comment 1 jian-hong 2019-04-01 06:36:10 UTC
We found if the boot command is appended with "reboot=efi", then system can reboot correctly.
Comment 2 jian-hong 2019-04-01 07:06:12 UTC
Also tried with different kernel config and builds, this issue may also happen intermittently with disabled Secure Boot.  However, we observe that using the EFI reboot method reliably avoids the issue in all cases.
Comment 3 jian-hong 2019-04-18 09:24:43 UTC
Created attachment 282381 [details]
dmesg for showing the ACPI related variables/flags

To clarify the ACPI related variables/flags mentioned in the mail [1], I added some debug messages:

diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index 725624b6c0c0..ea3a225f07d4 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -479,6 +479,10 @@ static int __init reboot_init(void)
         */
        rv = dmi_check_system(reboot_dmi_table);
 
+       pr_info("%s: efi_reboot_required() is %s, !efi_runtime_disabled() is %s\n",
+               __func__,
+               efi_reboot_required() ? "true":"false",
+               !efi_runtime_disabled() ? "true":"false");
        if (!rv && efi_reboot_required() && !efi_runtime_disabled())
                reboot_type = BOOT_EFI;
 
diff --git a/arch/x86/platform/efi/quirks.c b/arch/x86/platform/efi/quirks.c
index a25a9fd987a9..53486c6b69ad 100644
--- a/arch/x86/platform/efi/quirks.c
+++ b/arch/x86/platform/efi/quirks.c
@@ -590,6 +590,8 @@ void __init efi_apply_memmap_quirks(void)
  */
 bool efi_reboot_required(void)
 {
+       pr_info("%s: !acpi_gbl_reduced_hardware is %s\n",
+               __func__, !acpi_gbl_reduced_hardware ? "true":"false");
        if (!acpi_gbl_reduced_hardware)
                return false;
 
diff --git a/drivers/acpi/acpica/tbfadt.c b/drivers/acpi/acpica/tbfadt.c
index 0041bfba9abc..a76a9fde020c 100644
--- a/drivers/acpi/acpica/tbfadt.c
+++ b/drivers/acpi/acpica/tbfadt.c
@@ -382,6 +382,8 @@ void acpi_tb_create_local_fadt(struct acpi_table_header *table, u32 length)
        if (acpi_gbl_FADT.flags & ACPI_FADT_HW_REDUCED) {
                acpi_gbl_reduced_hardware = TRUE;
        }
+       pr_info("%s: acpi_gbl_reduced_hardware is %s\n",
+               __func__, acpi_gbl_reduced_hardware == TRUE ? "true":"false");
 
        /* Convert the local copy of the FADT to the common internal format */

Here are the shown message:

dmesg | grep -E "(reboot_init|efi_reboot_required|acpi_tb_create_local_fadt)"
[    0.014741] acpi_tb_create_local_fadt: acpi_gbl_reduced_hardware is false
[    0.191983] efi: efi_reboot_required: !acpi_gbl_reduced_hardware is true
[    0.191983] reboot: reboot_init: efi_reboot_required() is false, !efi_runtime_disabled() is true
[    0.191983] efi: efi_reboot_required: !acpi_gbl_reduced_hardware is true

It is same as the mail [1] mentioned.

[1]: https://lkml.org/lkml/2019/4/17/61
Comment 4 jian-hong 2020-04-14 06:39:11 UTC
Is solved by commit 0082517fa4bc ("x86/reboot, efi: Use EFI reboot for Acer TravelMate X514-51T").

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/x86/kernel/reboot.c?id=0082517fa4bce073e7cf542633439f26538a14cc