aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/processor_idle.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/processor_idle.c')
-rw-r--r--drivers/acpi/processor_idle.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index 0d90ff5fd117..55d69dce47c4 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -847,6 +847,7 @@ static int acpi_processor_get_power_info_default(struct acpi_processor *pr)
847 /* all processors need to support C1 */ 847 /* all processors need to support C1 */
848 pr->power.states[ACPI_STATE_C1].type = ACPI_STATE_C1; 848 pr->power.states[ACPI_STATE_C1].type = ACPI_STATE_C1;
849 pr->power.states[ACPI_STATE_C1].valid = 1; 849 pr->power.states[ACPI_STATE_C1].valid = 1;
850 pr->power.states[ACPI_STATE_C1].entry_method = ACPI_CSTATE_HALT;
850 } 851 }
851 /* the C0 state only exists as a filler in our array */ 852 /* the C0 state only exists as a filler in our array */
852 pr->power.states[ACPI_STATE_C0].valid = 1; 853 pr->power.states[ACPI_STATE_C0].valid = 1;
@@ -959,6 +960,9 @@ static int acpi_processor_get_power_info_cst(struct acpi_processor *pr)
959 cx.address); 960 cx.address);
960 } 961 }
961 962
963 if (cx.type == ACPI_STATE_C1) {
964 cx.valid = 1;
965 }
962 966
963 obj = &(element->package.elements[2]); 967 obj = &(element->package.elements[2]);
964 if (obj->type != ACPI_TYPE_INTEGER) 968 if (obj->type != ACPI_TYPE_INTEGER)
@@ -1294,6 +1298,8 @@ int acpi_processor_cst_has_changed(struct acpi_processor *pr)
1294{ 1298{
1295 int result = 0; 1299 int result = 0;
1296 1300
1301 if (boot_option_idle_override)
1302 return 0;
1297 1303
1298 if (!pr) 1304 if (!pr)
1299 return -EINVAL; 1305 return -EINVAL;
@@ -1733,6 +1739,9 @@ int acpi_processor_cst_has_changed(struct acpi_processor *pr)
1733{ 1739{
1734 int ret; 1740 int ret;
1735 1741
1742 if (boot_option_idle_override)
1743 return 0;
1744
1736 if (!pr) 1745 if (!pr)
1737 return -EINVAL; 1746 return -EINVAL;
1738 1747
@@ -1763,6 +1772,8 @@ int __cpuinit acpi_processor_power_init(struct acpi_processor *pr,
1763 struct proc_dir_entry *entry = NULL; 1772 struct proc_dir_entry *entry = NULL;
1764 unsigned int i; 1773 unsigned int i;
1765 1774
1775 if (boot_option_idle_override)
1776 return 0;
1766 1777
1767 if (!first_run) { 1778 if (!first_run) {
1768 dmi_check_system(processor_power_dmi_table); 1779 dmi_check_system(processor_power_dmi_table);
@@ -1798,7 +1809,7 @@ int __cpuinit acpi_processor_power_init(struct acpi_processor *pr,
1798 * Note that we use previously set idle handler will be used on 1809 * Note that we use previously set idle handler will be used on
1799 * platforms that only support C1. 1810 * platforms that only support C1.
1800 */ 1811 */
1801 if ((pr->flags.power) && (!boot_option_idle_override)) { 1812 if (pr->flags.power) {
1802#ifdef CONFIG_CPU_IDLE 1813#ifdef CONFIG_CPU_IDLE
1803 acpi_processor_setup_cpuidle(pr); 1814 acpi_processor_setup_cpuidle(pr);
1804 pr->power.dev.cpu = pr->id; 1815 pr->power.dev.cpu = pr->id;
@@ -1838,8 +1849,11 @@ int __cpuinit acpi_processor_power_init(struct acpi_processor *pr,
1838int acpi_processor_power_exit(struct acpi_processor *pr, 1849int acpi_processor_power_exit(struct acpi_processor *pr,
1839 struct acpi_device *device) 1850 struct acpi_device *device)
1840{ 1851{
1852 if (boot_option_idle_override)
1853 return 0;
1854
1841#ifdef CONFIG_CPU_IDLE 1855#ifdef CONFIG_CPU_IDLE
1842 if ((pr->flags.power) && (!boot_option_idle_override)) 1856 if (pr->flags.power)
1843 cpuidle_unregister_device(&pr->power.dev); 1857 cpuidle_unregister_device(&pr->power.dev);
1844#endif 1858#endif
1845 pr->flags.power_setup_done = 0; 1859 pr->flags.power_setup_done = 0;