Re: [PATCH RESEND] Fix reboot regression on Acer Aspire One AOA110

From: Peter Chubb
Date: Wed Nov 02 2011 - 22:04:29 EST


>>>>> "Vasily" == Vasily Khoruzhick <anarsoul@xxxxxxxxx> writes:

Vasily> From: UroÅ Vampl <mobile.leecher@xxxxxxxxx> Starting with
Vasily> kernel 3.0, my Acer Aspire One AOA110 hangs on reboot. Doing
Vasily> an internet search, I found that in git commit
Vasily> b49c78d4827be8d7e67e5b94adac6b30a4a9ad14 the machine was made
Vasily> to reboot with the bios method, but it does not work on most
Vasily> (all?) AOA110s.

That change was made in July to fix the broken ACPI reboot method. It
certainly works on my AOA110. What BIOS do you have installed?
(although looking at what's been published, I can't see any booting
problems mentioned in the BIOS changelogs).

Vasily> This patch introduces new quirks section for machines that
Vasily> only reboot with the kbd method and put the Aspire One into
Vasily> it.

You don't need yet another table, just change the callback.


Try this:

Index: linux-2.6/arch/x86/kernel/reboot.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/reboot.c 2011-10-31 14:35:50.105623537 +1100
+++ linux-2.6/arch/x86/kernel/reboot.c 2011-11-03 11:54:12.487901547 +1100
@@ -124,7 +124,7 @@
*/

/*
- * Some machines require the "reboot=b" commandline option,
+ * Some machines require the "reboot=b" or "reboot=k" commandline options,
* this quirk makes that automatic.
*/
static int __init set_bios_reboot(const struct dmi_system_id *d)
@@ -136,6 +136,15 @@
return 0;
}

+static int __init set_kbd_reboot(const struct dmi_system_id *d)
+{
+ if (reboot_type != BOOT_KBD) {
+ reboot_type = BOOT_KBD;
+ printk(KERN_INFO "%s series board detected. Selecting KBD-method for reboots.\n", d->ident);
+ }
+ return 0;
+}
+
static struct dmi_system_id __initdata reboot_dmi_table[] = {
{ /* Handle problems with rebooting on Dell E520's */
.callback = set_bios_reboot,
@@ -295,7 +304,7 @@
},
},
{ /* Handle reboot issue on Acer Aspire one */
- .callback = set_bios_reboot,
+ .callback = set_kbd_reboot,
.ident = "Acer Aspire One A110",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
--
Dr Peter Chubb peter DOT chubb AT nicta.com.au
http://www.ertos.nicta.com.au ERTOS within National ICT Australia
All things shall perish from under the sky/Music alone shall live, never to die
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/