From: Len Brown Date: Thu, 7 Feb 2008 08:13:13 +0000 (-0500) Subject: Merge branches 'release', 'misc' and 'misc-2.6.25' into release X-Git-Tag: v2.6.25-rc1~297^2~3^2~2^2~1^2~1 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=70ec75c5b8e0bda7a16fb387f91e08545f379a0e;p=linux-2.6 Merge branches 'release', 'misc' and 'misc-2.6.25' into release --- 70ec75c5b8e0bda7a16fb387f91e08545f379a0e diff --cc drivers/acpi/osl.c index 07c18dbde6,82525d9ccc,e53fb516f9..0c41db3075 --- a/drivers/acpi/osl.c +++ b/drivers/acpi/osl.c @@@@ -77,55 -77,11 -77,55 +77,55 @@@@ static struct workqueue_struct *kacpi_n #define OSI_STRING_LENGTH_MAX 64 /* arbitrary */ static char osi_additional_string[OSI_STRING_LENGTH_MAX]; - static int osi_linux; /* disable _OSI(Linux) by default */ + /* + * "Ode to _OSI(Linux)" + * + * osi_linux -- Control response to BIOS _OSI(Linux) query. + * + * As Linux evolves, the features that it supports change. + * So an OSI string such as "Linux" is not specific enough + * to be useful across multiple versions of Linux. It + * doesn't identify any particular feature, interface, + * or even any particular version of Linux... + * + * Unfortunately, Linux-2.6.22 and earlier responded "yes" + * to a BIOS _OSI(Linux) query. When + * a reference mobile BIOS started using it, its use + * started to spread to many vendor platforms. + * As it is not supportable, we need to halt that spread. + * + * Today, most BIOS references to _OSI(Linux) are noise -- + * they have no functional effect and are just dead code + * carried over from the reference BIOS. + * + * The next most common case is that _OSI(Linux) harms Linux, + * usually by causing the BIOS to follow paths that are + * not tested during Windows validation. + * + * Finally, there is a short list of platforms + * where OSI(Linux) benefits Linux. + * + * In Linux-2.6.23, OSI(Linux) is first disabled by default. + * DMI is used to disable the dmesg warning about OSI(Linux) + * on platforms where it is known to have no effect. + * But a dmesg warning remains for systems where + * we do not know if OSI(Linux) is good or bad for the system. + * DMI is also used to enable OSI(Linux) for the machines + * that are known to need it. + * + * BIOS writers should NOT query _OSI(Linux) on future systems. + * It will be ignored by default, and to get Linux to + * not ignore it will require a kernel source update to + * add a DMI entry, or a boot-time "acpi_osi=Linux" invocation. + */ + #define OSI_LINUX_ENABLE 0 - #ifdef CONFIG_DMI - static struct __initdata dmi_system_id acpi_osl_dmi_table[]; - #endif -struct osi_linux { ++static struct osi_linux { + unsigned int enable:1; + unsigned int dmi:1; + unsigned int cmdline:1; + unsigned int known:1; + } osi_linux = { OSI_LINUX_ENABLE, 0, 0, 0}; static void __init acpi_request_region (struct acpi_generic_address *addr, unsigned int length, char *desc) @@@@ -250,15 -207,12 -250,11 +250,16 @@@@ acpi_physical_address __init acpi_os_ge "System description tables not found\n"); return 0; } -- } else -- return acpi_find_rsdp(); ++ } else { ++ acpi_physical_address pa = 0; ++ ++ acpi_find_root_pointer(&pa); ++ return pa; ++ } } - -void __iomem *acpi_os_map_memory(acpi_physical_address phys, acpi_size size) + +void __iomem *__init_refok + +acpi_os_map_memory(acpi_physical_address phys, acpi_size size) { if (phys > ULONG_MAX) { printk(KERN_ERR PREFIX "Cannot map memory that high\n"); @@@@ -1186,34 -1142,6 -1208,34 +1187,34 @@@@ acpi_status acpi_os_release_object(acpi return (AE_OK); } + /** + * acpi_dmi_dump - dump DMI slots needed for blacklist entry + * + * Returns 0 on success + */ -int acpi_dmi_dump(void) ++static int acpi_dmi_dump(void) + { + + if (!dmi_available) + return -1; + + printk(KERN_NOTICE PREFIX "DMI System Vendor: %s\n", - dmi_get_slot(DMI_SYS_VENDOR)); ++ dmi_get_system_info(DMI_SYS_VENDOR)); + printk(KERN_NOTICE PREFIX "DMI Product Name: %s\n", - dmi_get_slot(DMI_PRODUCT_NAME)); ++ dmi_get_system_info(DMI_PRODUCT_NAME)); + printk(KERN_NOTICE PREFIX "DMI Product Version: %s\n", - dmi_get_slot(DMI_PRODUCT_VERSION)); ++ dmi_get_system_info(DMI_PRODUCT_VERSION)); + printk(KERN_NOTICE PREFIX "DMI Board Name: %s\n", - dmi_get_slot(DMI_BOARD_NAME)); ++ dmi_get_system_info(DMI_BOARD_NAME)); + printk(KERN_NOTICE PREFIX "DMI BIOS Vendor: %s\n", - dmi_get_slot(DMI_BIOS_VENDOR)); ++ dmi_get_system_info(DMI_BIOS_VENDOR)); + printk(KERN_NOTICE PREFIX "DMI BIOS Date: %s\n", - dmi_get_slot(DMI_BIOS_DATE)); ++ dmi_get_system_info(DMI_BIOS_DATE)); + + return 0; + } + + /****************************************************************************** * * FUNCTION: acpi_os_validate_interface diff --cc drivers/acpi/sleep/main.c index 7f97e32fc3,2c0b6630f8,c9a733f36b..293a1cbb47 --- a/drivers/acpi/sleep/main.c +++ b/drivers/acpi/sleep/main.c @@@@ -167,10 -139,7 -167,10 +167,10 @@@@ static int acpi_pm_enter(suspend_state_ break; } - /* ACPI 3.0 specs (P62) says that it's the responsabilty + /* Reprogram control registers and execute _BFS */ + acpi_leave_sleep_state_prep(acpi_state); + - /* ACPI 3.0 specs (P62) says that it's the responsabilty ++ /* ACPI 3.0 specs (P62) says that it's the responsibility * of the OSPM to clear the status bit [ implying that the * POWER_BUTTON event should not reach userspace ] */