X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Facpi%2Fblacklist.c;h=9824f679a910aa83e96078a9bafc646addc3cdf3;hb=987b0145d94eecf292d8b301228356f44611ab7c;hp=f9c972b26f4fd49bd883508736ad5c04633b885d;hpb=f7ed79d23a47594e7834d66a8f14449796d4f3e6;p=linux-2.6.git diff --git a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c index f9c972b26..9824f679a 100644 --- a/drivers/acpi/blacklist.c +++ b/drivers/acpi/blacklist.c @@ -77,13 +77,28 @@ static struct acpi_blacklist_item acpi_blacklist[] __initdata = { static int __init blacklist_by_year(void) { - int year = dmi_get_year(DMI_BIOS_DATE); - /* Doesn't exist? Likely an old system */ - if (year == -1) - return 1; - /* 0? Likely a buggy new BIOS */ - if (year == 0) + int year; + char *s = dmi_get_system_info(DMI_BIOS_DATE); + + if (!s) + return 0; + if (!*s) + return 0; + + s = strrchr(s, '/'); + if (!s) return 0; + + s += 1; + + year = simple_strtoul(s, NULL, 0); + + if (year < 100) { /* 2-digit year */ + year += 1900; + if (year < 1996) /* no dates < spec 1.0 */ + year += 100; + } + if (year < CONFIG_ACPI_BLACKLIST_YEAR) { printk(KERN_ERR PREFIX "BIOS age (%d) fails cutoff (%d), " "acpi=force is required to enable ACPI\n",