Merge branch 'acpi-general'
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 4 Dec 2012 12:46:08 +0000 (13:46 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 4 Dec 2012 12:46:08 +0000 (13:46 +0100)
* acpi-general:
  ACPI / PNP: Do not crash due to stale pointer use during system resume
  ACPI / video: Add "Asus UL30VT" to ACPI video detect blacklist
  ACPI: do acpisleep dmi check when CONFIG_ACPI_SLEEP is set

drivers/acpi/sleep.c
drivers/acpi/video_detect.c
drivers/pnp/pnpacpi/core.c

index 1e25319..2fcc67d 100644 (file)
@@ -129,6 +129,180 @@ void __init acpi_old_suspend_ordering(void)
        old_suspend_ordering = true;
 }
 
+static int __init init_old_suspend_ordering(const struct dmi_system_id *d)
+{
+       acpi_old_suspend_ordering();
+       return 0;
+}
+
+static int __init init_nvs_nosave(const struct dmi_system_id *d)
+{
+       acpi_nvs_nosave();
+       return 0;
+}
+
+static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
+       {
+       .callback = init_old_suspend_ordering,
+       .ident = "Abit KN9 (nForce4 variant)",
+       .matches = {
+               DMI_MATCH(DMI_BOARD_VENDOR, "http://www.abit.com.tw/"),
+               DMI_MATCH(DMI_BOARD_NAME, "KN9 Series(NF-CK804)"),
+               },
+       },
+       {
+       .callback = init_old_suspend_ordering,
+       .ident = "HP xw4600 Workstation",
+       .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
+               DMI_MATCH(DMI_PRODUCT_NAME, "HP xw4600 Workstation"),
+               },
+       },
+       {
+       .callback = init_old_suspend_ordering,
+       .ident = "Asus Pundit P1-AH2 (M2N8L motherboard)",
+       .matches = {
+               DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTek Computer INC."),
+               DMI_MATCH(DMI_BOARD_NAME, "M2N8L"),
+               },
+       },
+       {
+       .callback = init_old_suspend_ordering,
+       .ident = "Panasonic CF51-2L",
+       .matches = {
+               DMI_MATCH(DMI_BOARD_VENDOR,
+                               "Matsushita Electric Industrial Co.,Ltd."),
+               DMI_MATCH(DMI_BOARD_NAME, "CF51-2L"),
+               },
+       },
+       {
+       .callback = init_nvs_nosave,
+       .ident = "Sony Vaio VGN-FW21E",
+       .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
+               DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FW21E"),
+               },
+       },
+       {
+       .callback = init_nvs_nosave,
+       .ident = "Sony Vaio VPCEB17FX",
+       .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
+               DMI_MATCH(DMI_PRODUCT_NAME, "VPCEB17FX"),
+               },
+       },
+       {
+       .callback = init_nvs_nosave,
+       .ident = "Sony Vaio VGN-SR11M",
+       .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
+               DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SR11M"),
+               },
+       },
+       {
+       .callback = init_nvs_nosave,
+       .ident = "Everex StepNote Series",
+       .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "Everex Systems, Inc."),
+               DMI_MATCH(DMI_PRODUCT_NAME, "Everex StepNote Series"),
+               },
+       },
+       {
+       .callback = init_nvs_nosave,
+       .ident = "Sony Vaio VPCEB1Z1E",
+       .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
+               DMI_MATCH(DMI_PRODUCT_NAME, "VPCEB1Z1E"),
+               },
+       },
+       {
+       .callback = init_nvs_nosave,
+       .ident = "Sony Vaio VGN-NW130D",
+       .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
+               DMI_MATCH(DMI_PRODUCT_NAME, "VGN-NW130D"),
+               },
+       },
+       {
+       .callback = init_nvs_nosave,
+       .ident = "Sony Vaio VPCCW29FX",
+       .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
+               DMI_MATCH(DMI_PRODUCT_NAME, "VPCCW29FX"),
+               },
+       },
+       {
+       .callback = init_nvs_nosave,
+       .ident = "Averatec AV1020-ED2",
+       .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "AVERATEC"),
+               DMI_MATCH(DMI_PRODUCT_NAME, "1000 Series"),
+               },
+       },
+       {
+       .callback = init_old_suspend_ordering,
+       .ident = "Asus A8N-SLI DELUXE",
+       .matches = {
+               DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
+               DMI_MATCH(DMI_BOARD_NAME, "A8N-SLI DELUXE"),
+               },
+       },
+       {
+       .callback = init_old_suspend_ordering,
+       .ident = "Asus A8N-SLI Premium",
+       .matches = {
+               DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
+               DMI_MATCH(DMI_BOARD_NAME, "A8N-SLI Premium"),
+               },
+       },
+       {
+       .callback = init_nvs_nosave,
+       .ident = "Sony Vaio VGN-SR26GN_P",
+       .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
+               DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SR26GN_P"),
+               },
+       },
+       {
+       .callback = init_nvs_nosave,
+       .ident = "Sony Vaio VPCEB1S1E",
+       .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
+               DMI_MATCH(DMI_PRODUCT_NAME, "VPCEB1S1E"),
+               },
+       },
+       {
+       .callback = init_nvs_nosave,
+       .ident = "Sony Vaio VGN-FW520F",
+       .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
+               DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FW520F"),
+               },
+       },
+       {
+       .callback = init_nvs_nosave,
+       .ident = "Asus K54C",
+       .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."),
+               DMI_MATCH(DMI_PRODUCT_NAME, "K54C"),
+               },
+       },
+       {
+       .callback = init_nvs_nosave,
+       .ident = "Asus K54HR",
+       .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."),
+               DMI_MATCH(DMI_PRODUCT_NAME, "K54HR"),
+               },
+       },
+       {},
+};
+
+static void acpi_sleep_dmi_check(void)
+{
+       dmi_check_system(acpisleep_dmi_table);
+}
+
 /**
  * acpi_pm_freeze - Disable the GPEs and suspend EC transactions.
  */
@@ -244,6 +418,7 @@ static void acpi_pm_end(void)
 }
 #else /* !CONFIG_ACPI_SLEEP */
 #define acpi_target_sleep_state        ACPI_STATE_S0
+static inline void acpi_sleep_dmi_check(void) {}
 #endif /* CONFIG_ACPI_SLEEP */
 
 #ifdef CONFIG_SUSPEND
@@ -402,175 +577,6 @@ static const struct platform_suspend_ops acpi_suspend_ops_old = {
        .end = acpi_pm_end,
        .recover = acpi_pm_finish,
 };
-
-static int __init init_old_suspend_ordering(const struct dmi_system_id *d)
-{
-       old_suspend_ordering = true;
-       return 0;
-}
-
-static int __init init_nvs_nosave(const struct dmi_system_id *d)
-{
-       acpi_nvs_nosave();
-       return 0;
-}
-
-static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
-       {
-       .callback = init_old_suspend_ordering,
-       .ident = "Abit KN9 (nForce4 variant)",
-       .matches = {
-               DMI_MATCH(DMI_BOARD_VENDOR, "http://www.abit.com.tw/"),
-               DMI_MATCH(DMI_BOARD_NAME, "KN9 Series(NF-CK804)"),
-               },
-       },
-       {
-       .callback = init_old_suspend_ordering,
-       .ident = "HP xw4600 Workstation",
-       .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
-               DMI_MATCH(DMI_PRODUCT_NAME, "HP xw4600 Workstation"),
-               },
-       },
-       {
-       .callback = init_old_suspend_ordering,
-       .ident = "Asus Pundit P1-AH2 (M2N8L motherboard)",
-       .matches = {
-               DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTek Computer INC."),
-               DMI_MATCH(DMI_BOARD_NAME, "M2N8L"),
-               },
-       },
-       {
-       .callback = init_old_suspend_ordering,
-       .ident = "Panasonic CF51-2L",
-       .matches = {
-               DMI_MATCH(DMI_BOARD_VENDOR,
-                               "Matsushita Electric Industrial Co.,Ltd."),
-               DMI_MATCH(DMI_BOARD_NAME, "CF51-2L"),
-               },
-       },
-       {
-       .callback = init_nvs_nosave,
-       .ident = "Sony Vaio VGN-FW21E",
-       .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
-               DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FW21E"),
-               },
-       },
-       {
-       .callback = init_nvs_nosave,
-       .ident = "Sony Vaio VPCEB17FX",
-       .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
-               DMI_MATCH(DMI_PRODUCT_NAME, "VPCEB17FX"),
-               },
-       },
-       {
-       .callback = init_nvs_nosave,
-       .ident = "Sony Vaio VGN-SR11M",
-       .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
-               DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SR11M"),
-               },
-       },
-       {
-       .callback = init_nvs_nosave,
-       .ident = "Everex StepNote Series",
-       .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "Everex Systems, Inc."),
-               DMI_MATCH(DMI_PRODUCT_NAME, "Everex StepNote Series"),
-               },
-       },
-       {
-       .callback = init_nvs_nosave,
-       .ident = "Sony Vaio VPCEB1Z1E",
-       .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
-               DMI_MATCH(DMI_PRODUCT_NAME, "VPCEB1Z1E"),
-               },
-       },
-       {
-       .callback = init_nvs_nosave,
-       .ident = "Sony Vaio VGN-NW130D",
-       .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
-               DMI_MATCH(DMI_PRODUCT_NAME, "VGN-NW130D"),
-               },
-       },
-       {
-       .callback = init_nvs_nosave,
-       .ident = "Sony Vaio VPCCW29FX",
-       .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
-               DMI_MATCH(DMI_PRODUCT_NAME, "VPCCW29FX"),
-               },
-       },
-       {
-       .callback = init_nvs_nosave,
-       .ident = "Averatec AV1020-ED2",
-       .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "AVERATEC"),
-               DMI_MATCH(DMI_PRODUCT_NAME, "1000 Series"),
-               },
-       },
-       {
-       .callback = init_old_suspend_ordering,
-       .ident = "Asus A8N-SLI DELUXE",
-       .matches = {
-               DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
-               DMI_MATCH(DMI_BOARD_NAME, "A8N-SLI DELUXE"),
-               },
-       },
-       {
-       .callback = init_old_suspend_ordering,
-       .ident = "Asus A8N-SLI Premium",
-       .matches = {
-               DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
-               DMI_MATCH(DMI_BOARD_NAME, "A8N-SLI Premium"),
-               },
-       },
-       {
-       .callback = init_nvs_nosave,
-       .ident = "Sony Vaio VGN-SR26GN_P",
-       .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
-               DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SR26GN_P"),
-               },
-       },
-       {
-       .callback = init_nvs_nosave,
-       .ident = "Sony Vaio VPCEB1S1E",
-       .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
-               DMI_MATCH(DMI_PRODUCT_NAME, "VPCEB1S1E"),
-               },
-       },
-       {
-       .callback = init_nvs_nosave,
-       .ident = "Sony Vaio VGN-FW520F",
-       .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
-               DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FW520F"),
-               },
-       },
-       {
-       .callback = init_nvs_nosave,
-       .ident = "Asus K54C",
-       .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."),
-               DMI_MATCH(DMI_PRODUCT_NAME, "K54C"),
-               },
-       },
-       {
-       .callback = init_nvs_nosave,
-       .ident = "Asus K54HR",
-       .matches = {
-               DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."),
-               DMI_MATCH(DMI_PRODUCT_NAME, "K54HR"),
-               },
-       },
-       {},
-};
 #endif /* CONFIG_SUSPEND */
 
 #ifdef CONFIG_HIBERNATION
@@ -730,13 +736,13 @@ int __init acpi_sleep_init(void)
        u8 type_a, type_b;
 #ifdef CONFIG_SUSPEND
        int i = 0;
-
-       dmi_check_system(acpisleep_dmi_table);
 #endif
 
        if (acpi_disabled)
                return 0;
 
+       acpi_sleep_dmi_check();
+
        sleep_states[ACPI_STATE_S0] = 1;
        printk(KERN_INFO PREFIX "(supports S0");
 
index b728880..4ac2593 100644 (file)
@@ -156,6 +156,14 @@ static struct dmi_system_id video_detect_dmi_table[] = {
                DMI_MATCH(DMI_BOARD_NAME, "X360"),
                },
        },
+       {
+       .callback = video_detect_force_vendor,
+       .ident = "Asus UL30VT",
+       .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."),
+               DMI_MATCH(DMI_PRODUCT_NAME, "UL30VT"),
+               },
+       },
        { },
 };
 
index 653d563..93a16ee 100644 (file)
@@ -95,6 +95,9 @@ static int pnpacpi_set_resources(struct pnp_dev *dev)
                return -ENODEV;
        }
 
+       if (WARN_ON_ONCE(acpi_dev != dev->data))
+               dev->data = acpi_dev;
+
        ret = pnpacpi_build_resource_template(dev, &buffer);
        if (ret)
                return ret;