Re: [PATCH] Default to ACPI reboots on newish X86 hardware

From: Christian Hofstaedtler
Date: Thu Jan 21 2010 - 12:26:07 EST


Len,

* Len Brown <lenb@xxxxxxxxxx> [100120 06:21]:
> On Thu, 7 Jan 2010, Christian Hofstaedtler wrote:
>
> Thanks for writing this patch Christian,
> it is something that has been unsettled for
> a long time and it will be great to close the issue.
>
> > Newer hardware is assumed to no longer reboot succesfully using the
> > keyboard controller, but needs to use ACPI instead.
> > To not cause problems with older hardware, only hardware with a BIOS
> > date 2006 or newer is considered for this choice. Broken BIOSes
> > reporting a BIOS date of 0 are not specially considered, and therefore
> > get the KBD reboot behaviour.
> >
> > Also unifiy reboot_type selection code.
>
> Please split the patch in two patches:
>
> 1. cleanup w/o policy change
> 2. policy change w/o cleanup
>
> better if the policy change is #2, so if we need to revert it
> we don't have to revert the cleanup too.

Please find the splitted patch in reply to your mail.

> > Signed-off-by: Christian Hofstaedtler <ch@xxxxxxx>
> > ---
> > arch/x86/include/asm/emergency-restart.h | 1 +
> > arch/x86/kernel/reboot.c | 65 ++++++++++++++++++++++++------
> > 2 files changed, 53 insertions(+), 13 deletions(-)
>
>
> > +/* See if the Hardware is new enough to support ACPI reboots. */
> > +static int __init reboot_acpi_likey_supported(void)
> > +{
> > + int year;
> > +
> > + /* Doesn't exist? Likely an old system */
> > + if (!dmi_get_date(DMI_BIOS_DATE, &year, NULL, NULL)) {
> > + return 0;
> > + }
>
> I think it may be better to simply return 1 in this case.
>
> While we have seen dmi_get_date() fail in practice on "modern" machines,
> if CONFIG_ACPI_BLACKLIST_YEAR is set, we will already punish users by
> disabling ACPI and making them invoke acpi=force.
>
> So the effect of this check is to disable ACPI-reset
> on systems where the user has likely already invoked acpi=force --
> which seems somewhat counter-intuitive.

Okay; I've also re-added the check for year==0, so these machines
get the same behaviour.

> > + /* 2006 was decided as the cut-off year. */
> > + if (year < 2006) {
> > + return 0;
> > + }
>
> I'd rather see 2003.
> If we run into trouble, it is a 1-liner to move it forward.
> But I think we'll probably do fine with anything newer than 2001.

Made this 2003.

> thanks,
> Len Brown, Intel Open Source Technolgy Center


Christian

--
christian hofstaedtler
--
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/