x86: add ASRock Q1900DC-ITX mainboard reboot quirk
Subsystems (2)
PATCH 1/1 x86: add ASRock Q1900DC-ITX mainboard reboot quirk
The ASRock Q1900DC-ITX mainboard (Baytrail-D) hangs randomly in both BIOS and UEFI mode while rebooting unless reboot=pci is used. Add a quirk to reboot via the pci method.
---
The problem is very intermittent and hard to debug, it might succeed rebooting just fine 40 times in a row - but fails half a dozen times the next day. It seems to be slightly less common in BIOS CSM mode than native UEFI (with the CSM disabled), but it does happen in either mode. Since I've started testing this patch in late january, rebooting has been 100% reliable.
Most of the time it already hangs during POST, but occassionally it might even make it through the bootloader and the kernel might even start booting, but then hangs before the mode switch. The same symptoms occur with grub-efi, gummiboot and grub-pc, just as well as (at least) kernel 3.16-3.19 and 4.0-rc6 (I haven't tried older kernels than 3.16). Upgrading to the most current mainboard firmware of the ASRock Q1900DC-ITX, version 1.20, does not improve the situation.
Searching the web seems to suggest that other Bay Trail-D mainboards might be affected as well.
The patch applies without problems against 3.19, 4.0-rc and linux-next.
arch/x86/kernel/reboot.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
arch/x86/kernel/reboot.c +10 -0
@@ -183,6 +183,16 @@ static struct dmi_system_id __initdata r }, }, +/* ASRock */ + {/* Handle problems with rebooting on ASRock Q1900DC-ITX */ + .callback = set_pci_reboot, + .ident = "ASRock Q1900DC-ITX", + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"ASRock" ), + DMI_MATCH(DMI_BOARD_NAME, "Q1900DC-ITX"), + }, + }, + /* ASUS */ { /* Handle problems with rebooting on ASUS P4S800 */ .callback = set_bios_reboot,
Signature · 1 line
2.1.4
Quoted 4 lines · Stefan Lippers-Hollmann
The ASRock Q1900DC-ITX mainboard (Baytrail-D) hangs randomly in both BIOS and UEFI mode while rebooting unless reboot=pci is used. Add a quirk to reboot via the pci method.
[...]
Ok.
Quoted 2 lines
Searching the web seems to suggest that other Bay Trail-D mainboards might be affected as well.
Is the pattern:
arch/x86/kernel/reboot.c static struct dmi_system_id __initdata r · line 192
Quoted 4 lines
arch/x86/kernel/reboot.c +4
-0+ .ident = "ASRock Q1900DC-ITX", + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"ASRock" ), + DMI_MATCH(DMI_BOARD_NAME, "Q1900DC-ITX"),
generic enough to cover all ASRock Bay Trail-D boards?
Thanks,
Ingo
Hi
Quoted 1 line · Ingo Molnar
* Stefan Lippers-Hollmann <[email protected]> wrote:
[...]
Quoted 11 lines
Quoted 2 lines
Searching the web seems to suggest that other Bay Trail-D mainboards might be affected as well.
Is the pattern:
arch/x86/kernel/reboot.c static struct dmi_system_id __initdata r · line 192
Quoted 4 lines
arch/x86/kernel/reboot.c +4
-0+ .ident = "ASRock Q1900DC-ITX", + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"ASRock" ), + DMI_MATCH(DMI_BOARD_NAME, "Q1900DC-ITX"),generic enough to cover all ASRock Bay Trail-D boards?
[...]
No, it covers only the one I can personally test and confirm to require this quirk, beyond my own ASRock Q1900DC-ITX[1], there are at least:
Celeron J1800:
- ASRock D1800B-ITX, http://www.asrock.com/mb/Intel/D1800B-ITX/
- ASRock D1800M, http://www.asrock.com/mb/Intel/D1800M/
Celeron J1900:
- ASRock Q1900B-ITX, http://www.asrock.com/mb/Intel/Q1900B-ITX/
- ASRock Q1900-ITX, http://www.asrock.com/mb/Intel/Q1900-ITX/
- ASRock Q1900TM-ITX, http://www.asrock.com/mb/Intel/Q1900TM-ITX/
- ASRock Q1900M Pro3, http://www.asrock.com/mb/Intel/Q1900M%20Pro3/
- ASRock Q1900M, http://www.asrock.com/mb/Intel/Q1900M/
Pentium J2900:
- ASRock Q2900M, http://www.asrock.com/mb/Intel/Q2900M/
- ASRock Q2900-ITX, http://www.asrock.com/mb/Intel/Q2900-ITX/
All very similar boards, but their BIOS state might differ.
However I've never had access to any of those and could only do an educated guess about their DMI identification[2]. While researching my problem on the web, it seems that Baytrail-D boards from several vendors might be affected (e.g. Gigabyte). Sometimes apparently fixed by later BIOS updates, but I can only confirm the problem and workaround for my own ASRock Q1900DC-ITX mainboard (where all published BIOS versions are affected).
Regards
Stefan Lippers-Hollmann
[1] http://www.asrock.com/mb/Intel/Q1900DC-ITX/
[2] I know that the very similar ASRock Q1900-ITX board uses
DMI_MATCH(DMI_BOARD_VENDOR, "ASRock"), DMI_MATCH(DMI_BOARD_NAME, "Q1900-ITX"),
but I don't have direct access to that board and can't check if it is also affected by this problem.
tip-bot for Stefan Lippers-Hollmann
merge bot[tip:x86/urgent] x86/reboot: Add ASRock Q1900DC-ITX mainboard reboot quirk
In reply to Stefan Lippers-Hollmannx86/reboot: Add ASRock Q1900DC-ITX mainboard reboot quirk
Commit-ID: 80313b3078fcd2ca51970880d90757f05879a193 Gitweb: http://git.kernel.org/tip/80313b3078fcd2ca51970880d90757f05879a193 Author: Stefan Lippers-Hollmann <[email protected]> AuthorDate: Mon, 30 Mar 2015 22:44:27 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Wed, 1 Apr 2015 14:08:09 +0200
x86/reboot: Add ASRock Q1900DC-ITX mainboard reboot quirk
The ASRock Q1900DC-ITX mainboard (Baytrail-D) hangs randomly in both BIOS and UEFI mode while rebooting unless reboot=pci is used. Add a quirk to reboot via the pci method.
The problem is very intermittent and hard to debug, it might succeed rebooting just fine 40 times in a row - but fails half a dozen times the next day. It seems to be slightly less common in BIOS CSM mode than native UEFI (with the CSM disabled), but it does happen in either mode. Since I've started testing this patch in late january, rebooting has been 100% reliable.
Most of the time it already hangs during POST, but occasionally it might even make it through the bootloader and the kernel might even start booting, but then hangs before the mode switch. The same symptoms occur with grub-efi, gummiboot and grub-pc, just as well as (at least) kernel 3.16-3.19 and 4.0-rc6 (I haven't tried older kernels than 3.16). Upgrading to the most current mainboard firmware of the ASRock Q1900DC-ITX, version 1.20, does not improve the situation.
( Searching the web seems to suggest that other Bay Trail-D mainboards
might be affected as well. )
--
--- arch/x86/kernel/reboot.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
arch/x86/kernel/reboot.c +10 -0
@@ -183,6 +183,16 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = { }, }, +/* ASRock */ + {/* Handle problems with rebooting on ASRock Q1900DC-ITX */ + .callback = set_pci_reboot, + .ident = "ASRock Q1900DC-ITX", + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"ASRock" ), + DMI_MATCH(DMI_BOARD_NAME, "Q1900DC-ITX"), + }, + }, + /* ASUS */ { /* Handle problems with rebooting on ASUS P4S800 */ .callback = set_bios_reboot,