Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e4f2e5ea authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'idle-release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-idle-2.6:
  intel_idle: native hardware cpuidle driver for latest Intel processors
  ACPI: acpi_idle: touch TS_POLLING only in the non-MWAIT case
  acpi_pad: uses MONITOR/MWAIT, so it doesn't need to clear TS_POLLING
  sched: clarify commment for TS_POLLING
  ACPI: allow a native cpuidle driver to displace ACPI
  cpuidle: make cpuidle_curr_driver static
  cpuidle: add cpuidle_unregister_driver() error check
  cpuidle: fail to register if !CONFIG_CPU_IDLE
parents 9a90e098 26717172
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -2887,6 +2887,13 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git
S:	Maintained
S:	Maintained
F:	drivers/input/
F:	drivers/input/


INTEL IDLE DRIVER
M:	Len Brown <lenb@kernel.org>
L:	linux-pm@lists.linux-foundation.org
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-idle-2.6.git
S:	Supported
F:	drivers/idle/intel_idle.c

INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
M:	Maik Broemme <mbroemme@plusserver.de>
M:	Maik Broemme <mbroemme@plusserver.de>
L:	linux-fbdev@vger.kernel.org
L:	linux-fbdev@vger.kernel.org
+2 −2
Original line number Original line Diff line number Diff line
@@ -239,8 +239,8 @@ static inline struct thread_info *current_thread_info(void)
#define TS_USEDFPU		0x0001	/* FPU was used by this task
#define TS_USEDFPU		0x0001	/* FPU was used by this task
					   this quantum (SMP) */
					   this quantum (SMP) */
#define TS_COMPAT		0x0002	/* 32bit syscall active (64BIT)*/
#define TS_COMPAT		0x0002	/* 32bit syscall active (64BIT)*/
#define TS_POLLING		0x0004	/* true if in idle loop
#define TS_POLLING		0x0004	/* idle task polling need_resched,
					   and not sleeping */
					   skip sending interrupt */
#define TS_RESTORE_SIGMASK	0x0008	/* restore signal mask in do_signal() */
#define TS_RESTORE_SIGMASK	0x0008	/* restore signal mask in do_signal() */


#define tsk_is_polling(t) (task_thread_info(t)->status & TS_POLLING)
#define tsk_is_polling(t) (task_thread_info(t)->status & TS_POLLING)
+1 −1
Original line number Original line Diff line number Diff line
@@ -10,6 +10,7 @@ obj-$(CONFIG_PCI) += pci/
obj-$(CONFIG_PARISC)		+= parisc/
obj-$(CONFIG_PARISC)		+= parisc/
obj-$(CONFIG_RAPIDIO)		+= rapidio/
obj-$(CONFIG_RAPIDIO)		+= rapidio/
obj-y				+= video/
obj-y				+= video/
obj-y				+= idle/
obj-$(CONFIG_ACPI)		+= acpi/
obj-$(CONFIG_ACPI)		+= acpi/
obj-$(CONFIG_SFI)		+= sfi/
obj-$(CONFIG_SFI)		+= sfi/
# PnP must come after ACPI since it will eventually need to check if acpi
# PnP must come after ACPI since it will eventually need to check if acpi
@@ -91,7 +92,6 @@ obj-$(CONFIG_EISA) += eisa/
obj-y				+= lguest/
obj-y				+= lguest/
obj-$(CONFIG_CPU_FREQ)		+= cpufreq/
obj-$(CONFIG_CPU_FREQ)		+= cpufreq/
obj-$(CONFIG_CPU_IDLE)		+= cpuidle/
obj-$(CONFIG_CPU_IDLE)		+= cpuidle/
obj-y				+= idle/
obj-$(CONFIG_MMC)		+= mmc/
obj-$(CONFIG_MMC)		+= mmc/
obj-$(CONFIG_MEMSTICK)		+= memstick/
obj-$(CONFIG_MEMSTICK)		+= memstick/
obj-$(CONFIG_NEW_LEDS)		+= leds/
obj-$(CONFIG_NEW_LEDS)		+= leds/
+0 −9
Original line number Original line Diff line number Diff line
@@ -172,13 +172,6 @@ static int power_saving_thread(void *data)


		do_sleep = 0;
		do_sleep = 0;


		current_thread_info()->status &= ~TS_POLLING;
		/*
		 * TS_POLLING-cleared state must be visible before we test
		 * NEED_RESCHED:
		 */
		smp_mb();

		expire_time = jiffies + HZ * (100 - idle_pct) / 100;
		expire_time = jiffies + HZ * (100 - idle_pct) / 100;


		while (!need_resched()) {
		while (!need_resched()) {
@@ -209,8 +202,6 @@ static int power_saving_thread(void *data)
			}
			}
		}
		}


		current_thread_info()->status |= TS_POLLING;

		/*
		/*
		 * current sched_rt has threshold for rt task running time.
		 * current sched_rt has threshold for rt task running time.
		 * When a rt task uses 95% CPU time, the rt thread will be
		 * When a rt task uses 95% CPU time, the rt thread will be
+10 −5
Original line number Original line Diff line number Diff line
@@ -616,6 +616,7 @@ static int __cpuinit acpi_processor_add(struct acpi_device *device)
	acpi_processor_get_limit_info(pr);
	acpi_processor_get_limit_info(pr);




	if (cpuidle_get_driver() == &acpi_idle_driver)
		acpi_processor_power_init(pr, device);
		acpi_processor_power_init(pr, device);


	pr->cdev = thermal_cooling_device_register("Processor", device,
	pr->cdev = thermal_cooling_device_register("Processor", device,
@@ -920,9 +921,14 @@ static int __init acpi_processor_init(void)
	if (!acpi_processor_dir)
	if (!acpi_processor_dir)
		return -ENOMEM;
		return -ENOMEM;
#endif
#endif
	result = cpuidle_register_driver(&acpi_idle_driver);

	if (result < 0)
	if (!cpuidle_register_driver(&acpi_idle_driver)) {
		goto out_proc;
		printk(KERN_DEBUG "ACPI: %s registered with cpuidle\n",
			acpi_idle_driver.name);
	} else {
		printk(KERN_DEBUG "ACPI: acpi_idle yielding to %s",
			cpuidle_get_driver()->name);
	}


	result = acpi_bus_register_driver(&acpi_processor_driver);
	result = acpi_bus_register_driver(&acpi_processor_driver);
	if (result < 0)
	if (result < 0)
@@ -941,7 +947,6 @@ static int __init acpi_processor_init(void)
out_cpuidle:
out_cpuidle:
	cpuidle_unregister_driver(&acpi_idle_driver);
	cpuidle_unregister_driver(&acpi_idle_driver);


out_proc:
#ifdef CONFIG_ACPI_PROCFS
#ifdef CONFIG_ACPI_PROCFS
	remove_proc_entry(ACPI_PROCESSOR_CLASS, acpi_root_dir);
	remove_proc_entry(ACPI_PROCESSOR_CLASS, acpi_root_dir);
#endif
#endif
Loading