Przeglądaj źródła

Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux

Pull ACPI & Power Management patches from Len Brown:
 "Two fixes for cpuidle merge-window changes, plus a URL fix in
  MAINTAINERS"

* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux:
  MAINTAINERS: Update git url for ACPI
  cpuidle: Fix panic in CPU off-lining with no idle driver
  ACPI processor: Use safe_halt() rather than halt() in acpi_idle_play_dead()
Linus Torvalds 13 lat temu
rodzic
commit
f21fec96ea
3 zmienionych plików z 6 dodań i 3 usunięć
  1. 1 1
      MAINTAINERS
  2. 1 1
      drivers/acpi/processor_idle.c
  3. 4 1
      drivers/cpuidle/cpuidle.c

+ 1 - 1
MAINTAINERS

@@ -228,7 +228,7 @@ M:	Len Brown <lenb@kernel.org>
 L:	linux-acpi@vger.kernel.org
 L:	linux-acpi@vger.kernel.org
 W:	http://www.lesswatts.org/projects/acpi/
 W:	http://www.lesswatts.org/projects/acpi/
 Q:	http://patchwork.kernel.org/project/linux-acpi/list/
 Q:	http://patchwork.kernel.org/project/linux-acpi/list/
-T:	git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git
+T:	git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux
 S:	Supported
 S:	Supported
 F:	drivers/acpi/
 F:	drivers/acpi/
 F:	drivers/pnp/pnpacpi/
 F:	drivers/pnp/pnpacpi/

+ 1 - 1
drivers/acpi/processor_idle.c

@@ -786,7 +786,7 @@ static int acpi_idle_play_dead(struct cpuidle_device *dev, int index)
 	while (1) {
 	while (1) {
 
 
 		if (cx->entry_method == ACPI_CSTATE_HALT)
 		if (cx->entry_method == ACPI_CSTATE_HALT)
-			halt();
+			safe_halt();
 		else if (cx->entry_method == ACPI_CSTATE_SYSTEMIO) {
 		else if (cx->entry_method == ACPI_CSTATE_SYSTEMIO) {
 			inb(cx->address);
 			inb(cx->address);
 			/* See comment in acpi_idle_do_entry() */
 			/* See comment in acpi_idle_do_entry() */

+ 4 - 1
drivers/cpuidle/cpuidle.c

@@ -74,7 +74,7 @@ static cpuidle_enter_t cpuidle_enter_ops;
 /**
 /**
  * cpuidle_play_dead - cpu off-lining
  * cpuidle_play_dead - cpu off-lining
  *
  *
- * Only returns in case of an error
+ * Returns in case of an error or no driver
  */
  */
 int cpuidle_play_dead(void)
 int cpuidle_play_dead(void)
 {
 {
@@ -83,6 +83,9 @@ int cpuidle_play_dead(void)
 	int i, dead_state = -1;
 	int i, dead_state = -1;
 	int power_usage = -1;
 	int power_usage = -1;
 
 
+	if (!drv)
+		return -ENODEV;
+
 	/* Find lowest-power state that supports long-term idle */
 	/* Find lowest-power state that supports long-term idle */
 	for (i = CPUIDLE_DRIVER_STATE_START; i < drv->state_count; i++) {
 	for (i = CPUIDLE_DRIVER_STATE_START; i < drv->state_count; i++) {
 		struct cpuidle_state *s = &drv->states[i];
 		struct cpuidle_state *s = &drv->states[i];