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 789d4947ed31..2dd2c1f3a01c 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)
@@ -1295,6 +1299,8 @@ int acpi_processor_cst_has_changed(struct acpi_processor *pr)
1295{ 1299{
1296 int result = 0; 1300 int result = 0;
1297 1301
1302 if (boot_option_idle_override)
1303 return 0;
1298 1304
1299 if (!pr) 1305 if (!pr)
1300 return -EINVAL; 1306 return -EINVAL;
@@ -1734,6 +1740,9 @@ int acpi_processor_cst_has_changed(struct acpi_processor *pr)
1734{ 1740{
1735 int ret; 1741 int ret;
1736 1742
1743 if (boot_option_idle_override)
1744 return 0;
1745
1737 if (!pr) 1746 if (!pr)
1738 return -EINVAL; 1747 return -EINVAL;
1739 1748
@@ -1764,6 +1773,8 @@ int __cpuinit acpi_processor_power_init(struct acpi_processor *pr,
1764 struct proc_dir_entry *entry = NULL; 1773 struct proc_dir_entry *entry = NULL;
1765 unsigned int i; 1774 unsigned int i;
1766 1775
1776 if (boot_option_idle_override)
1777 return 0;
1767 1778
1768 if (!first_run) { 1779 if (!first_run) {
1769 dmi_check_system(processor_power_dmi_table); 1780 dmi_check_system(processor_power_dmi_table);
@@ -1799,7 +1810,7 @@ int __cpuinit acpi_processor_power_init(struct acpi_processor *pr,
1799 * Note that we use previously set idle handler will be used on 1810 * Note that we use previously set idle handler will be used on
1800 * platforms that only support C1. 1811 * platforms that only support C1.
1801 */ 1812 */
1802 if ((pr->flags.power) && (!boot_option_idle_override)) { 1813 if (pr->flags.power) {
1803#ifdef CONFIG_CPU_IDLE 1814#ifdef CONFIG_CPU_IDLE
1804 acpi_processor_setup_cpuidle(pr); 1815 acpi_processor_setup_cpuidle(pr);
1805 pr->power.dev.cpu = pr->id; 1816 pr->power.dev.cpu = pr->id;
@@ -1835,8 +1846,11 @@ int __cpuinit acpi_processor_power_init(struct acpi_processor *pr,
1835int acpi_processor_power_exit(struct acpi_processor *pr, 1846int acpi_processor_power_exit(struct acpi_processor *pr,
1836 struct acpi_device *device) 1847 struct acpi_device *device)
1837{ 1848{
1849 if (boot_option_idle_override)
1850 return 0;
1851
1838#ifdef CONFIG_CPU_IDLE 1852#ifdef CONFIG_CPU_IDLE
1839 if ((pr->flags.power) && (!boot_option_idle_override)) 1853 if (pr->flags.power)
1840 cpuidle_unregister_device(&pr->power.dev); 1854 cpuidle_unregister_device(&pr->power.dev);
1841#endif 1855#endif
1842 pr->flags.power_setup_done = 0; 1856 pr->flags.power_setup_done = 0;