| From fc54ab72959edbf229b65ac74b2f122d799ca002 Mon Sep 17 00:00:00 2001 |
| From: Lin Ming <ming.m.lin@intel.com> |
| Date: Mon, 16 Jul 2012 16:30:21 +0800 |
| Subject: ACPI: run _OSC after ACPI_FULL_INITIALIZATION |
| |
| From: Lin Ming <ming.m.lin@intel.com> |
| |
| commit fc54ab72959edbf229b65ac74b2f122d799ca002 upstream. |
| |
| The _OSC method may exist in module level code, |
| so it must be called after ACPI_FULL_INITIALIZATION |
| |
| On some new platforms with Zero-Power-Optical-Disk-Drive (ZPODD) |
| support, this fix is necessary to save power. |
| |
| Signed-off-by: Lin Ming <ming.m.lin@intel.com> |
| Tested-by: Aaron Lu <aaron.lu@intel.com> |
| Signed-off-by: Len Brown <len.brown@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/acpi/bus.c | 8 ++++++-- |
| 1 file changed, 6 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/acpi/bus.c |
| +++ b/drivers/acpi/bus.c |
| @@ -990,8 +990,6 @@ static int __init acpi_bus_init(void) |
| status = acpi_ec_ecdt_probe(); |
| /* Ignore result. Not having an ECDT is not fatal. */ |
| |
| - acpi_bus_osc_support(); |
| - |
| status = acpi_initialize_objects(ACPI_FULL_INITIALIZATION); |
| if (ACPI_FAILURE(status)) { |
| printk(KERN_ERR PREFIX "Unable to initialize ACPI objects\n"); |
| @@ -999,6 +997,12 @@ static int __init acpi_bus_init(void) |
| } |
| |
| /* |
| + * _OSC method may exist in module level code, |
| + * so it must be run after ACPI_FULL_INITIALIZATION |
| + */ |
| + acpi_bus_osc_support(); |
| + |
| + /* |
| * _PDC control method may load dynamic SSDT tables, |
| * and we need to install the table handler before that. |
| */ |