All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: pm list <linux-pm@lists.linux-foundation.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
	"Linus Torvalds" <torvalds@linux-foundation.org>,
	"Ingo Molnar" <mingo@elte.hu>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	"Benjamin Herrenschmidt" <benh@kernel.crashing.org>,
	"Jeremy Fitzhardinge" <jeremy@goop.org>,
	"Len Brown" <lenb@kernel.org>,
	"Jesse Barnes" <jbarnes@virtuousgeek.org>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Arve Hjønnevåg" <arve@android.com>,
	"Linux PCI" <linux-pci@vger.kernel.org>
Subject: [PATCH 1/11] PM: Introduce functions for suspending and resuming device interrupts
Date: Sat, 14 Mar 2009 12:26:00 +0100	[thread overview]
Message-ID: <200903141226.02156.rjw@sisk.pl> (raw)
In-Reply-To: <200903141224.29591.rjw@sisk.pl>

From: Rafael J. Wysocki <rjw@sisk.pl>

Introduce helper functions allowing us to prevent device drivers from
getting any interrupts (without disabling interrupts on the CPU)
during suspend (or hibernation) and to make them start to receive
interrupts again during the subsequent resume.  These functions make it
possible to keep timer interrupts enabled while the "late" suspend and
"early" resume callbacks provided by device drivers are being
executed.  In turn, this allows device drivers' "late" suspend and
"early" resume callbacks to sleep, execute ACPI callbacks etc.

The functions introduced here will be used to rework the handling of
interrupts during suspend (hibernation) and resume.  Namely,
interrupts will only be disabled on the CPU right before suspending
sysdevs, while device drivers will be prevented from receiving
interrupts, with the help of the new helper function, before their
"late" suspend callbacks run (and analogously during resume).

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 include/linux/interrupt.h |    5 ++
 include/linux/irq.h       |    1 
 kernel/irq/Makefile       |    1 
 kernel/irq/internals.h    |    2 +
 kernel/irq/manage.c       |   31 +++++++++++++-----
 kernel/irq/pm.c           |   79 ++++++++++++++++++++++++++++++++++++++++++++++
 6 files changed, 112 insertions(+), 7 deletions(-)

Index: linux-2.6/include/linux/interrupt.h
===================================================================
--- linux-2.6.orig/include/linux/interrupt.h
+++ linux-2.6/include/linux/interrupt.h
@@ -106,6 +106,11 @@ extern void disable_irq_nosync(unsigned 
 extern void disable_irq(unsigned int irq);
 extern void enable_irq(unsigned int irq);
 
+/* The following three functions are for the core kernel use only. */
+extern void suspend_device_irqs(void);
+extern void resume_device_irqs(void);
+extern int check_wakeup_irqs(void);
+
 #if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_HARDIRQS)
 
 extern cpumask_var_t irq_default_affinity;
Index: linux-2.6/include/linux/irq.h
===================================================================
--- linux-2.6.orig/include/linux/irq.h
+++ linux-2.6/include/linux/irq.h
@@ -65,6 +65,7 @@ typedef	void (*irq_flow_handler_t)(unsig
 #define IRQ_SPURIOUS_DISABLED	0x00800000	/* IRQ was disabled by the spurious trap */
 #define IRQ_MOVE_PCNTXT		0x01000000	/* IRQ migration from process context */
 #define IRQ_AFFINITY_SET	0x02000000	/* IRQ affinity was set from userspace*/
+#define IRQ_SUSPENDED		0x04000000	/* IRQ has gone through suspend sequence */
 
 #ifdef CONFIG_IRQ_PER_CPU
 # define CHECK_IRQ_PER_CPU(var) ((var) & IRQ_PER_CPU)
Index: linux-2.6/kernel/irq/pm.c
===================================================================
--- /dev/null
+++ linux-2.6/kernel/irq/pm.c
@@ -0,0 +1,79 @@
+/*
+ * linux/kernel/irq/pm.c
+ *
+ * Copyright (C) 2009 Rafael J. Wysocki <rjw@sisk.pl>, Novell Inc.
+ *
+ * This file contains power management functions related to interrupts.
+ */
+
+#include <linux/irq.h>
+#include <linux/module.h>
+#include <linux/interrupt.h>
+
+#include "internals.h"
+
+/**
+ * suspend_device_irqs - disable all currently enabled interrupt lines
+ *
+ * During system-wide suspend or hibernation device interrupts need to be
+ * disabled at the chip level and this function is provided for this purpose.
+ * It disables all interrupt lines that are enabled at the moment and sets the
+ * IRQ_SUSPENDED flag for them.
+ */
+void suspend_device_irqs(void)
+{
+	struct irq_desc *desc;
+	int irq;
+
+	for_each_irq_desc(irq, desc) {
+		unsigned long flags;
+
+		spin_lock_irqsave(&desc->lock, flags);
+		__disable_irq(desc, irq, true);
+		spin_unlock_irqrestore(&desc->lock, flags);
+	}
+
+	for_each_irq_desc(irq, desc)
+		if (desc->status & IRQ_SUSPENDED)
+			synchronize_irq(irq);
+}
+EXPORT_SYMBOL_GPL(suspend_device_irqs);
+
+/**
+ * resume_device_irqs - enable interrupt lines disabled by suspend_device_irqs()
+ *
+ * Enable all interrupt lines previously disabled by suspend_device_irqs() that
+ * have the IRQ_SUSPENDED flag set.
+ */
+void resume_device_irqs(void)
+{
+	struct irq_desc *desc;
+	int irq;
+
+	for_each_irq_desc(irq, desc) {
+		unsigned long flags;
+
+		if (!(desc->status & IRQ_SUSPENDED))
+			continue;
+
+		spin_lock_irqsave(&desc->lock, flags);
+		__enable_irq(desc, irq, true);
+		spin_unlock_irqrestore(&desc->lock, flags);
+	}
+}
+EXPORT_SYMBOL_GPL(resume_device_irqs);
+
+/**
+ * check_wakeup_irqs - check if any wake-up interrupts are pending
+ */
+int check_wakeup_irqs(void)
+{
+	struct irq_desc *desc;
+	int irq;
+
+	for_each_irq_desc(irq, desc)
+		if ((desc->status & IRQ_WAKEUP) && (desc->status & IRQ_PENDING))
+			return -EBUSY;
+
+	return 0;
+}
Index: linux-2.6/kernel/irq/Makefile
===================================================================
--- linux-2.6.orig/kernel/irq/Makefile
+++ linux-2.6/kernel/irq/Makefile
@@ -4,3 +4,4 @@ obj-$(CONFIG_GENERIC_IRQ_PROBE) += autop
 obj-$(CONFIG_PROC_FS) += proc.o
 obj-$(CONFIG_GENERIC_PENDING_IRQ) += migration.o
 obj-$(CONFIG_NUMA_MIGRATE_IRQ_DESC) += numa_migrate.o
+obj-$(CONFIG_PM_SLEEP) += pm.o
Index: linux-2.6/kernel/irq/manage.c
===================================================================
--- linux-2.6.orig/kernel/irq/manage.c
+++ linux-2.6/kernel/irq/manage.c
@@ -162,6 +162,20 @@ static inline int do_irq_select_affinity
 }
 #endif
 
+void __disable_irq(struct irq_desc *desc, unsigned int irq, bool suspend)
+{
+	if (suspend) {
+		if (!desc->action || (desc->action->flags & IRQF_TIMER))
+			return;
+		desc->status |= IRQ_SUSPENDED;
+	}
+
+	if (!desc->depth++) {
+		desc->status |= IRQ_DISABLED;
+		desc->chip->disable(irq);
+	}
+}
+
 /**
  *	disable_irq_nosync - disable an irq without waiting
  *	@irq: Interrupt to disable
@@ -182,10 +196,7 @@ void disable_irq_nosync(unsigned int irq
 		return;
 
 	spin_lock_irqsave(&desc->lock, flags);
-	if (!desc->depth++) {
-		desc->status |= IRQ_DISABLED;
-		desc->chip->disable(irq);
-	}
+	__disable_irq(desc, irq, false);
 	spin_unlock_irqrestore(&desc->lock, flags);
 }
 EXPORT_SYMBOL(disable_irq_nosync);
@@ -215,15 +226,21 @@ void disable_irq(unsigned int irq)
 }
 EXPORT_SYMBOL(disable_irq);
 
-static void __enable_irq(struct irq_desc *desc, unsigned int irq)
+void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume)
 {
+	if (resume)
+		desc->status &= ~IRQ_SUSPENDED;
+
 	switch (desc->depth) {
 	case 0:
+ err_out:
 		WARN(1, KERN_WARNING "Unbalanced enable for IRQ %d\n", irq);
 		break;
 	case 1: {
 		unsigned int status = desc->status & ~IRQ_DISABLED;
 
+		if (desc->status & IRQ_SUSPENDED)
+			goto err_out;
 		/* Prevent probing on this irq: */
 		desc->status = status | IRQ_NOPROBE;
 		check_irq_resend(desc, irq);
@@ -253,7 +270,7 @@ void enable_irq(unsigned int irq)
 		return;
 
 	spin_lock_irqsave(&desc->lock, flags);
-	__enable_irq(desc, irq);
+	__enable_irq(desc, irq, false);
 	spin_unlock_irqrestore(&desc->lock, flags);
 }
 EXPORT_SYMBOL(enable_irq);
@@ -511,7 +528,7 @@ __setup_irq(unsigned int irq, struct irq
 	 */
 	if (shared && (desc->status & IRQ_SPURIOUS_DISABLED)) {
 		desc->status &= ~IRQ_SPURIOUS_DISABLED;
-		__enable_irq(desc, irq);
+		__enable_irq(desc, irq, false);
 	}
 
 	spin_unlock_irqrestore(&desc->lock, flags);
Index: linux-2.6/kernel/irq/internals.h
===================================================================
--- linux-2.6.orig/kernel/irq/internals.h
+++ linux-2.6/kernel/irq/internals.h
@@ -12,6 +12,8 @@ extern void compat_irq_chip_set_default_
 
 extern int __irq_set_trigger(struct irq_desc *desc, unsigned int irq,
 		unsigned long flags);
+extern void __disable_irq(struct irq_desc *desc, unsigned int irq, bool susp);
+extern void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume);
 
 extern struct lock_class_key irq_desc_lock_class;
 extern void init_kstat_irqs(struct irq_desc *desc, int cpu, int nr);

  reply	other threads:[~2009-03-14 11:37 UTC|newest]

Thread overview: 373+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-22 17:37 [RFC][PATCH 0/2] Rework disabling of interrupts during suspend-resume Rafael J. Wysocki
2009-02-22 17:37 ` Rafael J. Wysocki
2009-02-22 17:38 ` [RFC][PATCH 1/2] PM: Split up sysdev_[suspend|resume] from device_power_[down|up] Rafael J. Wysocki
2009-02-22 17:38 ` Rafael J. Wysocki
2009-02-22 20:56   ` Adrian Bunk
2009-02-22 21:07     ` Linus Torvalds
2009-02-22 21:07       ` Linus Torvalds
2009-02-22 21:12       ` Ingo Molnar
2009-02-22 21:12         ` Ingo Molnar
2009-02-22 22:42       ` Adrian Bunk
2009-02-22 22:42       ` Adrian Bunk
2009-02-22 20:56   ` Adrian Bunk
2009-03-05 16:54   ` Pavel Machek
2009-03-05 16:54   ` Pavel Machek
2009-02-22 17:39 ` [RFC][PATCH 2/2] PM: Rework handling of interrupts during suspend-resume Rafael J. Wysocki
2009-02-22 18:01   ` Linus Torvalds
2009-02-22 22:42     ` Rafael J. Wysocki
2009-02-22 23:48       ` Rafael J. Wysocki
2009-02-23  0:05         ` Linus Torvalds
2009-02-23  0:05         ` Linus Torvalds
2009-02-23  1:23           ` Linus Torvalds
2009-02-23  1:23             ` Linus Torvalds
2009-02-23 10:52             ` Rafael J. Wysocki
2009-02-23  3:04         ` Eric W. Biederman
2009-02-23  8:44           ` Ingo Molnar
2009-02-23  8:44           ` Ingo Molnar
2009-02-23  9:22             ` Eric W. Biederman
2009-02-23  9:22             ` Eric W. Biederman
2009-02-23  9:44               ` Ingo Molnar
2009-02-23 10:42                 ` Eric W. Biederman
2009-02-23 11:03                   ` Rafael J. Wysocki
2009-02-23 15:28                     ` Eric W. Biederman
2009-02-23 15:28                     ` Eric W. Biederman
2009-02-23 21:39                       ` Rafael J. Wysocki
2009-02-23 21:39                       ` Rafael J. Wysocki
2009-02-24  3:30                         ` Eric W. Biederman
2009-02-24 22:42                           ` Rafael J. Wysocki
2009-02-24 22:51                             ` Linus Torvalds
2009-02-24 22:51                             ` Linus Torvalds
2009-02-24 23:07                               ` Rafael J. Wysocki
2009-02-24 23:09                                 ` Ingo Molnar
2009-02-24 23:29                                   ` Rafael J. Wysocki
2009-02-24 23:29                                   ` Rafael J. Wysocki
2009-02-25 13:23                                     ` Ingo Molnar
2009-02-25 13:23                                     ` Ingo Molnar
2009-02-26  1:17                                     ` Arve Hjønnevåg
2009-02-26  1:27                                       ` Linus Torvalds
2009-02-26  1:27                                       ` Linus Torvalds
2009-02-26  2:13                                         ` Arve Hjønnevåg
2009-02-26  2:51                                           ` Linus Torvalds
2009-02-26  3:00                                             ` Ingo Molnar
2009-02-26  3:00                                             ` Ingo Molnar
2009-02-26  3:31                                               ` Arve Hjønnevåg
2009-02-26  3:31                                               ` Arve Hjønnevåg
2009-02-26  3:37                                                 ` Linus Torvalds
2009-02-26  3:37                                                   ` Linus Torvalds
2009-02-26  3:50                                                   ` Arve Hjønnevåg
2009-02-26  3:50                                                   ` Arve Hjønnevåg
2009-02-26  3:57                                                     ` Linus Torvalds
2009-02-26  3:57                                                     ` Linus Torvalds
2009-02-26  4:13                                                       ` Arve Hjønnevåg
2009-02-26  4:13                                                       ` Arve Hjønnevåg
2009-02-26  4:20                                                         ` Eric W. Biederman
2009-02-26  4:20                                                         ` Eric W. Biederman
2009-02-26  4:24                                                           ` Arve Hjønnevåg
2009-02-26  4:24                                                           ` Arve Hjønnevåg
2009-02-26  2:51                                           ` Linus Torvalds
2009-02-26  2:13                                         ` Arve Hjønnevåg
2009-02-26  9:50                                       ` Rafael J. Wysocki
2009-02-26 20:34                                         ` Arve Hjønnevåg
2009-02-26 20:57                                           ` Benjamin Herrenschmidt
2009-02-26 20:57                                             ` Benjamin Herrenschmidt
2009-02-26 21:20                                             ` Arve Hjønnevåg
2009-02-26 21:49                                               ` Benjamin Herrenschmidt
2009-02-26 21:49                                               ` Benjamin Herrenschmidt
2009-02-26 21:20                                             ` Arve Hjønnevåg
2009-02-26 21:58                                           ` Rafael J. Wysocki
2009-02-26 22:10                                             ` Linus Torvalds
2009-02-26 22:10                                             ` Linus Torvalds
2009-02-26 22:30                                               ` Arve Hjønnevåg
2009-02-26 22:30                                               ` Arve Hjønnevåg
2009-02-26 23:10                                                 ` Rafael J. Wysocki
2009-02-26 23:10                                                 ` Rafael J. Wysocki
2009-02-27  0:00                                                   ` Arve Hjønnevåg
2009-02-27  0:27                                                     ` Linus Torvalds
2009-02-27  3:20                                                       ` [linux-pm] " Alan Stern
2009-02-27  4:43                                                         ` Linus Torvalds
2009-02-27  4:43                                                           ` Linus Torvalds
2009-02-27 14:59                                                           ` [linux-pm] " Alan Stern
2009-02-27 20:30                                                             ` Linus Torvalds
2009-02-27 20:30                                                             ` [linux-pm] " Linus Torvalds
2009-02-28  3:54                                                               ` Arve Hjønnevåg
2009-02-28  3:54                                                               ` [linux-pm] " Arve Hjønnevåg
2009-02-28 10:06                                                                 ` Rafael J. Wysocki
2009-02-28 10:06                                                                 ` [linux-pm] " Rafael J. Wysocki
2009-02-28 17:03                                                                   ` Linus Torvalds
2009-02-28 17:03                                                                     ` Linus Torvalds
2009-02-28 22:15                                                                   ` [linux-pm] " Arve Hjønnevåg
2009-02-28 22:15                                                                   ` Arve Hjønnevåg
2009-02-27 14:59                                                           ` Alan Stern
2009-02-27  3:20                                                       ` Alan Stern
2009-02-27  0:27                                                     ` Linus Torvalds
2009-02-27  0:00                                                   ` Arve Hjønnevåg
2009-02-26 22:30                                               ` Rafael J. Wysocki
2009-02-26 22:30                                               ` Rafael J. Wysocki
2009-02-26 21:58                                           ` Rafael J. Wysocki
2009-02-26 20:34                                         ` Arve Hjønnevåg
2009-02-26  9:50                                       ` Rafael J. Wysocki
2009-02-26  1:17                                     ` Arve Hjønnevåg
2009-02-24 23:09                                 ` Ingo Molnar
2009-02-24 23:07                               ` Rafael J. Wysocki
2009-02-25  4:16                               ` Eric W. Biederman
2009-02-25  4:26                                 ` Linus Torvalds
2009-02-25  4:26                                   ` Linus Torvalds
2009-02-25  4:59                                   ` Eric W. Biederman
2009-02-25  4:59                                   ` Eric W. Biederman
2009-02-25  4:16                               ` Eric W. Biederman
2009-02-25 15:32                             ` Alan Stern
2009-02-25 15:32                             ` [linux-pm] " Alan Stern
2009-02-25 16:19                               ` Linus Torvalds
2009-02-25 16:19                                 ` Linus Torvalds
2009-02-24 22:42                           ` Rafael J. Wysocki
2009-02-24  3:30                         ` Eric W. Biederman
2009-02-23 11:03                   ` Rafael J. Wysocki
2009-02-23 11:04                   ` Ingo Molnar
2009-02-23 14:45                     ` Rafael J. Wysocki
2009-02-23 15:06                       ` Ingo Molnar
2009-02-23 15:06                         ` Ingo Molnar
2009-02-23 21:59                         ` Rafael J. Wysocki
2009-02-23 21:59                           ` Rafael J. Wysocki
2009-02-23 14:45                     ` Rafael J. Wysocki
2009-02-23 11:04                   ` Ingo Molnar
2009-02-23 10:42                 ` Eric W. Biederman
2009-02-23  9:44               ` Ingo Molnar
2009-02-23 10:13               ` Benjamin Herrenschmidt
2009-02-23 10:13               ` Benjamin Herrenschmidt
2009-02-23  3:04         ` Eric W. Biederman
2009-02-23  8:36         ` Ingo Molnar
2009-02-23  8:36         ` Ingo Molnar
2009-02-23 11:29           ` Rafael J. Wysocki
2009-02-23 12:28             ` Ingo Molnar
2009-02-23 14:48               ` Rafael J. Wysocki
2009-02-23 14:48                 ` Rafael J. Wysocki
2009-02-23 20:49               ` Benjamin Herrenschmidt
2009-02-23 20:49               ` Benjamin Herrenschmidt
2009-02-23 12:28             ` Ingo Molnar
2009-02-23 12:45             ` Ingo Molnar
2009-02-23 15:07               ` Rafael J. Wysocki
2009-02-23 15:07               ` Rafael J. Wysocki
2009-02-23 12:45             ` Ingo Molnar
2009-02-23 15:52             ` Johannes Berg
2009-02-23 15:52             ` Johannes Berg
2009-02-23 17:16             ` Ingo Molnar
2009-02-23 17:16             ` Ingo Molnar
2009-02-23 17:28               ` Linus Torvalds
2009-02-23 17:28                 ` Linus Torvalds
2009-02-23 22:11                 ` Rafael J. Wysocki
2009-02-23 22:11                 ` Rafael J. Wysocki
2009-02-23 11:29           ` Rafael J. Wysocki
2009-02-22 23:48       ` Rafael J. Wysocki
2009-02-22 22:42     ` Rafael J. Wysocki
2009-02-22 18:01   ` Linus Torvalds
2009-02-23 22:11   ` Arve Hjønnevåg
2009-02-23 22:11   ` Arve Hjønnevåg
2009-02-23 22:23     ` Rafael J. Wysocki
2009-02-23 22:23       ` Rafael J. Wysocki
2009-02-23 22:44       ` Arve Hjønnevåg
2009-02-23 22:44       ` Arve Hjønnevåg
2009-02-22 17:39 ` Rafael J. Wysocki
2009-02-22 18:13 ` [RFC][PATCH 0/2] Rework disabling " Linus Torvalds
2009-02-22 18:13   ` Linus Torvalds
2009-02-22 18:18   ` Ingo Molnar
2009-02-22 18:25     ` Linus Torvalds
2009-02-22 18:25       ` Linus Torvalds
2009-02-22 18:35       ` Linus Torvalds
2009-02-22 18:35         ` Linus Torvalds
2009-02-22 18:18   ` Ingo Molnar
2009-02-22 22:37 ` Eric W. Biederman
2009-02-22 22:37 ` Eric W. Biederman
2009-02-22 22:56   ` Benjamin Herrenschmidt
2009-02-22 22:56   ` Benjamin Herrenschmidt
2009-02-22 23:02   ` Linus Torvalds
2009-02-22 23:02     ` Linus Torvalds
2009-03-01 22:21 ` [RFC][PATCH 0/4] " Rafael J. Wysocki
2009-03-01 22:21 ` Rafael J. Wysocki
2009-03-01 22:24   ` [RFC][PATCH 1/4] PM: Rework handling of interrupts during suspend-resume (rev. 4) Rafael J. Wysocki
2009-03-02 23:01     ` Arve Hjønnevåg
2009-03-02 23:01     ` Arve Hjønnevåg
2009-03-02 23:13       ` Rafael J. Wysocki
2009-03-02 23:18         ` Arve Hjønnevåg
2009-03-02 23:18         ` Arve Hjønnevåg
2009-03-02 23:27           ` Rafael J. Wysocki
2009-03-02 23:27           ` Rafael J. Wysocki
2009-03-03 22:56             ` Arve Hjønnevåg
2009-03-04 22:03               ` [Update, rev. 5] " Rafael J. Wysocki
2009-03-05 10:35                 ` Ingo Molnar
2009-03-05 10:35                 ` Ingo Molnar
2009-03-04 22:03               ` Rafael J. Wysocki
2009-03-03 22:56             ` Arve Hjønnevåg
2009-03-02 23:32           ` Linus Torvalds
2009-03-02 23:32             ` Linus Torvalds
2009-03-02 23:35             ` Linus Torvalds
2009-03-02 23:35               ` Linus Torvalds
2009-03-03  0:08               ` Arve Hjønnevåg
2009-03-03  0:08               ` Arve Hjønnevåg
2009-03-03  8:41                 ` Arve Hjønnevåg
2009-03-03  8:41                 ` Arve Hjønnevåg
2009-03-02 23:13       ` Rafael J. Wysocki
2009-03-01 22:24   ` Rafael J. Wysocki
2009-03-01 22:25   ` [RFC][PATCH 2/4] PM: Change suspend code ordering Rafael J. Wysocki
2009-03-01 22:25   ` Rafael J. Wysocki
2009-03-02 20:48     ` Linus Torvalds
2009-03-02 20:48       ` Linus Torvalds
2009-03-02 22:02       ` Rafael J. Wysocki
2009-03-02 22:02       ` Rafael J. Wysocki
2009-03-01 22:26   ` [RFC][PATCH 3/4] PM: Change hibernation " Rafael J. Wysocki
2009-03-01 22:26   ` Rafael J. Wysocki
2009-03-01 22:27   ` [RFC][PATCH 4/4] kexec: Change kexec jump " Rafael J. Wysocki
2009-03-01 22:27   ` Rafael J. Wysocki
2009-03-05 23:44   ` [RFC][PATCH 0/4] Rework disabling of interrupts during suspend-resume Linus Torvalds
2009-03-05 23:44     ` Linus Torvalds
2009-03-06  6:47     ` Sitsofe Wheeler
2009-03-06  6:47     ` Sitsofe Wheeler
2009-03-06 10:19     ` Rafael J. Wysocki
2009-03-06 10:19     ` Rafael J. Wysocki
2009-03-07 10:19 ` [RFC][PATCH][0/8] PM: Rework suspend-resume ordering to avoid problems with shared interrupts Rafael J. Wysocki
2009-03-07 10:19 ` Rafael J. Wysocki
2009-03-07 10:20   ` [RFC][PATCH][1/8] PM: Rework handling of interrupts during suspend-resume (rev. 5) Rafael J. Wysocki
2009-03-07 10:20     ` Rafael J. Wysocki
2009-03-07 16:51     ` [linux-pm] " Alan Stern
2009-03-07 17:56       ` Rafael J. Wysocki
2009-03-07 17:56       ` [linux-pm] " Rafael J. Wysocki
2009-03-08  3:53         ` Alan Stern
2009-03-08  3:53         ` [linux-pm] " Alan Stern
2009-03-08 10:00           ` Rafael J. Wysocki
2009-03-08 10:00           ` [linux-pm] " Rafael J. Wysocki
2009-03-08 12:37             ` Alan Stern
2009-03-08 12:37             ` [linux-pm] " Alan Stern
2009-03-08 17:20           ` Linus Torvalds
2009-03-08 20:40             ` Alan Stern
2009-03-08 20:40             ` [linux-pm] " Alan Stern
2009-03-08 21:37               ` Rafael J. Wysocki
2009-03-08 21:37               ` Rafael J. Wysocki
2009-03-09 14:59               ` Linus Torvalds
2009-03-09 14:59               ` [linux-pm] " Linus Torvalds
2009-03-09 15:13                 ` Alan Stern
2009-03-09 15:40                   ` Linus Torvalds
2009-03-09 15:40                   ` [linux-pm] " Linus Torvalds
2009-03-09 15:13                 ` Alan Stern
2009-03-08 17:20           ` Linus Torvalds
2009-03-07 16:51     ` Alan Stern
2009-03-07 10:21   ` [RFC][PATCH][2/8] PM: Change suspend code ordering Rafael J. Wysocki
2009-03-07 10:21   ` Rafael J. Wysocki
2009-03-07 10:22   ` [RFC][PATCH][3/8] PM: Change hibernation " Rafael J. Wysocki
2009-03-07 10:22   ` Rafael J. Wysocki
2009-03-07 10:23   ` [RFC][PATCH][4/8] kexec: Change kexec jump " Rafael J. Wysocki
2009-03-07 10:23   ` Rafael J. Wysocki
2009-03-07 10:24   ` [RFC][PATCH][5/8] PCI PM: Consistently use variable name "error" for pm call return values Rafael J. Wysocki
2009-03-07 10:24   ` Rafael J. Wysocki
2009-03-07 10:25   ` [RFC][PATCH][6/8] PCI PM: Use pci_set_power_state during early resume Rafael J. Wysocki
2009-03-07 10:25   ` Rafael J. Wysocki
2009-03-07 10:26   ` [RFC][PATCH][7/8] PCI PM: Move pci_restore_standard_config to pci-driver.c Rafael J. Wysocki
2009-03-07 10:26   ` Rafael J. Wysocki
2009-03-07 10:27   ` [RFC][PATCH][8/8] PCI PM: Put devices into low power states during late suspend Rafael J. Wysocki
2009-03-07 10:27   ` Rafael J. Wysocki
2009-03-08 19:28   ` [RFC][PATCH][0/8] PM: Rework suspend-resume ordering to avoid problems with shared interrupts Frans Pop
2009-03-08 20:50     ` Rafael J. Wysocki
2009-03-08 20:50     ` Rafael J. Wysocki
2009-03-14  8:44       ` Frans Pop
2009-03-14 11:59         ` Rafael J. Wysocki
2009-03-14 14:11           ` Frans Pop
2009-03-14 14:11           ` Frans Pop
2009-03-14 22:31             ` Rafael J. Wysocki
2009-03-14 22:31             ` Rafael J. Wysocki
2009-03-14 11:59         ` Rafael J. Wysocki
2009-03-14  8:44       ` Frans Pop
2009-03-08 19:28   ` Frans Pop
2009-03-11  9:30 ` [PATCH 0/10] PM: Rework suspend-resume ordering to avoid problems with shared interrupts (updated) Rafael J. Wysocki
2009-03-11  9:30 ` Rafael J. Wysocki
2009-03-11  9:36   ` [PATCH 1/10] PM: Rework handling of interrupts during suspend-resume (rev. 5) Rafael J. Wysocki
2009-03-11  9:36   ` Rafael J. Wysocki
2009-03-11 10:33     ` Thomas Gleixner
2009-03-11 10:33     ` Thomas Gleixner
2009-03-11 20:59       ` Rafael J. Wysocki
2009-03-11 21:42         ` Thomas Gleixner
2009-03-11 21:42         ` Thomas Gleixner
2009-03-11 22:01           ` Rafael J. Wysocki
2009-03-11 22:01             ` Rafael J. Wysocki
2009-03-11 22:45           ` Thomas Gleixner
2009-03-12 13:36             ` Rafael J. Wysocki
2009-03-12 21:43               ` [update, rev. 6] " Rafael J. Wysocki
2009-03-12 21:43               ` Rafael J. Wysocki
2009-03-13  0:39                 ` Ingo Molnar
2009-03-13  0:39                 ` Ingo Molnar
2009-03-13 17:07                   ` Rafael J. Wysocki
2009-03-13 17:07                     ` Rafael J. Wysocki
2009-03-13  7:15                 ` Arve Hjønnevåg
2009-03-13  7:15                   ` Arve Hjønnevåg
2009-03-13 16:53                   ` Rafael J. Wysocki
2009-03-13 16:53                   ` Rafael J. Wysocki
2009-03-13 19:55                 ` Thomas Gleixner
2009-03-13 19:55                 ` Thomas Gleixner
2009-03-13 21:56                   ` Rafael J. Wysocki
2009-03-13 21:56                   ` Rafael J. Wysocki
2009-03-14  7:31                     ` Thomas Gleixner
2009-03-14  7:31                     ` Thomas Gleixner
2009-03-14 10:01                       ` Rafael J. Wysocki
2009-03-14 10:01                       ` Rafael J. Wysocki
2009-03-14  0:04                   ` Rafael J. Wysocki
2009-03-14  0:04                   ` Rafael J. Wysocki
2009-03-12 13:36             ` Rafael J. Wysocki
2009-03-11 22:45           ` Thomas Gleixner
2009-03-11 20:59       ` Rafael J. Wysocki
2009-03-11 21:15       ` Rafael J. Wysocki
2009-03-11 21:15       ` Rafael J. Wysocki
2009-03-11 21:35         ` Thomas Gleixner
2009-03-11 21:35         ` Thomas Gleixner
2009-03-11 21:50           ` Rafael J. Wysocki
2009-03-11 21:50           ` Rafael J. Wysocki
2009-03-11 21:53             ` Thomas Gleixner
2009-03-11 21:53             ` Thomas Gleixner
2009-03-11 22:01               ` Linus Torvalds
2009-03-11 22:01                 ` Linus Torvalds
2009-03-11 22:13                 ` Rafael J. Wysocki
2009-03-11 22:13                 ` Rafael J. Wysocki
2009-03-11 22:25                 ` Thomas Gleixner
2009-03-11 22:25                 ` Thomas Gleixner
2009-03-11 22:07               ` Rafael J. Wysocki
2009-03-11 22:07               ` Rafael J. Wysocki
2009-03-11  9:37   ` [PATCH 2/10] PM: Change suspend code ordering Rafael J. Wysocki
2009-03-11  9:37   ` Rafael J. Wysocki
2009-03-11  9:38   ` [PATCH 3/10] PM: Change hibernation " Rafael J. Wysocki
2009-03-11  9:38   ` Rafael J. Wysocki
2009-03-11  9:39   ` [PATCH 4/10] kexec: Change kexec jump " Rafael J. Wysocki
2009-03-11  9:39     ` Rafael J. Wysocki
2009-03-11  9:41   ` [PATCH 5/10] PCI PM: Consistently use variable name "error" for pm call return values Rafael J. Wysocki
2009-03-11  9:41   ` Rafael J. Wysocki
2009-03-11  9:42   ` [PATCH 6/10] PCI PM: Use pci_set_power_state during early resume Rafael J. Wysocki
2009-03-11  9:42   ` Rafael J. Wysocki
2009-03-11  9:47   ` [PATCH 7/10] PCI PM: Move pci_restore_standard_config to pci-driver.c Rafael J. Wysocki
2009-03-11  9:47   ` Rafael J. Wysocki
2009-03-11  9:48   ` [PATCH 8/10] PCI PM: Put devices into low power states during late suspend (rev. 2) Rafael J. Wysocki
2009-03-11  9:48   ` Rafael J. Wysocki
2009-03-11  9:55   ` [PATCH 9/10] PCI PM: Make pci_set_power_state() handle devices with no PM support Rafael J. Wysocki
2009-03-11  9:55   ` Rafael J. Wysocki
2009-03-11  9:56   ` [PATCH 10/10] PCI PM: Restore config spaces of all devices during early resume Rafael J. Wysocki
2009-03-11  9:56   ` Rafael J. Wysocki
2009-03-14 11:24 ` [PATCH 0/11] PM: Rework suspend-resume ordering to avoid problems with shared interrupts (updated 2x) Rafael J. Wysocki
2009-03-14 11:26   ` Rafael J. Wysocki [this message]
2009-03-14 11:26   ` [PATCH 1/11] PM: Introduce functions for suspending and resuming device interrupts Rafael J. Wysocki
2009-03-14 11:27   ` [PATCH 2/11] PM: Rework handling of interrupts during suspend-resume Rafael J. Wysocki
2009-03-14 11:27   ` Rafael J. Wysocki
2009-03-14 11:28   ` [PATCH 3/11] PM: Change suspend code ordering Rafael J. Wysocki
2009-03-14 11:28   ` Rafael J. Wysocki
2009-03-14 11:28   ` [PATCH 4/11] PM: Change hibernation " Rafael J. Wysocki
2009-03-14 11:28   ` Rafael J. Wysocki
2009-03-14 11:29   ` [PATCH 5/11] kexec: Change kexec jump " Rafael J. Wysocki
2009-03-14 11:29   ` Rafael J. Wysocki
2009-03-14 11:30   ` [PATCH 6/11] PCI PM: Consistently use variable name "error" for pm call return values Rafael J. Wysocki
2009-03-14 11:30   ` Rafael J. Wysocki
2009-03-14 11:31   ` [PATCH 7/11] PCI PM: Use pci_set_power_state during early resume Rafael J. Wysocki
2009-03-14 11:31   ` Rafael J. Wysocki
2009-03-14 11:32   ` [PATCH 8/11] PCI PM: Move pci_restore_standard_config to pci-driver.c Rafael J. Wysocki
2009-03-14 11:32   ` Rafael J. Wysocki
2009-03-14 11:32   ` [PATCH 9/11] PCI PM: Put devices into low power states during late suspend (rev. 2) Rafael J. Wysocki
2009-03-14 11:32   ` Rafael J. Wysocki
2009-03-14 11:33   ` [PATCH 10/11] PCI PM: Make pci_set_power_state() handle devices with no PM support Rafael J. Wysocki
2009-03-14 11:33   ` Rafael J. Wysocki
2009-03-14 11:34   ` [PATCH 11/11] PCI PM: Restore config spaces of all devices during early resume Rafael J. Wysocki
2009-03-14 11:34   ` Rafael J. Wysocki
2009-03-14 11:43   ` [PATCH 0/11] PM: Rework suspend-resume ordering to avoid problems with shared interrupts (updated 2x) Ingo Molnar
2009-03-14 11:43   ` Ingo Molnar
2009-03-14 11:24 ` Rafael J. Wysocki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200903141226.02156.rjw@sisk.pl \
    --to=rjw@sisk.pl \
    --cc=arve@android.com \
    --cc=benh@kernel.crashing.org \
    --cc=ebiederm@xmission.com \
    --cc=jbarnes@virtuousgeek.org \
    --cc=jeremy@goop.org \
    --cc=lenb@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.